SJ blog
devops
A

信頼度ランク

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 NamespaceshostUsers: 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 に対して execlogs が可能になってしまう。

これまでの認可モデルは「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 GAkubelet API の最小権限化
ポリシーMutating Admission Policies GAWebhook サーバー不要のポリシー管理
AI/MLDRA 成熟GPU の効率的な動的割り当て

Kubernetes v1.36「ハル」は「セキュリティを後付けで足す」時代から「セキュリティがデフォルト」の時代への移行を示す重要なリリースだ。特に User Namespaces の GA は、長年の懸案だったコンテナ特権問題に対する構造的な解答であり、新規クラスタでは積極的に有効化を検討したい。


参考リンク