建立和管理叢集 - Eksctl 使用者指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立和管理叢集

本主題說明如何使用 Eksctl 建立和刪除 EKS 叢集。您可以使用 CLI 命令或透過建立叢集組態 YAML 檔案來建立叢集。

建立簡單的叢集

使用下列命令建立簡單的叢集:

eksctl create cluster

這將在預設區域中建立 EKS 叢集 (如您的 AWS CLI 組態所指定),其中包含一個包含兩個 m5.large 節點的受管節點群組。

eksctl 現在預設會在不使用組態檔案時建立受管節點群組。若要建立自我管理節點群組,請傳遞--managed=falseeksctl create clustereksctl 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 頁面。