如何檢查、擴展、刪除或耗盡 Amazon EKS 中的工作節點?
我使用 eksctl 或 AWS 管理主控台啟動 Amazon Elastic Kubernetes Service (Amazon EKS) 工作節點。現在我想檢查、擴展、耗盡或刪除我的工作節點。
簡短描述
根據您的需求完成相應區段中的步驟:
- 檢查您的工作節點
- 擴展您的工作節點
- 耗盡您的工作節點
- 刪除您的工作節點
解決方案
檢查您的工作節點
若要列出註冊到 Amazon EKS 控制平面的工作節點,請執行下列命令:
kubectl get nodes -o wide
輸出會傳回工作節點的名稱、Kubernetes 版本、作業系統和 IP 地址。
若要取得單一工作節點的詳細資訊,請執行以下命令:
kubectl describe node/node_name
注意: 使用您的值取代 node_name。例如:ip-XX-XX-XX-XX.us-east-1.compute.internal
輸出會顯示工作節點的相關詳細資訊,包括標籤、污點、系統資訊和狀態。
擴展您的工作節點
注意: 如果您的節點群組顯示在 Amazon EKS 主控台中,請使用受管節點群組。否則,請使用未受管的節點群組。
(選項 1)若要使用 eksctl 擴展您的受管或未受管的工作節點,請執行以下命令:
eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName
注意: 使用您的值取代 clusterName、desiredCount 和 nodegroupName。
-或-
(選項 2) 若要在不使用 eksctl 的情況下擴展您的受管工作節點,請完成更新受管節點群組的「若要編輯節點群組組態」一節中的步驟。
-或-
(選項 3) 若要使用 AWS CloudFormation 擴展未受管的工作節點,請完成以下步驟:
-
在您的 CloudFormation 堆疊中修改 NodeAutoScalingGroupDesiredCapacity、NodeAutoScalingGroupMinSize 或 NodeAutoScalingGroupMaxSize 參數。
耗盡您的工作節點
重要事項: 耗盡動作會隔離工作節點,並告知 Kubernetes 停止在該節點上排程任何新 Pod。在目標節點上執行的 Pod 被排除出耗盡節點,這表示這些 Pod 將會停止。請考量這可能對您的生產環境產生的影響。
您可以耗盡整個節點群組或單一工作節點。選擇適當的選項。
(選項 1) 耗盡整個節點群組:
如果您使用 eksctl 啟動工作節點,請執行下列命令:
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName
注意: 使用您的值取代 clusterName 和 nodegroupName。
若要解鎖節點群組,請執行以下命令:
eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo
注意: 使用您的值取代 clusterName 和 nodegroupName。
如果您不使用 eksctl 啟動工作節點,請識別並耗盡特定 Kubernetes 版本的所有節點。例如:
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-local-data done
若要識別並解鎖特定 Kubernetes 版本的所有節點,請使用下列代碼:
#!/bin/bash K8S_VERSION=1.18.8-eks-7c9bda nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}") for node in ${nodes[@]} do echo "Uncordon $node" kubectl uncordon $node done
**注意:**若要取得您的工作節點版本,請執行以下命令:
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-XXX-XXX-XX-XXX.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda ip-XXX-XXX-XX-XXX.ec2.internal Ready <none> 6d4h v1.18.8-eks-7c9bda
注意: 版本編號會顯示在版本欄中。
(選項 2) 耗盡單一工作節點:
如果您不使用 eksctl 啟動工作節點,或者只想耗盡特定節點,那麼請從容地隔離您的工作節點:
kubectl drain node_name --ignore-daemonsets
注意: 使用您的值取代 node_name。
若要復原隔離,請執行以下命令:
kubectl uncordon node_name
注意: 使用您的值取代 node_name。
若要將現有應用程式遷移到新的工作節點群組,請參閱遷移到新節點群組。
刪除您的工作節點
重要事項: 刪除動作無法復原。請考量這可能對您的生產環境造成的影響。
如果您使用 eksctl,請執行以下命令:
eksctl delete nodegroup --cluster=clusterName --name=nodegroupName
如果您有受管節點群組,請完成刪除受管節點群組中的步驟。
如果您有未受管節點群組,而且您使用 CloudFormation 範本啟用工作節點,請刪除 CloudFormation 堆疊。您必須刪除為 Windows 或 Linux 節點群組建立的堆疊。
如果您有未受管節點群組,旦並未使用 CloudFormation 範本啟用工作節點,請刪除工作節點的 Auto Scaling 群組。或者,如果您未使用 Auto Scaling 群組,則直接終止執行個體。
相關內容
- 已提問 3 個月前lg...
- 已提問 9 個月前lg...
- 已提問 6 個月前lg...
- 已提問 7 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前