Skip to content

Latest commit

 

History

History
65 lines (40 loc) · 3.38 KB

Pod-nodeSelector.md

File metadata and controls

65 lines (40 loc) · 3.38 KB

前: Pod-initContainer


Pod設定 nodeSelector

Podはコントロールプレーンのkube-schedulerによって起動するワーカーノードが決められます。 このPodをワーカーノードに割り当てることをK8sではスケジュールといいます。 Podにスケジュール関連のパラメータが設定されていない場合、kube-schedulerはノードの負荷状況などを考慮してスケジュールします。 しかし、どうしても起動先ノードを指定したい場合もあります。(例えば、GPUを使用するPodをGPU搭載のワーカーノードで起動したい場合など) そのような場合にPodのスケジュール先を指定するもっとも簡単な方法がnodeSelectorです。

演習

  1. クラスタの参加ノードを確認し、ワーカーノードが2台以上存在していることを確認してください。

  2. ノードに付与されたラベルを表示してください。

  3. どれか一台のノードにnode-spec=monsterのラベルを付与してください。

  4. 他のノードにはnode-spec=normalのラベルを付与してください。

  5. key:node-specをカラムに追加してノードの一覧で表示してください。一台のノードにmonsterのvalueがあることを確認してください。

  6. 以下を満たすマニフェストを作成しデプロイしてください。なお、nodeSelectorについては公式ドキュメントを参考にしてください。

    • 要件
      • Deployment
        • 名前はnginx
        • replicas: 1
        • labelはすべてapp: nginx
        • Pod
          • 名前はnginx
          • イメージはnginx:1.12
        • nodeSelector
          • ラベルnode-specにvaluemonsterが付与されたノードを指定
  7. Podリソースの一覧をwideで表示し、Podがnode-spec:monsterのラベルを付与したノードで起動していることを確認してください。

  8. Deployment:nginxのPodレプリカ数を10に変更してください。新たに作成されたPodもすべてnode-spec:monsterのラベルを付与したノードで起動していることを確認してください。

  9. Deployment:nginxのnodeSelectorをkeynode-specにvaluenormalが付与されたノード指定に変更してください。

  10. Podのローリングアップデートが実行され、すべてのPodがnode-spec:normalのラベルを付与したノードで起動していることを確認してください。

  11. Deployment:nginxをいったん削除してください。

  12. Deployment:nginxのnodeSelectorをkeynode-specにvaluesuperが付与されたノード指定に変更しデプロイしてください。

  13. すべてのPodのSTATUSがPendingとなることを確認してください。

  14. Deployment:nginxを削除してください。

  15. ノードに付与されたkeynode-specのラベルを削除してください。

以上で本演習は終了です。

具体的な操作およびその結果に関する回答例はこちらにあります。 具体的な操作方法がわからなかった場合や、想定した結果にならなかった場合などに参照してください。


次: postStart/preStop