0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes 1.36: SIG Cluster Lifecycle の変更内容

0
Last updated at Posted at 2026-05-21

Kubernetes 1.36 の CHANGELOG から SIG Cluster Lifecycle の取り組みについてまとめました。

:warning: アップグレード時の注意事項

  • なし

:dizzy: 項目ごとの変更

:arrow_left: 依存

  • Kubernetes が利用する etcd クライアントライブラリを v3.6.8 に更新しました。(#137225, @joshjms)

:do_not_litter: 非推奨

  • なし!

:construction_site: APIの変更

  • ACTION REQUIRED: kubeadm に組み込まれていた flex-volume のサポートが削除されました。SIG Storage は v1.22 以降、flex-volume からの移行を推奨しており、ユーザーには flex-volume の使用をやめるよう案内されていました。kubeadm ユーザーが引き続きこの機能を使用したい場合は、v1.36 へアップグレードする前に、以下を行う必要があります。
    • distroless ベースではない KCM 用のカスタムイメージを用意する
    • KCM に --flex-volume-plugin-dir フラグを渡す
    • kubeadm の extraVolumes 機構を使って、KCM の static Pod/usr/libexec/kubernetes/kubelet-plugins/volume/exec ディレクトリをマウントする
      以前は、ユーザーがこのフラグを渡した場合、kubeadm が自動的にこのディレクトリをマウントしていました。(#136423, @neolit123)

一瞬、KCM ってなんだ?と思ってしまった。「Kube-controller-manager」

  • manifest ベースの Admission Control 設定の alpha サポートが追加されました(KEP-5793)。
    ManifestBasedAdmissionControlConfig フィーチャーゲートを有効にすると、admission webhook と CEL ベースのポリシーを、AdmissionConfigurationstaticManifestsDir フィールドを通じて、ディスク上の静的 manifest ファイルから読み込めるようになります。これらのポリシーは API server の起動時点から有効になり、etcd が利用できない状態でも維持されます。また、API 経由で管理される Admission 関連リソースが変更されないよう保護できます。 (#137346, @aramase)

Admission Control の設定を Kubernetes API オブジェクトではなく、kube-apiserver のローカルディスク上の manifest から読み込めるようにする機能。

  • API Server の起動時からポリシーを有効化できる。
  • 十分な権限を持つユーザーが Admission 関連リソース自体を変更・削除してしまう、という問題を防ぐ。
  • DRA: device taints and tolerations(KEP #5055)が beta に昇格しました。ResourceSlice における DeviceTaints のサポートはデフォルトで有効になっています。DeviceTaintRules のサポートを利用するには、resource.k8s.io/v1beta2 を有効にし、さらに DeviceTaintRules フィーチャーゲートを有効にする必要があります。(#137170, @pohly)

  • パラメータを適切にフォーマットできていなかった一部のログ出力呼び出しを修正しました。(#137108, @pohly)

  • DRA の DRAPrioritizedList 機能が GA に昇格しました。(#136924, @troychiu)

  • NodeDeclaredFeatures が beta に昇格しました。(#136042, @pravk03)

  • 複数の component-base メトリクス(kubernetes_build_info, rest_client_requests_total, rest_client_request_duration_seconds, running_managed_controllers)の安定性レベルが Alpha から Beta に昇格しました。これにより、これらのメトリクスを利用する側に対して、API とラベルの安定性についてより強い保証が提供されます。(#136154, @bhope)

  • DRA の consumable capacity 機能を制御する DRAConsumableCapacity フィーチャーゲートが、デフォルトで有効になりました。(#136611, @sunya-ch)

  • kubelet、kube-scheduler、cloud controller manager、kube-proxy の /configz エンドポイントを更新し、APIVersion フィールドと Kind フィールドもシリアライズするようにしました。また、内部型ではなく公開型を使用するようにしました。(#136044, @SergeyKanzhelev)

各コンポーネントの設定値を返す /configz なんてあったんですね。

:unicorn: 機能

  • 新しい RuntimeService のストリーミング RPC(StreamPodSandboxes, StreamContainers, StreamContainerStats, StreamPodSandboxStats, StreamPodSandboxMetrics)と、新しい ImageService のストリーミング RPC(StreamImages)が追加されました。(#136987, @bitoku)

gRPC の 16MB メッセージサイズ制限に当たる問題を回避するために追加されたらしい。

  • Kubernetes のストリーミング転送処理と CRI ストリーミングサーバーコード向けに、新しい staging module として k8s.io/streamingk8s.io/cri-streaming が導入されました。k8s.io/apimachinery/pkg/util/httpstream(spdy と wsstream を含む)は、k8s.io/streaming を内部的に利用する非推奨の互換ラッパーとして引き続き利用可能です。また、抽出された SPDY roundtripper は、NO_PROXY / no_proxy における CIDR マッチングの挙動を維持します。 (#137298, @dims)

  • kubeadm: kubeadm config validate--allow-deprecated-api フラグが追加されました。デフォルトでは、このコマンドは非推奨 API に対して警告を出力しますが、このフラグが指定された場合は警告を出力しません。加えて、kubeadm config migrate および kubeadm config validate コマンドに不足していた v1beta4UpgradeConfiguration サポートが追加されました。(#135148, @neolit123)

  • kubeadm: Node オブジェクトの patch 処理の挙動を変更し、未知の、つまり allowlist に含まれていない API エラーが発生した場合でも、早期終了せず、polling の期間内でリトライするようにしました。(https://github.com/kubernetes/kubernetes/pull/135776), @neolit123)

エラーが起きてもリトライする変更は kubeadm でよく見る修正。

  • kubeadm: kubeadm upgradeCreateJob preflight check のタイムアウトを 1 分に延長しました。これにより、Windows worker node が preflight check を実行するための時間に余裕ができます。このチェックでは pause イメージを使用します。そのため、イメージの pull に時間がかかる場合は、worker 上で kubeadm config images pull --kubernetes-version TARGET を実行して事前にイメージを pull するか、--ignore-preflight-errors を指定してこの preflight check をスキップできます。(#136273, @neolit123)

以前のタイムアウトは15秒で preflight check を行なっていたため、特にWindowsの pause イメージが大きく、pullする時間がかかって失敗することが多かったようです。

  • kubeadm: ControlPlaneKubeletLocalMode フィーチャーゲートを削除しました。この機能は v1.35 で GA に昇格し、有効状態に固定されていました。(#135773, @neolit123)

  • kubeadm: preflight checkContainerRuntimeVersion は、インストールされているコンテナランタイムが RuntimeConfig gRPC メソッドをサポートしているかを検証するようになりました。v1.37 より古い kubelet バージョンでは、preflight warning を返します。(#136898, @carlory)

v1.37 からコンテナランタイムが RuntimeConfig gRPC メソッドをサポートしていることが要件になりそう?

  • kubeadm: kubeadm join を使用する際、--v=1 以上のログ詳細度を指定している場合は、discovery に使用された CA 証明書の情報を出力するようになりました。(#137102, [@sivchari]

:book: Documentation

  • なし!

:scream: テスト失敗

  • なし!

:bug: バグ、もしくはリグレッション

  • Server-Side Apply と、client-goExtract{TypeName}() および Extract{TypeName}From() 関数において、空の配列や map が誤って「存在しないもの」として扱われていた問題を修正しました。また、associative list 内の atomic 要素が誤って重複していた問題も修正しました。(#135391, @jpbetz)

「空だが明示的に存在する値」と「フィールドが存在しない状態」は結構違うので違うので直ってよかった。
Field Manger とかにも影響ありそう。

  • kubeadm: etcdlearner memberclient traffic を処理しないため、learner memberclient URLc.Endpoints に追加しないよう kubeadm を修正しました。(#137251, @pacoxu)

  • kubeadm: kubeadm join 実行時に、etcdlearner member が起動したことを確認してから voting member へ昇格するように変更しました。(#136014, @SataQiu)

  • kubeadm: /var/lib/kubelet/kubeadm-flags.env ファイルの内容が KUBELET_KUBEADM_ARGS="" の場合に、kubeadm upgrade が失敗するバグを修正しました。(#136127, @carlory)

  • kubeadm: reset 時に /var/lib/kubelet 配下の peer mount をアンマウントする際、EINVAL エラーを無視するようにしました。(#137494, @fuweid)

EINVAL は Linux syscall で返る “invalid argument” 系のエラーです。アンマウント処理では、対象がすでにマウントポイントではない、あるいは unmount 対象として扱えない状態になっている場合などに返ることがあります。

kubeadm reset 中に無視できるエラーは無視することで、kubeadm reset を中断しないようにする修正のようです。

  • kubeadm: extraArgs を使ってユーザー指定の上書きを適用する際、生成される引数リストを英数字順にソートしないようにしました。ソートされるのはデフォルト引数のみで、ユーザー指定の上書きは指定された順序を保持します。これにより、kube-apiserver--service-account-issuer のように、順序が意味を持つフラグをより細かく制御できるようになります。(#135400, @neolit123)

  • pause イメージを v3.10.2 に更新しました。(#138199, @neolit123)

Windows pause イメージのベース を mcr.microsoft.com/oss/v2/kubernetes/windows-pause-image-base:v0.4.1 に更新し、Windows Server 2025 / ltsc2025 をサポート。今回も Linux は関係なし。

  REGISTRY ?= staging-k8s.gcr.io
  IMAGE = $(REGISTRY)/pause
  
- TAG ?= 3.10.1
+ TAG ?= 3.10.2
  REV = $(shell git describe --contains --always --match='v*')
  
  # Architectures supported: amd64, arm, arm64, ppc64le and s390x
  @@ -32,7 +32,7 @@ OUTPUT_TYPE ?= docker
  BASE.linux := scratch
  # Source for windows pause image base is located at https://github.com/microsoft/windows-pause-image-base
  # BASE.windows includes separate manifests per os.version.
- BASE.windows := mcr.microsoft.com/oss/kubernetes/windows-pause-image-base:v0.4.1@sha256:37cc10768383b55611d724a05eb18564cb5184c89b0c2faa7d4eff63475092df
+ BASE.windows := mcr.microsoft.com/oss/v2/kubernetes/windows-pause-image-base:v0.4.1@sha256:ba474944e82cac8913e0a402c7727c35d469977026b636bf460f0d52112c4e4f
  BASE := ${BASE.${OS}}
  
  JQ_IMAGE := ghcr.io/jqlang/jq@sha256:a186dcd84a1e28bb48cdf3d7768b890d08621a87bb651fadb7db6815a6bf5ad5

:goat: その他(クリーンアップまたはFlake)

  • kubeadm: アップグレード時に /var/lib/kubelet/kubeadm-flags.env から kubelet フラグ --pod-infra-container-image を削除する cleanup 処理を取り除きました。この cleanup は、v1.35 へアップグレードする際に必要だったものです。(#135807, [@carlory]

  • kubeadm: etcd のバージョンが v3.6.0 未満の場合に使用していた、非推奨の etcd フラグ --experimental-initial-corrupt-check--experimental-watch-progress-notify-interval の使用を削除しました。(#135701, @neolit123)

  • cri-api クライアントは、初期化時に logger ではなく context を受け取るようになりました。(#137248, @SergeyKanzhelev)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?