クラスタワーカーノードの管理

Prev Next

VPC環境で利用できます。

クラスタ内のワーカーノードリストを確認し、各ワーカーノードを管理できます。Graceful Terminationが必要な場合、kubectlコマンドを使用してワーカーノードから Podを安全に退避できます。

ワーカーノードリストの確認

クラスタのワーカーノードリストを確認する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 Services > Containers > Ncloud Kubernetes Service メニューを順にクリックします。
  2. クラスタリストで、個別クラスタの行をクリックします。
  3. クラスタ詳細情報タブで、ノードプール領域の下にある [ワーカーノードを見る] ボタンをクリックします。
    • クラスタ名をクリックすると、他のクラスタのノードリストを確認できます。
    • 正常なノードは、ノード状態が Ready と表示されます。Kubeletが動作しない、またはその他の理由で正常に動作しないノードは、ノードの状態が Not Ready と表示されます。
    • コンソールで Services > Containers > Ncloud Kubernetes Service > Nodes を順にクリックする方法でもこのリストを確認できます。

ワーカーノードの詳細情報を見る

クラスタ内の各ワーカーノードの詳細情報を確認するには、ワーカーノードリストから確認したいノードの名前をクリックします。

Kubectlによるワーカーノードのメンテナンス

安定的なサービス運用のために介入が必要な場合、Kubectlを使用してワーカーノードから Podを安全に退避することで、その Pod内のコンテナを Graceful Terminationの形で終了できます。

ワーカーノード状態の確認

ワーカーノードの状態を確認するには、以下のコマンドを実行してください。

$ kubectl --kubeconfig $KUBE_CONFIG describe node $NODENAME

以下は、正常な状態のノードの例です。

"conditions": [
  {
    "type": "Ready",
    "status": "True",
    "reason": "KubeletReady",
    "message": "kubelet is posting ready status",
    "lastHeartbeatTime": "2019-06-05T18:38:35Z",
    "lastTransitionTime": "2019-06-05T11:41:27Z"
  }
]
  • ノードの状態は JSONオブジェクトで返されます。
  • ノードのコンディションのうち、status値が5分以上 Unknownまたは Falseで維持される場合、ノード上のすべての Podはノードコントローラーにより削除されるようにスケジュールされます。
    (NAVERクラウドプラットフォームの Ncloud Kubernetes Serviceでは、pod-eviction-timeoutが5分に指定されています)。

ワーカーノードから Podを退避

ノードに対するカーネルアップデートやインフラのメンテナンスなど様々なタスクを行う前に、kubectl drainコマンドを使用してノードから Podを安全に退避できます。安全に退避された Podのコンテナは Graceful Terminationの形で終了できます。

注意

ノード内の特定システムの Podは、kubectl drainコマンドで削除できません。
削除できない Podに関する詳細内容は、kubectl drainをご参照ください。

kubectl drainコマンドを用いてワーカーノードから Podを退避する方法は、次の通りです。

  1. 以下のコマンドを実行して Podを退避したいノードを確認します。
$ kubectl --kubeconfig $KUBE_CONFIG get nodes
  1. 確認したノードのうち、Podを退避する対象のワーカーノードの名前を入力して以下のコマンドを実行します。
$ kubectl --kubeconfig $KUBE_CONFIG drain $NODENAME
  1. クラスタのメンテナンスを行った後、以下のコマンドを使用してそのワーカーノードに Podが再度スケジューリングされるように設定します。
$ kubectl --kubeconfig $KUBE_CONFIG uncordon $NODENAME