本文詳細講解如何在AWS EKS中配置節點組(Node Group)和Pod的自動擴展,優化資源利用率并保障應用高可用。
一、準備工作
-
工具安裝
-
安裝并配置AWS CLI
-
安裝eksctl(EKS管理工具)
-
安裝kubectl(Kubernetes命令行工具)
-
-
配置AWS憑證
aws configure
# 輸入AWS Access Key、Secret Key、默認區域(如us-west-2)?
二、創建EKS集群
方法1:使用eksctl快速創建
# cluster-config.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
? name: my-eks-cluster
? region: us-west-2
nodeGroups:
? - name: ng-1
? ? minSize: 2
? ? maxSize: 5
? ? desiredCapacity: 2
? ? instancesDistribution:
? ? ? instanceTypes: ["t3.medium"]
? ? ? onDemandBaseCapacity: 0
? ? ? spotAllocationStrategy: "capacity-optimized"?
執行命令:?
eksctl create cluster -f cluster-config.yaml?
方法2:通過AWS管理控制臺創建
導航至EKS服務,按向導步驟配置集群和節點組,啟用自動擴展選項。
三、配置節點自動擴展(Cluster Autoscaler)
-
部署Cluster Autoscaler
kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml?
修改部署參數
編輯YAML文件,替換以下內容:?
- --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-eks-cluster
- --balance-similar-node-groups
- --skip-nodes-with-system-pods=false?
驗證日志?
kubectl logs -f deployment/cluster-autoscaler -n kube-system
# 確認無報錯且檢測到ASG?
四、配置Pod水平擴展(HPA)
-
部署示例應用
kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example
kubectl expose deployment php-apache --port=80 --target-port=8080?
創建HPA策略?
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10?
壓力測試?
kubectl run -i --tty load-generator --image=busybox -- /bin/sh -c "while true; do wget -q -O- http://php-apache; done"
# 觀察HPA擴容情況?
?
五、驗證與優化
-
檢查擴展狀態
kubectl get hpa
kubectl get nodes -w?
-
成本優化建議
-
使用Spot實例降低節點成本
-
設置合理的
minSize/maxSize
防止過度擴容 -
通過CloudWatch監控資源使用情況
-
六、常見問題
-
節點未加入集群:檢查節點IAM角色是否包含
AmazonEKSWorkerNodePolicy
等權限。 -
Autoscaler不觸發:確認資源請求(requests/limits)是否在Pod中正確定義。
-
區域限制:確保所有操作在同一個AWS區域執行。
結語:通過AWS EKS的自動擴展能力,企業可輕松應對流量波動,平衡性能與成本。立即體驗AWS的托管Kubernetes服務,享受自動化運維的強大優勢!
了解更多:可咨詢AWS合作伙伴網絡或本文作者
?
?
?
?
?
?
?