我已使用 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。
輸出內容會顯示工作節點的詳細資訊,包括標籤、Taint、系統資訊和狀態。
擴展您的工作節點
注意: 如果您的節點群組顯示在 Amazon EKS 主控台中,請使用受管節點群組。否則,請使用未受管的節點群組。
使用下列其中一種方法擴展您的工作節點。
使用 eksctl 擴展工作節點
若要使用 eksctl 擴展受管或未受管的工作節點,請執行以下命令:
eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName
**注意:**將 clusterName、desiredCount 和 nodegroupName 取代為您的值。
不使用 eksctl 擴展工作節點
若要在不使用 eksctl 的情況下擴展受管工作節點,請編輯節點群組組態。
使用 CloudFormation 擴展工作節點
若要使用 AWS CloudFormation 擴展未受管的工作節點,請完成以下步驟:
- 使用 CloudFormation 範本啟動您的 Windows 或 Linux 工作節點。
- 在 CloudFormation 堆疊中修改 NodeAutoScalingGroupDesiredCapacity、NodeAutoScalingGroupMinSize 或 NodeAutoScalingGroupMaxSize 參數。
耗盡您的工作節點
**重要事項:**耗盡動作會隔離工作節點,且 Kubernetes 將不再於該節點上排程任何新 Pod。在目標節點上執行的 Pod 會從正在耗盡的節點中移除並停止。
您可以耗盡整個節點群組或單一工作節點。
耗盡整個節點群組
如果您使用 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 nodesNAME 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
耗盡單一工作節點
如果您不使用 eksctl 啟動工作節點,或者只想耗盡特定節點,那麼請安全地隔離工作節點:
kubectl drain node_name --ignore-daemonsets
注意: 使用您的值取代 node_name。
若要復原隔離,請執行以下命令:
kubectl uncordon node_name
注意: 使用您的值取代 node_name。
若要將現有應用程式遷移到新的工作節點群組,請參閱遷移到新節點群組。
刪除您的工作節點
**重要事項:**刪除動作無法復原。
如果您使用 eksctl,請執行以下命令:
eksctl delete nodegroup --cluster=clusterName --name=nodegroupName
如果您有受管節點群組,請完成刪除受管節點群組中的步驟。
如果您有未受管節點群組,且您是使用 CloudFormation 範本啟動工作節點,請刪除堆疊。您必須刪除為 Windows 或 Linux 節點群組建立的堆疊。
如果您有未受管節點群組,但並未使用 CloudFormation 範本啟動工作節點,請刪除 Auto Scaling 群組。如果您未使用 Auto Scaling 群組,則請直接終止執行個體。