はじめに
このページではKubernetes v1.32 における SIG-Apps に関連する変更内容をまとめています。
SIG-AppsはKubernetesのワークロードの扱いなどの変更を主に扱っているため、他のSIGと関係する変更が多くなっております。
- 直近での過去の変更内容は以下になります。
SIG / SIG-Apps とは?
-
SIGとは?
- Special Interest Groups の略称
- 各 SIG には Subproject が与えられていて、 Subproject に対して独立して開発できるようになっています。
- Kubernetes は巨大なプロジェクトなので、各SIG 毎に担当(Subproject)が割り当てられていて、各SIG は独立して開発をしています。
- SIG 間を跨って話し合いをする必要が生じた場合は Working Groups が一時的に作られ、その枠組みの中で話し合うことになります。
-
SIG-Appsとは?
- Apps Special Interest Group の略称
- Kubernetes に対して、application を deploy したりすることに関することが対象。具体的には Pod, ReplicaSet, Deployments, DaemonSet, StatefulSet, Jobs, CronJob が対象。
- 詳細について知りたい方はこちらをご参照ください。
SIG-Apps 以外の SIG に関する変更は以下にまとめてありますので、合わせてご参照下さい。
注目の変更
Feature Gatesの中で今回Stageに変更のあったSig-Appsに関連する機能は以下になります。
- Pod
-
PodIndexLabel
:GA
https://github.com/kubernetes/enhancements/issues/4017
-
- StatefulSet
-
StatefulSetAutoDeletePVC
:GA
https://github.com/kubernetes/enhancements/issues/1847
-
- Job
-
JobManagedBy
:Beta
https://github.com/kubernetes/enhancements/issues/4368
-
- CronJob
-
CronJobsScheduledAnnotation
:GA
https://github.com/kubernetes/enhancements/issues/4026
-
1.32 では sig-apps に関する新機能はありませんでした。
v1.32 Release Notes
v1.32 Release Notes の中で SIG-Apps に関するものについて以下に和訳したものを記載します。
がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。
Deprecation(非推奨)
- ServiceAccount の metadata.annotations[kubernetes.io/enforce-mountable-secrets] が v1.32 から非推奨になります。削除に期限はありません。マウントされたシークレットへのアクセスを分離したい場合は namespace を分けることをお勧めします。 (#128396, @ritazh)
-
kubernetes.io/enforce-mountable-secrets
について詳細を知りたい方はこちらを参照ください。
-
API Changes(変更)
-
pod resource をリサイズするために新しく /resize のサブリソースが追加されました。Pod のリサイズを実施する場合は k8s client で /resize サブリソースを使用するように更新してください。(#128266, @AnishShah)
-
PodLogOptions
にStream
フィールドが追加されました。これによりクライアントがコンテナの特定の log stream (stdout or stderr) を要求できるようになります。
(#127360, @knight42)-
kubectl logs --stream=stderr -c container pod
のように stdout か stderr を指定して取得できるように機能が追加されていくようです。
-
-
Pod でサーチするドメインに単一のドット
.
とアンダースコア_
を許可するようにしました。(#127167, @adrianmoisey)- RelaxedDNSSearchValidation の機能は 1.32 でアルファになります。詳細についてはこちらのKEPを参照ください
-
CronJob でスケジュールされた Job に
batch.kubernetes.io/cronjob-scheduled-timestamp
のアノテーションが追加される機能が stable になりました。 (#128336, @soltysh) -
Pod API に対して pod-level で
spec
のresources
がサポートされるようになりました。 (#128407, @ndixita)- 今まではコンテナ単位で、resources ようになっていましたが、Pod レベルで設定できるような変更がアルファとして入りました。詳細についてはこちらのKEPを参照ください。
-
Pod-level で
securityContext
を制御できるseLinuxChangePolicy
フィールドが新しアルファとして追加されました。これは SELinuxChangePolicy feature gate に関する変更になります。これは SELinuxMount 機能が有効になっている場合に SELinux label 付きの Pod がボリュームをマウントするときに適応されれます。 (この機能はアルファであり、SELinuxMount はデフォルトでは無効化されています。).
SELinux の挙動の変更に関して利用者に警告する場合はこちらのKEP 参照してください。このフィールドは SELinux が有効化されているクラスタで、seLinuxChangePolicy
フィールドを利用する場合にのみ影響があります。SELinux を使用していないクラスタでは対応の必要はありません。 (#127981, @jsafrane) -
StatefulSetAutoDeletePVC
が stable になりました。 (#128247, @mattcary) -
GA になっている
HPAContainerMetrics
feature gate を削除しました。(#126862, @carlory) -
node-monitor-grace-period のデフォルト値が 50s に増加されました。 (以前は 40s です) (Ref - https://github.com/kubernetes/kubernetes/issues/121793) (#126287, @devppratik)
- HTTP2_PING_TIMEOUT_SECONDS がデフォルト 30s で HTTP2_READ_IDLE_TIMEOUT_SECONDS がデフォルト 15s なので、その合計値である 45s 以上がデフォルト値になるように修正したようです。
-
persistentVolumeClaimRetentionPolicy の誤った説明を修正しました。 (#126545, @yangjunmyfm192085)
Feature(機能追加)
-
PreStop の sleep action に 0 の値が入れれるようになりました。 (#127094, @sreeram-venkitesh)
- 0以外の負の値も入れられるようになっていて、負の値を入れると 0s として機能していたようです。0s にしたいときに負の値を入れるみたいなハックをせずに、シンプルに 0 を設定できるようになったようです。まだアルファなのでデフォルトでは有効化されていません。
-
kube-controller-manager が
--concurrent-job-syncs
フラグを有効化して動作している場合に、孤立した Pod(orphan pod) の処理をサポートしました。 (#126567, @fusida) [SIG Apps] [sig/apps]-
orphan pod の処理する worker を追加することで、finalizer
batch.kubernetes.io/job-tracking
を持つ pod が処理待ちになってスタックしにくくなるように改善した。
-
orphan pod の処理する worker を追加することで、finalizer
-
ジョブ削除イベントを処理する際のジョブ コントローラーのパフォーマンスが向上しました。(#127378, @hakuna-matatah)
- これも orphan pod に関する改善
-
ジョブ更新イベントを処理する際のジョブ コントローラーのパフォーマンスが向上しました。 (#127228, @hakuna-matatah)
- これも orphan pod に関する改善
-
StatefulSets の Pod に
apps.kubernetes.io/pod-index
ラベルを追加する機能が stable になりました。batch.kubernetes.io/job-completion-index
added to Pods from Indexed Jobs is promoted to stable (#128387, @alaypatel07) -
ScalingReplicaSet
イベントの出力形式が以下のように変更になりました。(#125118, @jsoref)変更前: Scaled <up|down> replica set <replica-set-name> to <new-value> from <old-value> 変更後: Scaled <up|down> replica set <replica-set-name> from <old-value> to <new-value>
-
InPlacePodVerticalScaling の beta 昇格に備えて、version skew に関する Pod validation を用意しました。 (#128186, @sreeram-venkitesh)
-
The Job controller が pod 削除するときに sidecar コンテナのリスタート回数も考慮するようになりました。 (#124952, @AxeZhan)
-
compareMaxContainerRestarts()
とういう各所で使われている関数があって、この中で Pod のリスタート回数だけではなく、Sidecar コンテナのリスタート回数も含めて比較するようになったという変更になります。
-
Bug or Regression(バグ修正)
-
Dynamic Resource Allocation でノードセレクタのラベルが検証されるようになりました。無効なラベルは、以前にも実行時エラーの原因となっていましたが、実際にはほとんど発生しません。 (#128932, @pohly)
-
古い pod spec で image volume source が使用されている場合は、ImageVolume feature-gate が無効になっていても、リソースを更新するときに許可する必要があります。 (#126733, @carlory)
-
lazy live pod list を使用して名前空間ごとにPVCをバッチ処理することにより、 PVC Protection Controller のスケーラビリティが向上しました。(#125372, (#126745 @hungnguyen243)
- バグ修正のカテゴリに記載されていますが、性能改善に関する話になります。
-
pod status の qosClass フィールドの validation を強化します。このフィールドは変更できませんが、status サブソースを介してこのフィールドを更新するときに新しいステータスで設定が解除されている場合は、kube-apiserverによって古いステータスが設定されます。(#127744, @carlory)
-
変更するときは REST API か
kubectl edit pod --subresource='status'
を使うようにとのことです。
Other (その他の修正)
-
InPlacePodVerticalScaling
機能の Windows のサポートは廃止になりました。 (#128623, @AnishShah) -
AllowServiceLBStatusOnNonLB
機能は非推奨のままであり、互換性バージョンのサポートのために false のままロックされます。 (#128139, @Jefftree) -
"AllowServiceLBStatusOnNonLB" Feature gate 削除されました。この機能は安定しており、一年以上更新されていません。 (#126786, @thockin)
-
AllowServiceLBStatusOnNonLB
は結局どうなっているかというと、廃止予定になっていますがコードをいきなり消すと他に影響がある可能性があるので、3バージョンの間 false で固定してそのあとで削除するという対応になりました。
-
-
GA になっている
NodeOutOfServiceVolumeDetach
feature gate が削除されました。(#127019, @carlory) -
pod の resize 中の requests/limits の削除のサポートがなくなりました。(#128683, @AnishShah)
- InPlacePodVerticalScaling に関する修正になります。
-
"PodHostIPs" の feature-gate が削除されました。 この機能は GA となり Kubernetes v1.30 からずっと値がロックされていました。 (#128634, @thockin)
所感
Sig Apps については今回は新機能はなく、InPlacePodVerticalScaling を GA にするためにいくつか PR が出ていましたが、それくらいなのでだいぶ落ち着いたリリースになりました。
最近の動向としては以下の KEP が進行中のようで 1.32 でアルファリリースを目指していたようですが、まだ KEP のマージも終わってないので新しい機能の導入にはもう少しかかりそうです。