NKP の Kubernetes クラスタに、Nutanix Enterprise AI(NAI)2.6 を展開してみます。今回は、NAI の前提要件となるソフトウェアを、NKP クラスタにインストールします。NKP の管理クラスタにデフォルトでインストールされているものを除き、NVIDIA GPU Operator、Envoy Gateway、KServe、OpenTelemetry Operator のインストールします。
前回はこちら。
今回の内容です。
- 1. NVIDIA GPU Operator のインストール
- 2. Envoy Gateway のインストール
- 3. KServe のインストール
- 4. OpenTelemetry Operator のインストール
ドキュメントでは、下記のあたりです。
1. NVIDIA GPU Operator のインストール
NAI では GPU を利用するので、Kubernetes クラスタに GPU Operator をインストールしておきます。
なお、今回はこの時点では GPU ノード プールを追加していません。NAI は AI モデルによっても CPU でもエンドポイントを起動できるので、あえてこの時点では、Kubernetes クラスタに GPU ノードが存在しない状態で環境構築を進めてみます。
NKP Dashboard で、「Management Cluster Workspace」→「Applications」を開きます。

「NVIDIA」などの文字列で検索すると、「NVIDIA GPU Operator」が見つかるので、パネル右下のボタン →「Enable」をクリックします。

デフォルトのまま「Enable」をクリックします。

しばらく待つと、「Status」タブにある App Status が、「Deployed」になります。

さきほどの「Applications」画面に表示されるパネルは、右上の表示が「Enabled」になります。

