Amazon EKS のワーカーノードをチェック、スケール、削除、ドレインする方法を教えてください。

所要時間2分
0

eksctl または AWS マネジメントコンソールを使用して、Amazon Elastic Kubernetes Service (Amazon EKS) ワーカーノードを起動しました。次に、ワーカーノードをチェック、スケール、ドレイン、削除したいと考えています。

解決策

ワーカーノードをチェックする

Amazon EKS コントロールプレーンに登録されているワーカーノードをリストするには、次のコマンドを実行します。

kubectl get nodes -o wide

出力には、ワーカーノードの名前、Kubernetes バージョン、オペレーティングシステム (OS)、IP アドレスが返されます。

単一のワーカーノードに関する追加情報を取得するには、次のコマンドを実行します。

kubectl describe node/node_name

注: node_name は、ip-XX-XX-XX-XX.us-east-1.compute.internal のような実際の値に置き換えてください。

出力には、ラベル、テイント、システム情報、ステータスなど、ワーカーノードに関する詳細情報が表示されます。

ワーカーノードをスケールする

注: Amazon EKS コンソールにノードグループが表示される場合は、マネージドノードグループを使用します。そうでない場合は、アンマネージドノードグループを使用します。

次のいずれかの方法を使用して、ワーカーノードをスケールします。

eksctl を使用してワーカーノートをスケールする

eksctl を使用してマネージドワーカーノードまたはアンマネージドワーカーノードをスケールするには、次のコマンドを実行します。

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

注: clusterNamedesiredCount、および nodegroupName を実際の値に置き換えてください。

eksctl を使用せずにワーカーノードをスケールする

eksctl を使用せずにマネージドワーカーノードをスケールするには、ノードグループ設定を編集します。

CloudFormation でワーカーノードをスケールする

AWS CloudFormation を使用してアンマネージドワーカーノードをスケールするには、次の手順を実行します。

  1. CloudFormation テンプレートを使用して、Windows または Linux 用のワーカーノードを起動します。
  2. NodeAutoScalingGroupDesiredCapacityNodeAutoScalingGroupMinSizeNodeAutoScalingGroupMaxSize パラメータを CloudFormation スタックで変更します。

ワーカーノードをドレインする

重要: ドレインアクションはワーカーノードを分離し、Kubernetes はノードでの新しいポッドをスケジュールしないようになります。ターゲットノードで実行されているポッドは、ドレインノードから削除され、停止されます。

ノードグループ全体または単一のワーカーノードのいずれかをドレインできます。

ノードグループ全体をドレインする

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

注: ワーカーノードのバージョンを取得するには、次のコマンドを実行してください。バージョン番号は VERSION 列に表示されます。

$ 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公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