如何檢查、擴展、刪除或耗盡 Amazon EKS 中的工作節點?

2 分的閱讀內容
0

我已使用 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

**注意:**將 clusterNamedesiredCountnodegroupName 取代為您的值。

不使用 eksctl 擴展工作節點

若要在不使用 eksctl 的情況下擴展受管工作節點,請編輯節點群組組態

使用 CloudFormation 擴展工作節點

若要使用 AWS CloudFormation 擴展未受管的工作節點,請完成以下步驟:

  1. 使用 CloudFormation 範本啟動您的 WindowsLinux 工作節點。
  2. 在 CloudFormation 堆疊中修改 NodeAutoScalingGroupDesiredCapacityNodeAutoScalingGroupMinSizeNodeAutoScalingGroupMaxSize 參數。

耗盡您的工作節點

**重要事項:**耗盡動作會隔離工作節點,且 Kubernetes 將不再於該節點上排程任何新 Pod。在目標節點上執行的 Pod 會從正在耗盡的節點中移除並停止。

您可以耗盡整個節點群組或單一工作節點。

耗盡整個節點群組

如果您使用 eksctl 啟動工作節點,請執行以下命令:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName

**注意:**將 clusterNamenodegroupName 取代為您的值。

若要耗盡節點群組,請執行以下命令:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo

**注意:**將 clusterNamenodegroupName 取代為您的值。

如果您不使用 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 群組,則請直接終止執行個體

AWS 官方
AWS 官方已更新 8 個月前