2. Envoy Gateway のインストール
今回は、Technology Preview の AI Gateway モードでインストールしてみます。
まず、Envoy Gateway の CRD をインストールします。
helm template eg oci://docker.io/envoyproxy/gateway-crds-helm \ --version v1.6.3 \ --set crds.gatewayAPI.enabled=true \ --set crds.envoyGateway.enabled=true \ | kubectl apply --server-side --force-conflicts -f -
YAML ファイルを用意します。
eg-config-for-gateway-mode.yaml
Envoy Gateway をインストールします。
helm upgrade --install eg oci://docker.io/envoyproxy/gateway-helm \ --version v1.6.3 \ -n envoy-gateway-system \ --create-namespace \ --skip-crds \ -f ./eg-config-for-gateway-mode.yaml
実際にコマンドを実行すると、下記のようになります。
gowatana@nkp-work-02:~$ helm upgrade --install eg oci://docker.io/envoyproxy/gateway-helm \ --version v1.6.3 \ -n envoy-gateway-system \ --create-namespace \ --skip-crds \ -f ./eg-config-for-gateway-mode.yaml Release "eg" does not exist. Installing it now. Pulled: docker.io/envoyproxy/gateway-helm:v1.6.3 Digest: sha256:6dca101fdc0d41c702c1070eb42db119a2768a33388ba28041ae615cbe262aaf NAME: eg LAST DEPLOYED: Fri Mar 27 19:28:10 2026 NAMESPACE: envoy-gateway-system STATUS: deployed REVISION: 1 DESCRIPTION: Install complete TEST SUITE: None NOTES: ************************************************************************** *** PLEASE BE PATIENT: Envoy Gateway may take a few minutes to install *** ************************************************************************** Envoy Gateway is an open source project for managing Envoy Proxy as a standalone or Kubernetes-based application gateway. Thank you for installing Envoy Gateway! 🎉 Your release is named: eg. 🎉 Your release is in namespace: envoy-gateway-system. 🎉 To learn more about the release, try: $ helm status eg -n envoy-gateway-system $ helm get all eg -n envoy-gateway-system To have a quickstart of Envoy Gateway, please refer to https://gateway.envoyproxy.io/latest/tasks/quickstart. To get more details, please visit https://gateway.envoyproxy.io and https://github.com/envoyproxy/gateway.
この時点では、envoy-ratelimit の Pod 起動でエラーになります。このエラーは nai-system Namespace の redis-centinel サービスが存在しないことが原因ですが、このあと NAI(nai-core)をインストールすると解消されます。
gowatana@nkp-work-02:~$ kubectl get pod -n envoy-gateway-system NAME READY STATUS RESTARTS AGE envoy-gateway-9b8b654fd-wkhns 1/1 Running 0 2m14s envoy-ratelimit-6b4657bddd-xsbdj 0/1 CrashLoopBackOff 4 (20s ago) 2m3s
3. KServe のインストール
まず、KServe の CRD をインストールします。
helm upgrade --install kserve-crd oci://ghcr.io/kserve/charts/kserve-crd \ --version v0.15.0 \ -n kserve \ --create-namespace \ --wait
NAI のエンドポイントを実装するための、inferenceservices リソースなどの定義が追加されました。
gowatana@nkp-work-02:~$ kubectl api-resources --api-group=serving.kserve.io NAME SHORTNAMES APIVERSION NAMESPACED KIND clusterservingruntimes serving.kserve.io/v1alpha1 false ClusterServingRuntime clusterstoragecontainers serving.kserve.io/v1alpha1 false ClusterStorageContainer inferencegraphs ig serving.kserve.io/v1alpha1 true InferenceGraph inferenceservices isvc serving.kserve.io/v1beta1 true InferenceService localmodelcaches serving.kserve.io/v1alpha1 false LocalModelCache localmodelnodegroups serving.kserve.io/v1alpha1 false LocalModelNodeGroup localmodelnodes serving.kserve.io/v1alpha1 false LocalModelNode servingruntimes serving.kserve.io/v1alpha1 true ServingRuntime trainedmodels tm serving.kserve.io/v1alpha1 true TrainedModel
KServe をインストールします。エラーになった場合は、少し待ってから再実行するとうまくいくことがあります。
helm upgrade --install kserve oci://ghcr.io/kserve/charts/kserve \ -n kserve \ --version v0.15.0 \ --create-namespace \ --wait \ --set kserve.controller.deploymentMode=RawDeployment \ --set kserve.controller.gateway.disableIngressCreation=true
これで、Pod が起動されました。
gowatana@nkp-work-02:~$ kubectl get pod -n kserve NAME READY STATUS RESTARTS AGE kserve-controller-manager-69b6dbf9cf-5dg2x 2/2 Running 0 2m18s
kserve-controller-manager-service などの Service も起動されます。
gowatana@nkp-work-02:~$ kubectl get svc -n kserve NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kserve-controller-manager-service ClusterIP 10.109.170.2398443/TCP 82s kserve-webhook-server-service ClusterIP 10.105.14.30 443/TCP 82s
4. OpenTelemetry Operator のインストール
Helm で、opentelemetry-operator をインストールします。
helm upgrade --install opentelemetry-operator opentelemetry-operator \ --repo https://open-telemetry.github.io/opentelemetry-helm-charts \ --version=0.102.0 \ -n opentelemetry \ --create-namespace \ --wait
下記のように Pod が起動されます。
gowatana@nkp-work-02:~$ kubectl -n opentelemetry get pod -l "app.kubernetes.io/instance=opentelemetry-operator" NAME READY STATUS RESTARTS AGE opentelemetry-operator-5cc46c4b45-flksk 2/2 Running 0 56s
そして、下記のようにリソース定義が追加されます。
gowatana@nkp-work-02:~$ kubectl api-resources --api-group=opentelemetry.io NAME SHORTNAMES APIVERSION NAMESPACED KIND instrumentations otelinst,otelinsts opentelemetry.io/v1alpha1 true Instrumentation opampbridges opentelemetry.io/v1alpha1 true OpAMPBridge opentelemetrycollectors otelcol,otelcols opentelemetry.io/v1beta1 true OpenTelemetryCollector targetallocators opentelemetry.io/v1alpha1 true TargetAllocator
つづく。
