Kubernetes

Kubernetes上でGPU活用するAI/MLワークロードの前提条件と導入ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

AI/ML ワークロードの前提条件と環境設計

AI/ML 向けに GPU を活用した Kubernetes クラスタを構築する際、ハードウェア・ソフトウェアの相性が崩れるとノード起動エラーやパフォーマンス低下が頻発します。本セクションでは GPU ドライバ/カーネル互換表CNI/CSI の相性チェック を中心に、Azure AKS と Google GKE の両環境で共通して確認すべきポイントを整理します。


GPU ハードウェア・ドライバ・カーネル要件 {#gpu-requirements}

GPU デバイスは OS カーネルと NVIDIA ドライバの組み合わせが正しくないと nvidia-device-plugin が起動できません。以下の表は 2026‑06 時点で公式に掲載されているサポートマトリクス(NVIDIA Driver Documentation・Kubernetes Release Notes)を元に作成しました。

GPU シリーズ 推奨 NVIDIA ドライバ (≥) 必要 Linux カーネル (≥) 対応 Kubernetes バージョン (≥)
A100 40 GB / 80 GB 525.85.12 5.10 1.26
RTX 6000 Ada 525.60.11 5.15 1.25
T4 525.60.07 5.8 1.24

確認手順

更新チェック手順
1. NVIDIA の公式ドキュメント (https://docs.nvidia.com/datacenter/tesla/driver-releases/) にアクセスし、表の「Latest Production Branch」欄を確認。
2. Kubernetes のリリースノートで nvidia-device-plugin がサポートしているバージョン範囲を検索(例: “GPU support”)。
3. 必要に応じて helm upgrade --install gpu-operator … -f values.yaml 前に driver.version を最新に合わせる。


CNI/CSI の互換性チェック {#cni-csi}

AI/ML ワークロードは大容量データの入出力が頻繁です。そのため ネットワーク MTUストレージプラグインの GPU 対応状況 を事前に検証します。

CNI の留意点

プロバイダー デフォルト MTU* 推奨設定 備考
Azure CNI(AKS) 1500 (VNet‐Overlay が有効な場合は 1450) --set azure.cni.mtu=1500 で明示的に指定可 MTU はノードの OS と同一ネットワークインタフェースの設定と整合させる必要があります
GKE VPC‑Native(Calico ベース) 1460 〜 1480(GKE のデフォルト) --max-pods-per-node=30 が推奨される根拠は Pod CIDR サイズIP アドレスプール にあります 詳細は GKE ドキュメントの “Maximum Pods per node” を参照

*※2026‑06 の公式情報では Azure CNI は 1500 が標準です。Overlay ネットワークを利用すると自動で 1450 にフォールバックします。

CSI の留意点

プラグイン GPU 対応ステータス(2026‑06) 推奨設定
NVIDIA GPU Operator(nvidia-fs) ✅ 完全対応(ReadWriteMany が利用可能) storageClassName: nvidia-fs を PVC に指定
Azure Disk CSI ✅ GPU ノードでも問題なし fsGroupPolicy: FilesecurityContext.fsGroup の明示が必須
GCE Persistent Disk CSI ✅ 同上 同上

検証手順
1. クラスタ作成直後に kubectl get csidrivers でプラグインのバージョンを確認。
2. 試験用 PVC を作成し、GPU デプロイメントにマウントして df -h が期待通り表示されるかチェック。


NVIDIA GPU Operator の導入とカスタマイズ

GPU デバイス管理は手動で行うよりも NVIDIA GPU Operator に委任した方が保守コストを大幅に削減できます。本章では Helm によるインストール手順と、kustomize で実装するリソース制限・Node Affinity の具体例を示します。

Helm Chart を用いたインストール手順

ポイント:公式 Helm リポジトリは https://helm.ngc.nvidia.com/nvidia(2026‑06 時点)です。URL が変更された場合は NVIDIA NGC の “Helm Charts” ページで最新版を取得してください。

バージョン固定の重要性

driver.version を明示しない場合、Operator が「最新」ドライバを取得しますが、クラスターで使用しているカーネルと不一致になるケースがあります。CI パイプラインで nvidia-smi --query-gpu=driver_version の出力を検証し、期待値と食い違う場合はデプロイを失敗させるようにしましょう。


kustomize でのリソース制限・Node Affinity

大規模環境では Helm の上書きだけでは足りません。kustomize を併用することで GitOps に適した粒度で設定を管理できます。

kustomization.yaml

適用例


Azure AKS と Google GKE における AI ワークロード デプロイフロー

AKS と GKE はそれぞれ独自の GPU 機能とスケーリングメカニズムを提供しています。ここでは 公式ドキュメントに基づくベストプラクティス を示し、実装時に陥りやすい誤設定を回避します。

AKS での AI Copilot アプリ デプロイ手順

リンク検証:Azure の公式ページは https://learn.microsoft.com/ja-jp/azure/aks/ai-ml-overview(2026‑06 時点)です。リンク切れに備えて、同ページを PDF で保存または Internet Archive のスナップショット URL を併記しておくと安全です。

手順概要

  1. GPU ノードプール付き AKS クラスタ作成

bash
az aks create \
--resource-group rg-ai \
--name aks-gpu-cluster \
--node-vm-size Standard_NC6s_v3 \
--enable-addons monitoring \
--kubernetes-version 1.27.3 \
--generate-ssh-keys

  1. GPU ノードプールの追加--aks-custom-headers は廃止済み)

bash
az aks nodepool add \
--resource-group rg-ai \
--cluster-name aks-gpu-cluster \
--name gpupool \
--node-count 3 \
--node-vm-size Standard_NC6s_v3 \
--node-labels accelerator=nvidia-a100 \
--enable-node-public-ip false # 必要に応じて設定

  1. GPU Operator のデプロイ(前節参照)

  2. AI Copilot デモアプリのマニフェスト適用

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: copilot-deploy
spec:
replicas: 2
selector:
matchLabels:
app: copilot
template:
metadata:
labels:
app: copilot
spec:
containers:
- name: copilot
image: mcr.microsoft.com/azure-cognitive-services/copilot:latest
resources:
limits:
nvidia.com/gpu: 1 # GPU リクエスト
nodeSelector:
accelerator: nvidia-a100

  1. LoadBalancer による公開

bash
kubectl expose deployment copilot-deploy \
--type LoadBalancer --port 80 --target-port 8080

確認ポイントkubectl get pods -o wideSTANDARD_NC6s_v3 ノードに Pod がスケジューリングされているか必ずチェックしてください。


GKE のマネージド GPU クラスタと自動スケーリング設定

リンク検証:Google の公式ガイドは https://cloud.google.com/kubernetes-engine/docs/tutorials/deploying-gpus?hl=ja(2026‑06)。同様に、https://web.archive.org/web/*/https://cloud.google.com/... を併記しておくとリンク切れ対策になります。

手順概要

  1. GPU 対応クラスタ作成

bash
gcloud container clusters create gke-gpu-cluster \
--zone us-central1-a \
--release-channel rapid \
--machine-type n1-standard-8 \
--accelerator type=nvidia-tesla-t4,count=1 \
--node-labels accelerator=nvidia-t4 \
--enable-ip-alias

  1. GPU ドライバは自動インストール
    --accelerator を指定すると GKE が提供する cos-gpu イメージにドライバが組み込まれるため、追加作業は不要です。

  2. GPU 用 HPA(カスタムメトリクス)設定

yaml
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: gpu-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: model-server
minReplicas: 1
maxReplicas: 5
metrics:
- type: Pods
pods:
metric:
name: nvidia_gpu_utilization
target:
type: AverageValue
averageValue: "70"

  1. KServe によるモデルサービング例

yaml
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: t5-translation
spec:
predictor:
tensorflow:
storageUri: gs://my-bucket/models/t5/
resources:
limits:
nvidia.com/gpu: 1
nodeSelector:
accelerator: nvidia-t4

ポイント:GPU の使用率が 70 % を超えると HPA が自動でスケールアウトします。メトリクスは nvidia-dcgm-exporter(下記モニタリング節)で提供されます。


モデルサービングと永続化ストレージ構成

GPU ワークロードでは 高速推論大量データの永続化 を同時に満たす必要があります。本章では KServe のベストプラクティスと、NVIDIA が提供する nvidia-fs CSI ドライバを組み合わせた永続ボリューム構成をご紹介します。

KServe による GPU 推論サービスのベストプラクティス

項目 推奨設定 理由
GPU リクエスト nvidia.com/gpu: 1(モデルサイズに応じて増減) Pod が GPU ノードにスケジューリングされることを保証
Node Affinity nodeSelector または affinity.nodeAffinity にラベル付与 ラベルが無いノードで起動するとデバイスプラグインエラーになるため
永続化 URI Cloud Storage (gs://, https://) か CSI PVC(下記) 大規模モデルはローカル SSD よりも外部ストレージの方がスケーラビリティが高い
フレームワーク固有フラグ 例: TensorFlow の TF_FORCE_GPU_ALLOW_GROWTH=true メモリ確保失敗による OOM を防止

NVIDIA nvidia‑fs CSI と PVC(ReadWriteMany)構成

nvidia-fs は GPU ノード上で 高速かつ共有可能 なファイルシステムを提供します。以下は典型的な永続化パイプラインです。

  1. CSI ドライバのインストール確認(Operator が自動デプロイ)

bash
kubectl get pods -n gpu-operator -l app=nvidia-fs-csi-driver

  1. PVC 作成例(ReadWriteMany)

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dataset-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 500Gi
storageClassName: nvidia-fs

  1. データパイプライン(Kubeflow Pipelines の例)

python
from kfp import dsl

@dsl.pipeline(name='Dataset Sync')
def dataset_sync():
sync = dsl.ContainerOp(
name='sync-data',
image='alpine:3.18',
command=['sh', '-c'],
arguments=[
'aws s3 sync s3://my-dataset /mnt/data && echo "Sync completed"'
],
pvolumes={'/mnt/data': dsl.PipelineVolume(pvc='dataset-pvc')}
)

  1. 推論 Pod でのマウント

yaml
spec:
containers:
- name: predictor
image: my-model:latest
volumeMounts:
- mountPath: /models/data
name: dataset-volume
volumes:
- name: dataset-volume
persistentVolumeClaim:
claimName: dataset-pvc

ポイントReadWriteMany がサポートされるため、バッチ推論とリアルタイム推論が同一データセットを同時に参照できます。


運用・モニタリング・CI/CD と更新戦略

GPU ワークロードは リソースの健全性迅速なロールバック が成功の鍵です。本節では Prometheus/Grafana によるメトリクス収集、Argo CD を活用した GitOps パイプライン、そして安全なローリングアップデート手順をまとめます。

GPU メトリクス監視と Alertmanager 設定

  1. DCGM Exporter の Helm デプロイ(2026‑06 の公式 Chart)

bash
helm repo add dcgm https://nvidia.github.io/dcgm-exporter
helm repo update
helm install dcgm-exporter dcgm/dcgm-exporter \
-n monitoring --set serviceMonitor.enabled=true

  1. ServiceMonitor(Prometheus が自動検出)

yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: dcgm-sm
labels:
release: prometheus
spec:
selector:
matchLabels:
app.kubernetes.io/name: dcgm-exporter
endpoints:
- port: metrics
interval: 30s

  1. Grafana ダッシュボードインポート
    Dashboard ID 12239(NVIDIA GPU Metrics)を使用し、主要パネルに GPU Utilization, Memory Usage, Temperature を表示。

  2. Alertmanager ルール例

yaml
groups:
- name: gpu-alerts
rules:
- alert: HighGpuUtilization
expr: avg_over_time(nvidia_gpu_utilization[5m]) > 85
for: 3m
labels:
severity: warning
annotations:
summary: "GPU Utilization が高すぎます"
description: "{{ $labels.instance }} の GPU 使用率が {{ $value }}% に達しています。"

ポイント:DCGM Exporter は NVIDIA ドライバと同一バージョンで動作する必要があります。Driver のアップデート時は Exporter も同様にバージョン合わせを忘れずに。


Argo CD による GitOps とロールバック手順

  1. Argo CD のインストール(公式マニフェスト)

bash
kubectl create namespace argocd
kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

  1. リポジトリ構成例(GitOps ベストプラクティス)

repo/
├─ base/
│ └─ kustomization.yaml # GPU Operator・CSI など共通リソース
├─ overlays/
│ ├─ prod/
│ │ └─ kustomization.yaml # 本番用パラメータ(replicas, limits)
│ └─ dev/
│ └─ kustomization.yaml # 開発環境向け
└─ apps/
└─ inference-service.yaml # KServe 定義

  1. Argo CD アプリケーション作成(CLI)

bash
argocd app create ai-inference \
--repo https://github.com/your-org/k8s-ai.git \
--path apps \
--dest-server https://kubernetes.default.svc \
--dest-namespace kserve \
--sync-policy automated \
--auto-prune \
--self-heal

  1. ロールバック手順(CLI または UI)

bash
# 直前のリビジョンへ戻す例
argocd app rollback ai-inference --revision HEAD~1

  1. メンテナンスウィンドウ設定例sync-options

yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
- PruneLast=true

ポイントselfHeal:true により、GPU ドライバや Operator の一時的なドリフトが自動で復旧されます。


チェックリストと次のアクション

以下は本記事全体で触れた項目を網羅した Kubernetes AI ワークロード デプロイチェックリスト です。CI パイプラインやレビュー時に活用してください。

カテゴリ チェック項目 完了状態
前提条件 GPU ハードウェアとドライバの互換表を最新化(手順参照)
CNI / CSI のバージョン整合性をテスト
GPU Operator values.yaml に正しい driver.version を設定
kustomize でリソース上限と Node Affinity を適用
AKS / GKE クラスタ作成時に GPU ノードプールを追加(--aks-custom-headers 削除)
Azure の AI Copilot マニフェストを適用し、Pod が GPU ノードへ配置されているか確認
GKE で HPA カスタムメトリクス (nvidia_gpu_utilization) を有効化
サービング KServe InferenceService に GPU リクエストと Affinity を記述
永続化 nvidia-fs CSI と PVC (ReadWriteMany) を作成し、Pod が正しくマウントできるか検証
モニタリング DCGM Exporter + ServiceMonitor の導入、Grafana ダッシュボードが表示されているか確認
Alertmanager で HighGpuUtilization アラートが機能することをテスト
CI/CD Argo CD にリポジトリ登録・自動同期設定
更新戦略 ローリングアップデート手順とメンテナンスウィンドウを策定、ロールバックが成功するかシミュレーション

次のステップ:上記チェックリストをもとにリポジトリ(例: github.com/your-org/k8s-ai)へクローンし、環境ごとの values.yamlkustomization.yaml を編集してローカルで動作確認してください。実装中の疑問や成功事例は社内技術コミュニティ(Slack #ai‑k8s)で共有すると、ナレッジが蓄積されて全体の品質向上につながります。


本稿のリンク・バージョン情報は 2026‑06 時点の公式資料を基に作成しています。将来的な変更に備えて、各ベンダーの「Release Notes」ページや「Version Compatibility Matrix」を定期的(最低四半期)で確認し、表やスクリプトを更新してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Kubernetes