NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Enterprise AI 2.6 をデプロイしてみる。Part-09:GPU ノード プールの追加

NKP の Kubernetes クラスタに、Nutanix Enterprise AI(NAI)2.6 を展開してみます。今回は、NKP に GPU ノード プールを追加してみます。

 

前回はこちら。

 

今回の内容です。

 

ドキュメントでは下記のあたりが参考になります。

 

0. NVIDIA GPU Operator のインストール

Kubernetes クラスタで NVIDIA GPU を利用可能にする NVIDIA GPU Operator は、今回は下記の投稿で事前にインストールしてあります。

ちなみに、GPU Operator のインストールは、GPU ノード プール追加の後でも大丈夫です。

 

1. GPU ノード用 OS イメージ(Ubuntu 24.04)の作成

GPU を使用できる Ubuntu 24.04 の OS イメージを作成します。

nkp create image nutanix ubuntu-24.04 \
--endpoint=10.1.7.25 \
--cluster=DX-Cluster \
--subnet=vlan-0-ipam \
--gpu-name="Ampere 16" \
--insecure

 

コマンドを実行すると、イメージが作成され、下記のようにイメージ名が表示されます。

  • 作成されたイメージの名前:nkp-ubuntu-24.04-gpu-1.34.3-20260327170243
    nutanix.nkp_image: RUNNING HANDLER [config : restart containerd] **********************************
    nutanix.nkp_image: ok: [default]
    nutanix.nkp_image:
    nutanix.nkp_image: PLAY RECAP *********************************************************************
    nutanix.nkp_image: default                    : ok=181  changed=92   unreachable=0    failed=0    skipped=200  rescued=0    ignored=0
    nutanix.nkp_image:
==> nutanix.nkp_image: Halting the virtual machine...
==> nutanix.nkp_image: Creating image(s) from virtual machine nkp-ubuntu-24.04-gpu-1.34.3-20260327170243...
==> nutanix.nkp_image: Found disk to copy: SCSI:0
==> nutanix.nkp_image: Image successfully created: nkp-ubuntu-24.04-gpu-1.34.3-20260327170243 (2e5c7e25-ce40-4d2f-a183-4daa9f4a009c)
==> nutanix.nkp_image: Deleting virtual machine...
==> nutanix.nkp_image: Virtual machine successfully deleted
==> nutanix.nkp_image: Running post-processor: custom-post-processor (type shell-local)
==> nutanix.nkp_image (shell-local): Running local shell script: /tmp/packer-shell3226816332
==> nutanix.nkp_image: Running post-processor: packer-manifest (type manifest)
Build 'nutanix.nkp_image' finished after 12 minutes 46 seconds.

==> Wait completed after 12 minutes 46 seconds

==> Builds finished. The artifacts of successful builds are:
--> nutanix.nkp_image: nkp-ubuntu-24.04-gpu-1.34.3-20260327170243
--> nutanix.nkp_image: nkp-ubuntu-24.04-gpu-1.34.3-20260327170243
--> nutanix.nkp_image: nkp-ubuntu-24.04-gpu-1.34.3-20260327170243

 

ちなみにこの処理では、NKP Image Builder のコンテナ イメージが自動的にダウンロードされ、そのコンテナか ら packer build によるイメージ作成が実行されます。そして Cluster API のための設定には Ansible が利用されています。

gowatana@nkp-work-02:~$ docker images
REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
mesosphere/konvoy-bootstrap    v2.17.1   8e340f81effb   2 weeks ago    2.92GB
mesosphere/nkp-image-builder   v2.17.1   a4d641c8824d   46 years ago   1.63GB

 

2. GPU ノード プールの追加

この環境の NKP クラスタは、default Namespace に作成されています。

gowatana@nkp-work-02:~$ kubectl get cluster -A
NAMESPACE   NAME     CLUSTERCLASS          PHASE         AGE     VERSION
default     nkpnai   nkp-nutanix-v2.17.1   Provisioned   2d14h   v1.34.3

 

現在のノード プールを確認してみます。

gowatana@nkp-work-02:~$ nkp get nodepool -c nkpnai
NODEPOOL               DESIRED               READY               KUBERNETES VERSION
md-0                   4                     4                   v1.34.3

 

ノード プールに対応する Machine Deployment も、default Namespace に作成されています。

