本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立和管理叢集
本主題說明如何使用 Eksctl 建立和刪除 EKS 叢集。您可以使用 CLI 命令或透過建立叢集組態 YAML 檔案來建立叢集。
建立簡單的叢集
使用下列命令建立簡單的叢集:
eksctl create cluster
這將在預設區域中建立 EKS 叢集 (如您的 AWS CLI 組態所指定),其中包含一個包含兩個 m5.large 節點的受管節點群組。
eksctl 現在預設會在不使用組態檔案時建立受管節點群組。若要建立自我管理節點群組,請傳遞--managed=false至 eksctl create cluster或 eksctl create nodegroup。
考量事項
-
在 中建立叢集時
us-east-1,您可能會遇到UnsupportedAvailabilityZoneException。如果發生這種情況,請複製建議的區域並傳遞--zones旗標,例如:eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d。此問題可能發生在其他區域,但較不常見。在大多數情況下,您不需要使用--zone旗標。
使用組態檔案建立叢集
您可以使用組態檔案來建立叢集,而不是旗標。
首先,建立cluster.yaml檔案:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: basic-cluster region: eu-north-1 nodeGroups: - name: ng-1 instanceType: m5.large desiredCapacity: 10 volumeSize: 80 ssh: allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key - name: ng-2 instanceType: m5.xlarge desiredCapacity: 2 volumeSize: 100 ssh: publicKeyPath: ~/.ssh/ec2_id_rsa.pub
接著,執行此命令:
eksctl create cluster -f cluster.yaml
這將如所述建立叢集。
如果您需要使用現有的 VPC,您可以使用如下的組態檔案:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-in-existing-vpc region: eu-north-1 vpc: subnets: private: eu-north-1a: { id: subnet-0ff156e0c4a6d300c } eu-north-1b: { id: subnet-0549cdab573695c03 } eu-north-1c: { id: subnet-0426fb4a607393184 } nodeGroups: - name: ng-1-workers labels: { role: workers } instanceType: m5.xlarge desiredCapacity: 10 privateNetworking: true - name: ng-2-builders labels: { role: builders } instanceType: m5.2xlarge desiredCapacity: 2 privateNetworking: true iam: withAddonPolicies: imageBuilder: true
叢集名稱或節點群組名稱只能包含英數字元 (區分大小寫) 和連字號。它必須以字母字元開頭,且不得超過 128 個字元,否則您將會收到驗證錯誤。如需詳細資訊,請參閱 AWS CLoudFormation 使用者指南中的從 CloudFormation 主控台建立堆疊。 CLoudFormation
更新新叢集的 kubeconfig
建立叢集之後,適當的 kubernetes 組態會新增至您的 kubeconfig 檔案。也就是您在環境變數中設定的檔案,KUBECONFIG或~/.kube/config預設為 。您可以使用 --kubeconfig旗標覆寫 kubeconfig 檔案的路徑。
可變更 kubeconfig 檔案寫入方式的其他旗標:
| 標記 | type | use | 預設值 |
|---|---|---|---|
|
--kubeconfig |
string |
寫入 kubeconfig 的路徑 (與 --auto-kubeconfig 不相容) |
$KUBECONFIG 或 ~/.kube/config |
|
--set-kubeconfig-context |
bool |
如果為 true,則會在 kubeconfig 中設定目前內容;如果已設定內容,則會覆寫它 |
true |
|
--auto-kubeconfig |
bool |
依叢集名稱儲存 kubeconfig 檔案 |
true |
|
--write-kubeconfig |
bool |
kubeconfig 的切換寫入 |
true |
刪除叢集
若要刪除此叢集,請執行:
eksctl delete cluster -f cluster.yaml
警告
使用 --wait旗標搭配刪除操作,以確保正確報告刪除錯誤。
如果沒有 --wait旗標,eksctl 只會對叢集的 CloudFormation 堆疊發出刪除操作,而不會等待刪除。在某些情況下,使用叢集或其 VPC 的 AWS 資源可能會導致叢集刪除失敗。如果您的刪除失敗或忘記等待標記,您可能必須前往 CloudFormation GUI 並從該處刪除 eks 堆疊。
警告
PDB 政策可能會在叢集刪除期間封鎖節點移除。
刪除具有節點群組的叢集時,Pod 中斷預算 (PDB) 政策可以防止節點成功移除。例如,aws-ebs-csi-driver已安裝 的叢集通常有兩個具有 PDB 政策的 Pod,一次只允許一個 Pod 無法使用,使得另一個 Pod 在刪除期間無法清除。若要在這些案例中成功刪除叢集,請使用 disable-nodegroup-eviction旗標略過 PDB 政策檢查:
eksctl delete cluster -f cluster.yaml --disable-nodegroup-eviction
如需更多範例組態檔案,請參閱 eksctl GitHub 儲存庫中的 examples/
乾執行
試執行功能可產生 ClusterConfig 檔案,略過叢集建立並輸出代表所提供 CLI 選項的 ClusterConfig 檔案,並包含 eksctl 設定的預設值。
如需詳細資訊,請參閱 Dry Run 頁面。