信頼度ランク
| S | 公式ソース確認済み |
| A | 成功実績多数・失敗例少数 |
| B | 賛否両論 |
| C | 動作未確認・セキュリティリスク高 |
| Z | 個人所感 |
Kubernetes v1.36「ハル」——セキュリティデフォルト強化とAIワークロード対応が同時に成熟した70件の強化まとめ
Kubernetes v1.36(2026年4月22日リリース、テーマ名「ハル」)はUser Namespaces・Fine-Grained Kubelet API Authorization・Mutating Admission PoliciesがGA。DRAによるAI/MLワークロード向け改善も含む70件の強化。
一言結論
Kubernetes v1.36はセキュリティのデフォルトを大幅に引き締めた。User Namespaces GAによりコンテナ内root(uid 0)がホストのrootにマップされなくなり、Fine-Grained Kubelet API AuthorizationでkubeletのAPIが最小権限で保護される。DRAの改善でGPU等AI/MLリソースの動的割り当ても実用域に入った。
何が起きたか
2026年4月22日、Kubernetes プロジェクトが v1.36(コードネーム「ハル」) をリリースした。「ハル」は日本語で「晴れた春の空」を意味し、70件の強化(18件 GA・25件 Beta・25件 Alpha)を含む大きなリリースだ。
5月12〜13日には v1.36.1 パッチもリリースされ、本番環境では v1.36.1 以降を使うことが推奨される。
Kubernetes v1.36「ハル」基本情報:
リリース日: 2026年4月22日(v1.36.0)
パッチ: v1.36.1(2026年5月12〜13日)
強化件数: 70件
GA(Stable): 18件
Beta: 25件
Alpha: 25件
テーマ: セキュリティデフォルト強化 + AI/ML ワークロード成熟
公式ブログ: kubernetes.io/blog/2026/04/22/kubernetes-v1-36-release/
主要変更点1: User Namespaces が GA
何が変わったか
User Namespaces(hostUsers: false)がついに Stable(GA)に到達した。これは Kubernetes のセキュリティモデルを根本的に変える機能だ。
# v1.36 から本番利用推奨
apiVersion: v1
kind: Pod
metadata:
name: secure-pod
spec:
hostUsers: false # ← User Namespaces を有効化
containers:
- name: app
image: myapp:latest
securityContext:
runAsUser: 0 # コンテナ内では root として動く
# しかしホストでは非特権ユーザーにマップされる
なぜ重要か
これまでの問題:
Before(User Namespaces なし):
コンテナ内 uid 0 (root)
↕ マッピング: 1対1
ホスト uid 0 (root)
→ コンテナエスケープが成功すると、
そのままホストの root 権限を持ってしまう
After(User Namespaces 有効):
コンテナ内 uid 0 (root)
↕ マッピング: remapping
ホスト uid 100000〜165535(非特権ユーザー)
→ コンテナエスケープが成功しても、
ホスト上では限定的な非特権ユーザーとしか動けない
CVE の歴史を見ると、コンテナランタイムの脆弱性(runc・containerd など)によるコンテナエスケープが定期的に発見されている。User Namespaces はエスケープの被害を構造的に限定する多層防御として機能する。
主要変更点2: Fine-Grained Kubelet API Authorization が GA
kubelet の API は攻撃者にとって魅力的だった
kubelet は各ノード上で動き、Pod の起動・停止・ログ取得・exec などを制御する。kubelet の API(デフォルト TCP/10250)に到達できると、ノード上の全 Pod に対して exec や logs が可能になってしまう。
これまでの認可モデルは「kubelet API 全体を許可するか禁止するか」という粗い単位だった。
v1.36 の変更
# Fine-Grained Kubelet API Authorization(GA)
# kubelet の設定で API ごとに認可ルールを設定可能に
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
authorization:
mode: Webhook
webhook:
# API パス単位で RBAC に準じた認可が可能
# /exec, /logs, /portforward を個別に制限できる
cacheAuthorizedTTL: 5m
cacheUnauthorizedTTL: 30s
これにより、監視ツール(ログ取得)は許可するが exec は禁止するといった最小権限設計が kubelet レベルで実現できる。
主要変更点3: Mutating Admission Policies が GA
Mutating Admission Policies(CEL ベース)が GA になった。これにより、従来は Webhook サーバーの実装が必要だった Pod 設定の自動変更が、Kubernetes オブジェクトだけで記述できる。
# 例: 全 Pod に securityContext を自動注入するポリシー
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingAdmissionPolicy
metadata:
name: add-security-context
spec:
matchConstraints:
resourceRules:
- apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
operations: ["CREATE"]
mutations:
- patchType: ApplyConfiguration
applyConfiguration:
expression: |
Object{
spec: Object.spec{
securityContext: Object.spec.securityContext{
runAsNonRoot: true,
seccompProfile: Object.spec.securityContext.seccompProfile{
type: "RuntimeDefault"
}
}
}
}
# ポリシーを適用するバインディング
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingAdmissionPolicyBinding
metadata:
name: add-security-context-binding
spec:
policyName: add-security-context
matchResources: {} # 全 namespace に適用
Webhook サーバーの運用(TLS 管理・可用性確保・デプロイ)が不要になり、ポリシーを GitOps で管理しやすくなる。
AI/ML ワークロードの強化: DRA の成熟
Dynamic Resource Allocation(DRA) は GPU や特殊アクセラレータを動的に Pod に割り当てる仕組みで、v1.36 で複数の改善が入った。
# DRA を使った GPU リソース要求の例(概念)
apiVersion: resource.k8s.io/v1beta1
kind: ResourceClaim
metadata:
name: gpu-claim
spec:
resourceClassName: nvidia.com/gpu
parametersRef:
apiGroup: gpu.resource.k8s.io
kind: GpuParameters
name: training-gpu-params
---
apiVersion: v1
kind: Pod
spec:
resourceClaims:
- name: gpu
source:
resourceClaimName: gpu-claim
containers:
- name: trainer
image: pytorch-training:latest
resources:
claims:
- name: gpu
なぜ重要か
従来の limits.nvidia.com/gpu: 1 は Pod 単位で GPU を整数で予約する粗い方式だった。DRA では:
- GPU を MIG(Multi-Instance GPU) のスライス単位で割り当て
- 複数 Pod で GPU を時間共有
- トポロジー(同じノードの NVLink 接続 GPU を優先)を考慮した割り当て
- Pod 完了後のリソースクリーンアップの保証
AI/ML トレーニングや推論ワークロードが Kubernetes 上で動く組織にとって、GPU 利用効率が改善される。
その他の注目変更
| カテゴリ | 変更 | ステータス |
|---|---|---|
| セキュリティ | Bound Service Account Token の改善 | Beta → Stable |
| セキュリティ | etcd の暗号化キーローテーション簡素化 | Beta |
| ネットワーク | Gateway API v1.3 の統合改善 | Beta |
| ストレージ | VolumeAttributesClass(ストレージ QoS) | Beta |
| スケーリング | Pod スケジューリングの readiness gate 改善 | Beta |
| 運用 | kubectl debug の強化(コピー Pod の改善) | Beta |
v1.36 への移行で確認すること
# 現在のクラスタバージョン確認
kubectl version --short
# v1.36 で削除・変更された API の確認
kubectl-convert -f deprecated.yaml --output-version v1
# Admission Webhook が v1.36 の新しい認可モデルと互換か確認
kubectl get validatingwebhookconfigurations
kubectl get mutatingwebhookconfigurations
注意: Beta 機能のデフォルト有効化
v1.36 では複数の Beta 機能がデフォルト有効になった。アップグレード前に Release Notes を確認し、既存の Admission Webhook や PSP 代替ポリシー(OPA/Kyverno)との衝突がないかテストすること。
まとめ
| カテゴリ | 主要変更 | 意義 |
|---|---|---|
| セキュリティ | User Namespaces GA | コンテナエスケープの被害を構造的に限定 |
| セキュリティ | Fine-Grained Kubelet Auth GA | kubelet API の最小権限化 |
| ポリシー | Mutating Admission Policies GA | Webhook サーバー不要のポリシー管理 |
| AI/ML | DRA 成熟 | GPU の効率的な動的割り当て |
Kubernetes v1.36「ハル」は「セキュリティを後付けで足す」時代から「セキュリティがデフォルト」の時代への移行を示す重要なリリースだ。特に User Namespaces の GA は、長年の懸案だったコンテナ特権問題に対する構造的な解答であり、新規クラスタでは積極的に有効化を検討したい。