広告

kubernetes – nodeSelector

infrastructure as code

Affinityの手法一覧

  • nodeSelector:シンプルなNode Affinity機能
  • Node Affinity:特定条件/特定条件以外のNode上だけ実行する
  • Inter-Pod Affinity:特定のPodがいるドメイン(Node、ゾーンなど)上で実行する
  • Inter-Pod Anti-Affinity:特定のPodがいないドメイン(Node、ゾーンなど)上で実行する

nodeSelector

nodeSelectorは、Nodeを選択するための、最も簡単で推奨されている手法です。

設定方法は、Podのspec.nodeSelectorで直接Nodeのラベルを指定することで、スケジュール先を決めます。

nodeSelectorの使用例

前回の説明では、GCPのNodeには沢山のビルトインラベルが用意されています。
その中で、NodePoolのラベルが存在します。
この例では、指定のNodePoolのみスケジューリングするような例で説明します。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: sample-app
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent  # 必要イメージがk8sのローカル似なかった場合、ダウンロードする
  nodeSelector:  # nodeSelector
    cloud.google.com/gke-nodepool: default-pool  # default-poolという名のNodePoolのNodeにスケジューリングする

nodeName

実はnodeNameを直接指定することも可能ですが、k8sの設計方針的にはあんまりお勧めしません。
念のため、ここで指定例を載せておきます。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
  nodeName: kube-node-01  # nodeのホスト名指定

※公式例を使用

最後に

今回の内容はすごく少なかったのですが、スケジューリングにおいてはよく使われる機能です。
公式ドキュメントでもこの使い方を推奨しています。

ここまで読んでいただいて、お疲れ様でした。

コメント

タイトルとURLをコピーしました