このトピックでは、Container Service コンソールで、特定のノードにポッドをスケジュールする方法について説明します。
ノードラベルを追加し、 nodeSelector
を設定すると、特定のノードにポッドをスケジュールできます。 nodeSelector の実装原則について詳しくは、『nodeselector』をご参照ください。
ビジネスシナリオのニーズに応じて、管理や制御に使用するサービスをマスターノードにデプロイしたり、SSD ディスクを持つマシンにサービスをデプロイするには、以下の方法を使用して、指定したノードにポッドをスケジューリングします。
前提条件
Kubernetes クラスターが作成されていること。 詳細は、「Kubernetes クラスターの作成」をご参照ください。
手順 1: ノードラベルの追加
- Container Service コンソール にログインします。
- Container Service-Kubernetes の左側のナビゲーションウインドウで、 を選択します。
- [クラスター] ドロップダウンリストからクラスターを選択し、右上隅の [ラベル管理] をクリックします。
- 対応するチェックボックスをオンにして 1 つ以上のノードを選択し、[タグの追加] をクリックします。 この例では、ワーカーノードを選択します。
- 表示されたダイアログボックスでラベルの名前と値を入力して、[OK] をクリックします。
ノードラベル
group:worker
が、[ラベル管理] ページに表示されます。
kubectl label nodes <node-name> <label-key>=<label-value>
コマンドを実行して、ノードラベルを追加することもできます。
手順 2: 指定したノードへポッドをデプロイする
- Container Service コンソール にログインします。
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 を選択します。
- 右上隅で、[テンプレートから作成] をクリックします。
- ポッドをデプロイするためのテンプレートを設定します。 設定が完了したら、[デプロイ] をクリックします。
- クラスター: クラスターを選択します。
- 名前空間: リソースオブジェクトが属する名前空間を選択します。 この例では、名前空間として "default" を使用します。
- リソースタイプ: この例では、[カスタム] を選択します。
この例のオーケストレーションテンプレートを以下に示します。
apiVersion: v1 kind: Pod metadata: labels: name: hello-pod name: hello-pod spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: hello-pod ports: - containerPort: 8080 protocol: TCP resources: {} securityContext: capabilities: {} privileged: false terminationMessagePath: /dev/termination-log dnsPolicy: ClusterFirst restartPolicy: Always nodeSelector: group: worker ##The same as the node label configured in the preceding step. status :{}
- [デプロイ] をクリックすると、デプロイメントのステータスを示すメッセージが表示されます。 デプロイが成功したら、メッセージの中の [Kubernetes ダッシュボード] をクリックしてダッシュボードに移動し、デプロイ状況を確認します。
- ポッド名をクリックして、ポッドの詳細を表示します。
ポッドラベルやノード ID などの情報が表示され、このポッドが
group : worker
というラベルのノードに正常にデプロイされたことを示しています。