gowatana@nkp-work-02:~$ kubectl get machinedeployments.cluster.x-k8s.io -A
NAMESPACE   NAME                CLUSTER   REPLICAS   READY   UPDATED   UNAVAILABLE   PHASE     AGE     VERSION
default     nkpnai-md-0-7pmtn   nkpnai    4          4       4         0             Running   2d14h   v1.34.3

 

ノード プールを作成します。

nkp create nodepool nutanix gpupool-1 \
--cluster-name=nkpnai \
--prism-element-cluster=PE \
--subnets=vlan-0-ipam \
--vm-image=nkp-ubuntu-24.04-gpu-1.34.3-20260327170243 \
--vcpus=16 \
--memory=40 \
--disk-size=300 \
--gpu-count=1 \
--gpu-name="Ampere 16"

 

少し待つと、gpupool-1 ノード プールによるノードが追加されます。

gowatana@nkp-work-02:~$ kubectl get nodes
NAME                                 STATUS   ROLES           AGE     VERSION
nkpnai-d9vzg-lnr76                   Ready    control-plane   7h32m   v1.34.3
nkpnai-d9vzg-m6qcq                   Ready    control-plane   7h28m   v1.34.3
nkpnai-d9vzg-w9vkr                   Ready    control-plane   7h24m   v1.34.3
nkpnai-gpupool-1-6cszv-rkxtx-d5l9g   Ready    <none>          55s     v1.34.3
nkpnai-md-0-7pmtn-lhd8x-ds29q        Ready    <none>          7h32m   v1.34.3
nkpnai-md-0-7pmtn-lhd8x-mq4tt        Ready    <none>          7h34m   v1.34.3
nkpnai-md-0-7pmtn-lhd8x-mxhw9        Ready    <none>          7h31m   v1.34.3
nkpnai-md-0-7pmtn-lhd8x-z2d4q        Ready    <none>          7h27m   v1.34.3

 

3. GPU ノードの Taint 設定

Kubernetes クラスタに GPU ノードを追加すると、デフォルトでは GPU を使用しない Pod も起動されてしまいます。そこで、下記の投稿にあるように、GPU を使用しない Pod が GPU ノードで起動されないように、GPU ノードに Taint を設定しておきます。

gowatana@nkp-work-02:~$ kubectl taint node -l nvidia.com/gpu.present=true nvidia.com/gpu=true:NoSchedule
node/nkpnai-gpupool-1-6cszv-rkxtx-d5l9g tainted

 

GPU ノードに Taint が追加されました。

gowatana@nkp-work-02:~$ kubectl get nodes -o 'custom-columns=NAME:.metadata.name,GPU_PRESENT:.metadata.labels.nvidia\.com/gpu\.present,TAINTS:.spec.taints'
NAME                                 GPU_PRESENT   TAINTS
nkpnai-d9vzg-lnr76                   <none>        [map[effect:NoSchedule key:node-role.kubernetes.io/control-plane]]
nkpnai-d9vzg-m6qcq                   <none>        [map[effect:NoSchedule key:node-role.kubernetes.io/control-plane]]
nkpnai-d9vzg-w9vkr                   <none>        [map[effect:NoSchedule key:node-role.kubernetes.io/control-plane]]
nkpnai-gpupool-1-6cszv-rkxtx-d5l9g   true          [map[effect:NoSchedule key:nvidia.com/gpu value:true]]
nkpnai-md-0-7pmtn-lhd8x-ds29q        <none>        <none>
nkpnai-md-0-7pmtn-lhd8x-mq4tt        <none>        <none>
nkpnai-md-0-7pmtn-lhd8x-mxhw9        <none>        <none>
nkpnai-md-0-7pmtn-lhd8x-z2d4q        <none>        <none>

 

ただし、ラボ環境でハードウェア リソースが限られているようであれば、あえて Taint を設定しないで、空きのあるノードで Pod を起動するという使い方も考えられます。

 

おまけ:GPU ノード プールの削除

ノード プールを削除する場合は、下記のようにコマンドを実行します。

gowatana@nkp-work-02:~$ nkp delete nodepool -c nkpnai gpupool-1
 ✓ Deleting default/gpupool-1 nodepool resources

 

つづく。

 

©2026 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。