このページでは、仮想ノードを使用したジョブの実行方法について説明します。 クラスターに新しいノードを作成しないで、ピーク時にこの方法を使用できます。

背景情報

仮想ノードを使用すると、Kubernetes クラスターでより多くのコンピューティング能力の提供が可能となり、必要に応じてポッドを作成できます。

たとえば、1 つのマネージドマスターノードと 2 つのワーカーノードを持つ Kubernetes クラスターがあり、各ワーカーノードの仕様が 4 CPU と 8 GB の場合、 マネージド Kubernetes クラスターの仕様は 8 CPU と 16 GB になります。

データ処理のため16 個の CPU と 32 GB でオフラインジョブを実行する場合、ジョブを仮想ノードにスケジュールすることで、クラスターのノードのコンピューティングリソースを節約できます。

前提条件

手順

  1. kubectl を利用した Kubernetes クラスターへ接続します。 詳細については、「kubectl を利用した Kubernetes クラスターへの接続」をご参照ください。
  2. 次のコードをコピーして 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
  3. 次のコマンドを実行して、ポッドの実行ステータスを表示します。
    #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
    仮想ノードのポッドは、使用した特定のリソース量に応じて課金されます。