このページでは、仮想ノードを使用したジョブの実行方法について説明します。 クラスターに新しいノードを作成しないで、ピーク時にこの方法を使用できます。
背景情報
仮想ノードを使用すると、Kubernetes クラスターでより多くのコンピューティング能力の提供が可能となり、必要に応じてポッドを作成できます。
たとえば、1 つのマネージドマスターノードと 2 つのワーカーノードを持つ Kubernetes クラスターがあり、各ワーカーノードの仕様が 4 CPU と 8 GB の場合、 マネージド Kubernetes クラスターの仕様は 8 CPU と 16 GB になります。
データ処理のため16 個の CPU と 32 GB でオフラインジョブを実行する場合、ジョブを仮想ノードにスケジュールすることで、クラスターのノードのコンピューティングリソースを節約できます。
前提条件
- Kubernetes クラスタが作成されています。 詳細は、「マネージド Kubernetes クラスターの作成 」をご参照ください.
- 仮想ノードが、マネージド Kubernetes クラスターにデプロイされます。 詳細については、「仮想ノードのデプロイ」をご参照ください。
- virtual-node-affinity-injection: enabled タグは、対象となる名前空間に追加されます。 詳細については、「名前空間タグを設定してポッドを作成する」をご参照ください。
手順
- kubectl を利用した Kubernetes クラスターへ接続します。 詳細については、「kubectl を利用した Kubernetes クラスターへの接続」をご参照ください。
- 次のコードをコピーして job.yaml に貼り付け、
kubectl -n vk apply -f job.yaml
コマンドを実行してジョブをデプロイします。kind: Job metadata: name: pi spec: template: spec: containers: - name: mypd image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] resources: requests: cpu: 16 memory: 32Gi restartPolicy: Never backoffLimit: 4
- 次のコマンドを実行して、ポッドの実行ステータスを表示します。
#kubectl -n vk get pod -a NAME READY STATUS RESTARTS AGE pi-7cmwv 0/1 Completed 0 2m #kubectl -n vk describe pod Name: pi-7cmwv Namespace: vk Priority: 0 PriorityClassName: <none> Node: virtual-kubelet/ ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m default-scheduler Successfully assigned vk/pi-7cmwv to virtual-kubelet Normal SuccessfulMountVolume 2m kubelet, eci MountVolume.SetUp succeeded for volume "default-token-b2tff" Normal Pulling 2m kubelet, eci pulling image "perl" Normal Pulled 2m kubelet, eci Successfully pulled image "perl" Normal Created 2m kubelet, eci Created container Normal Started 2m kubelet, eci Started container
注 仮想ノードのポッドは、使用した特定のリソース量に応じて課金されます。