スキップしてコンテンツを表示

Amazon EKS でワーカーノードを確認、スケーリング、ドレイン、削除する方法を教えてください。

所要時間2分
0

eksctl または Amazon Elastic Kubernetes Service (Amazon EKS) コンソールを使用してワーカーノードの確認、スケーリング、ドレイン、または削除を行いました。

解決策

ワーカーノードを確認する

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

kubectl get nodes -o wide

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

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

kubectl describe node/node_name

注: node_name をワーカーノードの Amazon リソースネーム (ARN) に置き換えてください。(例: ip-AA-BB-CC-DD.us-east-1.compute.internal)。

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

ワーカーノードをスケーリングする

注: 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 スタックの NodeAutoScalingGroupDesiredCapacityNodeAutoScalingGroupMinSizeNodeAutoScalingGroupMaxSize パラメータを変更します。

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

重要: ドレインアクションではワーカーノードが分離されるため、Kubernetes はノードで新しいポッドをスケジュールしないようになります。ノードのドレインにより、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

注: 1.18.8-eks-7c9bda を 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

注: 1.18.8-eks-7c9bda を Kubernetes の実際のバージョンに置き換えてください。

ワーカーノードのバージョン番号を取得するには、次のコマンドを実行します。

kubectl get nodesNAME

注: nodesNAME を実際のノード名に置き換えてください。

出力例:

$ kubectl get nodesNAME                                      STATUS   ROLES    AGE     VERSION  
ip-ABC-ACB-DE-ABC.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda
ip-ABC-ABC-DE-ABC.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda

バージョン番号は VERSION 列に表示されています。

単一のワーカーノードをドレインする

ワーカーノードの起動または特定のノードのドレインに eksctl を使用しなかった場合は、ワーカーノードを安全に分離してください。次のコマンドを実行します。

kubectl drain node_name --ignore-daemonsets

注: node_name を実際のノード名に置き換えてください。

分離を取り消すには、次のコマンドを実行します。

kubectl uncordon node_name

注: node_name を実際のノード名に置き換えてください。

既存のアプリケーションを新しいワーカーノードグループに移行することもできます

ワーカーノードを削除する

重要: 削除操作は元に戻せません。

eksctl を使用している場合は、次のコマンドを実行します。

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

注: 実際のものでそれぞれ、clusterName をクラスター名に、nodegroupName をノードグループ名に置き換えてください。

マネージドノードグループがある場合は、「クラスターからマネージドノードグループを削除する」を参照してください。

アンマネージドノードグループがあり、CloudFormation テンプレートを使用してワーカーノードを起動した場合は、そのノードグループのスタックを削除します。

アンマネージドノードグループがあるものの、CloudFormation テンプレートを使用しなかった場合は、Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling グループを削除します。Amazon EC2 Auto Scaling グループを使用しなかった場合は、インスタンスを削除します。

AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