如何檢查、擴展、刪除或耗盡 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

輸出會顯示工作節點的相關詳細資訊,包括標籤、污點、系統資訊和狀態。

擴展您的工作節點

注意: 如果您的節點群組顯示在 Amazon EKS 主控台中,請使用受管節點群組。否則,請使用未受管的節點群組。

(選項 1)若要使用 eksctl 擴展您的受管或未受管的工作節點,請執行以下命令:

eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName

注意: 使用您的值取代 clusterNamedesiredCountnodegroupName

-或-

(選項 2) 若要在不使用 eksctl 的情況下擴展您的受管工作節點,請完成更新受管節點群組的「若要編輯節點群組組態」一節中的步驟。

-或-

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

  1. 使用 CloudFormation 範本啟動您的 WindowsLinux 工作節點。

  2. 在您的 CloudFormation 堆疊中修改 NodeAutoScalingGroupDesiredCapacityNodeAutoScalingGroupMinSizeNodeAutoScalingGroupMaxSize 參數。

耗盡您的工作節點

重要事項: 耗盡動作會隔離工作節點,並告知 Kubernetes 停止在該節點上排程任何新 Pod。在目標節點上執行的 Pod 被排除出耗盡節點,這表示這些 Pod 將會停止。請考量這可能對您的生產環境產生的影響。

您可以耗盡整個節點群組或單一工作節點。選擇適當的選項。

(選項 1) 耗盡整個節點群組:

如果您使用 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 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 堆疊。您必須刪除為 WindowsLinux 節點群組建立的堆疊。

如果您有未受管節點群組,旦並未使用 CloudFormation 範本啟用工作節點,請刪除工作節點的 Auto Scaling 群組。或者,如果您未使用 Auto Scaling 群組,則直接終止執行個體


AWS 官方
AWS 官方已更新 3 年前