NKP の Kubernetes クラスタに、Nutanix Enterprise AI(NAI)2.6 を展開してみます。今回は、NKP の管理クラスタを用意します。
前回はこちら。
今回の内容です。
NKP 管理クラスタの作成については、下記の投稿も参考にしてください。
1. OS イメージの登録
Nutanix Support & Insight Portal にある NKP のダウンロード ページから、下記の QCOW2 ディスク イメージ ファイルをダウンロードしておきます。
- ファイル名:nkp-rocky-9.7-release-cis-1.34.3-20260316170119.qcow2
このファイルは、Prism Central の「Infrastructure」→「Compute & Storage」→「Images」を開き、「Add Image」から同名で登録しておきます。
- イメージの名前:nkp-rocky-9.7-release-cis-1.34.3-20260316170119.qcow2
2. NKP 管理クラスタの作成(Self-Managed)
以前の投稿 で用意した作業用 Linux マシンで NKP CLI(nkp コマンド)を実行して、NKP の管理クラスタを作成します。
まず、Prism Central の認証情報を環境変数に格納しておきます。
export NUTANIX_USER=admin export NUTANIX_PASSWORD='Prism Central のパスワード'
そして、Docker Hub の認証情報も環境変数に格納しておきます。NKP のインストールでは、Docker Hub から大量のコンテナ イメージを Pull するため、Rate Limit によるインストール失敗を防ぐために、Docker Hub へのログインが必要です。
ここで指定するパスワードは、ユーザーのパスワードではなく、Docker Hub の パーソナル アクセス トークン (PAT)で代用できます。PAT を使用する場合、パーミッションは「Public Repo Read-only」を選択しておきます。
export DOCKER_USER=Docker Hub のユーザー export DOCKER_PASS='dckr_pat_XXXXXXXXXXXXXXXXXXXXXXXXXX'
nkp create cluster コマンドで、管理クラスタを作成します。
今回の例では、下記のように指定しています。
- NKP クラスタの名前:nkpnai
- Prism Central の IP アドレス:10.1.7.100
- Prism Central の SSL/TLS 証明書は無視する(--insecure)
- Prism Element(Nutanix クラスタ)の名前:PE
- Kubernetes ノードを接続するサブネット:vlan-0-ipam
- Control Plane に設定する IP アドレス:10.1.7.120
- Kubernetes の LB で使用する IP レンジ:10.1.7.121-10.1.7.123
- Kubernetes ノードの OS イメージ:nkp-rocky-9.7-release-cis-1.34.3-20260316170119.qcow2
- Control Plane の vCPU:16。これはデフォルト(最小要件)よりも拡張する
- Nutanix CSI Driver で VG を作成する AOS のストレージ コンテナ:default-container-01
- Kubernetes ノードに設置する SSH 接続用公開キー:$HOME/.ssh/id_rsa.pub
nkp create cluster nutanix \ --cluster-name=nkpnai \ --endpoint=https://10.1.7.100:9440 \ --insecure \ --control-plane-prism-element-cluster=PE \ --worker-prism-element-cluster=PE \ --control-plane-subnets=vlan-0-ipam \ --worker-subnets=vlan-0-ipam \ --control-plane-endpoint-ip=10.1.7.120 \ --kubernetes-service-load-balancer-ip-range=10.1.7.121-10.1.7.123 \ --vm-image=nkp-rocky-9.7-release-cis-1.34.3-20260316170119.qcow2 \ --control-plane-vcpus=16 \ --csi-storage-container=default-container-01 \ --ssh-username nutanix \ --ssh-public-key-file=$HOME/.ssh/id_rsa.pub \ --registry-url=https://registry-1.docker.io \ --registry-username=$DOCKER_USER \ --registry-password=$DOCKER_PASS \ --self-managed
実際にコマンドを実行すると、下記のようになります。画面出力を確認すると、kubeconfig ファイル(例では /home/gowatana/nkpnai.conf)が生成されています。
gowatana@nkp-work-02:~$ nkp create cluster nutanix --cluster-name=nkpnai --endpoint=https://10.1.7.100:9440 --insecure --control-plane-prism-element-cluster=PE --worker-prism-element-cluster=PE --control-plane-subnets=vlan-0-ipam --worker-subnets=vlan-0-ipam --control-plane-endpoint-ip=10.1.7.120 --kubernetes-service-load-balancer-ip-range=10.1.7.121-10.1.7.123 --vm-image=nkp-rocky-9.7-release-cis-1.34.3-20260316170119.qcow2 --control-plane-vcpus=16 --csi-storage-container=default-container-01 --ssh-username nutanix --ssh-public-key-file=$HOME/.ssh/id_rsa.pub --registry-url=https://registry-1.docker.io --registry-username=$DOCKER_USER --registry-password=$DOCKER_PASS --self-managed ✓ Creating a bootstrap cluster ✓ Initializing new CAPI components ✓ Initializing new CAPI components ✓ Creating ClusterClass resources ✓ Creating ClusterClass resources ✓ Generating cluster configuration (Kubernetes resources) secret/nkpnai-pc-credentials created secret/nkpnai-pc-credentials-for-csi created secret/nkpnai-pc-credentials-for-konnector-agent created secret/nkpnai-image-registry-credentials created secret/global-nutanix-credentials created ⠈⠁ Running preflight checks cluster.cluster.x-k8s.io/nkpnai created configmap/kommander-bootstrap-configuration created ✓ Running preflight checks ⢄⡱ Creating metadata objects secret/prism-central-metadata created ✓ Creating metadata objects ✓ Creating cluster ✓ Waiting for cluster infrastructure to be ready ✓ Waiting for cluster control-planes to be ready ✓ Waiting for machines to be ready ✓ Initializing new CAPI components ✓ Initializing new CAPI components ✓ Creating ClusterClass resources ✓ Moving cluster resources You can now view resources in the moved cluster by using the --kubeconfig flag with kubectl. For example: kubectl --kubeconfig="/home/gowatana/nkpnai.conf" get nodes ✓ Deleting bootstrap cluster Cluster default/nkpnai kubeconfig was written to to the filesystem. You can now view resources in the new cluster by using the --kubeconfig flag with kubectl. For example: kubectl --kubeconfig="/home/gowatana/nkpnai.conf" get nodes Starting Kommander installation ✓ Deploying Flux ✓ Deploying Ingress certificate ✓ Creating kommander-overrides ConfigMap ✓ Deploying Git Operator ✓ Creating GitClaim for management GitRepository ✓ Creating GitClaimUser for accessing management GitRepository ✓ Deploying Flux configuration ✓ Deploying Kommander Operator ✓ Creating KommanderCore resource ✓ Cleaning up Kommander bootstrap resources ✓ Deploying Gatekeeper ✓ Creating PlatformVersionArtifact ✓ Deploying Kommander AppManagement ✓ 4 out of 14 core applications have been installed (waiting for dex, dex-k8s-authenticator and 8 more) ✓ 8 out of 14 core applications have been installed (waiting for dex-k8s-authenticator, external-secrets and 4 more) ✓ 11 out of 14 core applications have been installed (waiting for dex-k8s-authenticator, kommander-ui and 1 more) ✓ 12 out of 14 core applications have been installed (waiting for dex-k8s-authenticator, traefik-forward-auth-mgmt) ✓ 13 out of 14 core applications have been installed (waiting for traefik-forward-auth-mgmt) Cluster was created successfully! Get the dashboard details with: nkp get dashboard --kubeconfig="/home/gowatana/nkpnai.conf" gowatana@nkp-work-02:~$
3. kubeconfig ファイルの設置
kubectl などで Kubernetes クラスタに接続できるように、生成された kubeconfig ファイルを、デフォルトで参照されるパスに設置しておきます。
$HOME/.kube ディレクトリを作成します。
$ mkdir $HOME/.kube
そして、kubeconfig ファイルを設置します。
$ cp $HOME/nkpnai.conf $HOME/.kube/config
nkp get clusters コマンドで、作成された NKP クラスタを確認しておきます。
gowatana@nkp-work-02:~$ nkp get clusters -A WORKSPACE NAME KUBECONFIG STATUS kommander-workspace host-cluster kommander-self-attach-kubeconfig Joined
Kubernetes クラスタのノードは、kubectl で確認できます。
gowatana@nkp-work-02:~$ kubectl get nodes --kubeconfig=/home/gowatana/nkpnai.conf NAME STATUS ROLES AGE VERSION nkpnai-d9vzg-h5cbv Ready control-plane 31h v1.34.3 nkpnai-d9vzg-km4cq Ready control-plane 31h v1.34.3 nkpnai-d9vzg-pk5z7 Ready control-plane 31h v1.34.3 nkpnai-md-0-7pmtn-lsqps-72dtl Ready <none> 31h v1.34.3 nkpnai-md-0-7pmtn-lsqps-hsxfl Ready <none> 31h v1.34.3 nkpnai-md-0-7pmtn-lsqps-rst8k Ready <none> 31h v1.34.3 nkpnai-md-0-7pmtn-lsqps-tcrtj Ready <none> 31h v1.34.3
4. NKP Dashboard へのアクセス
NKP Dashboard の接続情報は、nkp get dashboard コマンドで確認できます。ユーザー名はランダム生成で、今回は「heuristic_vaughan」になっています。
gowatana@nkp-work-02:~$ nkp get dashboard Username: heuristic_vaughan Password: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX URL: https://10.1.7.121/dkp/kommander/dashboard
確認した NKP Dashboard の URL に、Web ブラウザでアクセスします。

ユーザー名とパスワードを入力して、「Log In」をクリックします。

今回はラボ環境なので、Pulse は無効にしておきます。「Do Not Enable」をクリックします。

「Continue」をクリックします。

これで、NKP Dashboard にアクセスできるようになりました。

つづく。
