在開始建置我們第一個CLUSTER 之前,先來一些開胃小菜,簡單介紹一下k8S 跟 eks。
Kubernetes (K8s) 是一個開源的容器編排平台,用於自動化部署、擴展和管理容器化應用程式。
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: my-app
image: nginx:1.21
ports:
- containerPort: 80
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Amazon Elastic Kubernetes Service (EKS) 是 AWS 提供的託管 Kubernetes 服務,讓你能夠在 AWS 上輕鬆運行 Kubernetes,無需安裝、操作和維護自己的 Kubernetes 控制平面。
EKS Auto Mode 是 AWS 在 2024 年推出的全新功能,提供完全託管的 Kubernetes 體驗,進一步簡化集群管理。
特性 | 傳統 EKS | EKS Auto Mode |
---|---|---|
節點管理 | 手動或託管節點組 | 完全自動化 |
網路配置 | 需要手動配置 | 自動配置 |
擴展管理 | 需要配置 Cluster Autoscaler | 內建智能擴展 |
成本優化 | 手動選擇實例類型 | 自動優化 |
安全更新 | 需要手動管理 | 自動應用 |
# EKS Auto Mode 集群配置
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-auto-cluster
region: us-west-2
# 啟用 Auto Mode
autoMode:
enabled: true
# 基本配置
kubernetes:
version: "1.28"
# 自動配置的附加組件
addons:
- name: vpc-cni
version: latest
- name: coredns
version: latest
- name: kube-proxy
version: latest
# 微服務部署示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
spec:
replicas: 3
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: [your-registry]/user-service:v1.0
ports:
- containerPort: 8080
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: app-config
key: database-host
# Prometheus 監控配置
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
data:
prometheus.yml: |
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
# Horizontal Pod Autoscaler
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
EKS Auto Mode 的推出標誌著 Kubernetes 管理進入了一個新的簡化時代,讓開發團隊能夠更專注於業務邏輯的實現,而不是基礎設施的管理。