Kubernetes 1.27: SIG-Apps の変更内容

## はじめに

このページではKubernetes v1.27 における SIG-Apps に関連する変更内容をまとめています。

- https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md

SIG-AppsはKubernetesのワークロードの扱いなどの変更を主に扱っているため、他のSIGと関係する変更が多くなっております。

- 直近での過去の変更内容は以下になります。
  - [Kubernetes 1.26: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/35bce758b17e644a2f50)
  - [Kubernetes 1.25: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/9689032b75fd70ecc881)
  - [Kubernetes 1.24: SIG-Apps の変更内容](https://qiita.com/yosshi_/items/08539d8f9e14da73c152)



<details><summary>SIG / SIG-Apps とは？</summary><div>

- 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 が対象。
![Kubernetes基礎_-_Google_Slides.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309176/78f42f49-da9f-c268-9034-e8d73556334a.png)
    - 詳細について知りたい方は[こちら](https://github.com/kubernetes/community/tree/master/sig-apps)をご参照ください。


</div></details>

SIG-Apps 以外の SIG に関する変更は以下にまとめてありますので、合わせてご参照下さい。

- [Kubernetes 1.27: 変更点まとめ(What's new!)とアップグレード時の注意事項](https://qiita.com/uesyn/items/540be461d6343e900a4f)


## 注目の変更
Feature Gatesの中で今回Stageに変更のあった[Sig-Appsに関連する機能](https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps)は以下になります。

- Pod
  - `PDBUnhealthyPodEvictionPolicy`：`Beta` https://github.com/kubernetes/enhancements/issues/3017
  - `ReadWriteOncePod`：`Beta` https://github.com/kubernetes/enhancements/issues/2485
- Job
  - `CronJobTimeZone`：`GA` https://github.com/kubernetes/enhancements/issues/3140
- StatefulSet
  - `StatefulSetStartOrdinal`：`Beta` https://github.com/kubernetes/enhancements/issues/3335
  - `StatefulSetAutoDeletePVC`：`Beta` https://github.com/kubernetes/enhancements/issues/1847


今回はSig-Appsで新しく入って機能はありませんでした。順当にステータスが Beta に更新されたので Alpha で追加されていた機能がデフォルトで有効化されて使用できるようになっています。


## v1.27 Release Notes

v1.27 Release Notes の中で SIG-Apps に関するものについて以下に和訳したものを記載します。

> :pencil: がついた文章は、CHANGELOGの公式内容ではなく筆者の補足です。

### :wastebasket: Deprecation(非推奨)

特になし


### :earth_asia: API Changes（変更）

- API: resource.k8s.io/v1alpha1.PodScheduling が resource.k8s.io/v1alpha2.PodSchedulingContext にリネームされました。 ([#116556](https://github.com/kubernetes/kubernetes/pull/116556), [@pohly](https://github.com/pohly)) [SIG API Machinery, Apps, Auth, CLI, Node, Scheduling and Testing]


- 新しい IPAddress object が追加されました。
  - 新しい ClusterIP allocator が追加されました。新しい ClusterIP allocator では以前の IPv4 に関する ervice CIDR block size の制限がなくなり、 IPv6 size の制限が /64 になりました。([#115075](https://github.com/kubernetes/kubernetes/pull/115075), [@aojea](https://github.com/aojea)) [SIG API Machinery, Apps, Auth, CLI, Cluster Lifecycle, Network and Testing]
  - :pencil: これは Multiple Service CIDRs に関する変更になります。詳細はこちらの [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/1880-multiple-service-cidrs) を参照ください


- 名前が有効でない DNS labels の workload resources (Pods, ReplicaSets, Deployments, Jobs, CronJobs, or ReplicationControllers) に関する警告が追加されました。([#114412](https://github.com/kubernetes/kubernetes/pull/114412), [@thockin](https://github.com/thockin))
  - :pencil: 名前に`.`とかをつけた場合に警告が出るようになりました。

- API: `PodSpec` のバリデーションで `ResourceClaim` と `ResourceClaimTemplate` の名前が正しくない場合に拒否されるようになりました。pod で `ResourceClaim` を作成する際も同じバリデーションが適応されます。([#116576](https://github.com/kubernetes/kubernetes/pull/116576), [@pohly](https://github.com/pohly))


-  `StatefulSetStartOrdinal` feature gate が Beta となり、デフォルトで有効化されます。 ([#115260](https://github.com/kubernetes/kubernetes/pull/115260), [@pwschuurman](https://github.com/pwschuurman))

- topologySpreadConstraints の labelSelector を指定していない場合に matchLabelKeys が無効化されるようになりました。([#116535](https://github.com/kubernetes/kubernetes/pull/116535), [@denkensk](https://github.com/denkensk))


- GCE では LoadBalancer Services で TCP や UDP 等の異なるプロトコルの port でのサポートを提供していません。 ([#115966](https://github.com/kubernetes/kubernetes/pull/115966), [@aojea](https://github.com/aojea)) [SIG Apps and Cloud Provider]
  - :pencil: これは機能追加ではなく、利用者向けの警告メッセージがソースコード上に追加されただけですね。


- 現在 GA となっている  `GRPCContainerProbe` feature gate は v1.29 で削除予定になります。該当の feature gate を設定している利用者は削除するようにしてください。([#116233](https://github.com/kubernetes/kubernetes/pull/116233), [@SergeyKanzhelev](https://github.com/SergeyKanzhelev))



- `AllocationResult`　の構造体の `resource.k8s.io` API に破壊的な変更が入りました。この変更により kubelet plugin の `DynamicResourceAllocation` 機能で、複数の resource driver controllers からの割り当てができるようになります。 s([#116332](https://github.com/kubernetes/kubernetes/pull/116332), [@klueska](https://github.com/klueska))


- Kubelet: `MemoryThrottlingFactor` のデフォルト値を `0.9` に変更し `memory.high`　を計算する式を追加しました。 ([#115371](https://github.com/kubernetes/kubernetes/pull/115371), [@pacoxu](https://github.com/pacoxu))


- `DaemonSet` controller (within `kube-controller-manager`) で [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションされました。([#113622](https://github.com/kubernetes/kubernetes/pull/113622), [@249043822](https://github.com/249043822))


-  `service.kubernetes.io/topology-aware-hints` のアノテーションの代わりに `service.kubernetes.io/topology-mode` が新しいアノテーションとして導入されました。
    - `service.kubernetes.io/topology-aware-hints` は非推奨になります。
    - kube-proxy はこれらのアノテーションに対して無効でない値を受け入れるようになります。これにより、custom implementation-specific や built-in heuristics を有効化できるようになります。([#116522](https://github.com/kubernetes/kubernetes/pull/116522), [@robscott](https://github.com/robscott)) [SIG Apps, Network and Testing]



- Job がオーナーになっている Pod には新しく`batch.kubernetes.io/job-name` と `batch.kubernetes.io/controller-uid` が付与されるようになります。
  互換性を保つために古い `job-name` と `controller-uid` のラベルについてもまだ付与されています。 ([#114930](https://github.com/kubernetes/kubernetes/pull/114930), [@kannon92](https://github.com/kannon92))



- `CronJobTimeZone` が GA になりました。 ([#115904](https://github.com/kubernetes/kubernetes/pull/115904), [@soltysh](https://github.com/soltysh))


- API validation が緩和されて gated pods に対する pod と node の selector の変更が許容されるようになりました。(追加のみが対象で、削除と変更は対象外です)。 ([#116161](https://github.com/kubernetes/kubernetes/pull/116161), [@danielvegamyhre](https://github.com/danielvegamyhre))
  - :pencil: これは Pod Mutable Scheduling Directives に関する変更になります。詳細はこちらの [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling/3838-pod-mutable-scheduling-directives) を参照ください


- references から `kubernetes.io/grpc` standard appProtocol が削除されました。([#116866](https://github.com/kubernetes/kubernetes/pull/116866), [@LiorLieberman](https://github.com/LiorLieberman)) [SIG API Machinery and Apps]
  - :pencil: これはソースコード上のコメントの変更のみで、機能としては特に変更はありません。


- 非推奨となっていた `--enable-taint-manager` と `--pod-eviction-timeout` のフラグが削除されました。 ([#115840](https://github.com/kubernetes/kubernetes/pull/115840), [@atosatto](https://github.com/atosatto))


- PodDisruptionBudget が Beta となりデフォルトで有効化となります。それに伴い `spec.unhealthyPodEvictionPolicy` フィールドが利用できるようになります。 機能が有効になっているサーバーではこのフィールドに `AlwaysAllow` を設定することにより、PodDisruptionBudget によって unhealthy pods が常に evict できるようになります。([#115363](https://github.com/kubernetes/kubernetes/pull/115363), [@ravisantoshgudimetla](https://github.com/ravisantoshgudimetla)) [SIG Apps, Auth and Node]


- kubelet の `DownwardAPIHugePages` が GA になりました。 ([#115721](https://github.com/kubernetes/kubernetes/pull/115721), [@saschagrunert](https://github.com/saschagrunert)) [SIG Apps and Node]


- `1.26.0` から導入された alpha の `resourceClaims` フィールドの list-type が `set` から `map` に変更されました。これにより `CustomResourceDefinitions` に関する server-side apply に関する非互換が解消されました。 ([#114585](https://github.com/kubernetes/kubernetes/pull/114585), [@JoelSpeed](https://github.com/JoelSpeed))
  - :pencil: これはソースコード上のコメントの変更のみで、機能としては特に変更はありません。


- API reference の Requests に対して limits を超えてはならない旨を追記しました。([#115434](https://github.com/kubernetes/kubernetes/pull/115434), [@ehashman](https://github.com/ehashman))


- 更新:AppProtocol field の Redefine の説明を更新して新しい standard values を追加しました。([#115433](https://github.com/kubernetes/kubernetes/pull/115433), [@LiorLieberman](https://github.com/LiorLieberman)) [SIG API Machinery, Apps and Network]
  - :pencil: これもみた感じソースコード上のコメントが変更されているだけで、機能としては変更がなさそうです。

- `/metrics/slis` が control plane components で使用できるようになり health check metrics がスクレプできるようになります。 ([#114997](https://github.com/kubernetes/kubernetes/pull/114997), [@Richabanker](https://github.com/Richabanker))


- `PodSchedulingReadiness` が Beta になりました。 ([#115815](https://github.com/kubernetes/kubernetes/pull/115815), [@Huang-Wei](https://github.com/Huang-Wei))


- `PodSpec.Container.Resources` で複数の CPU と memory のリソースタイプ設定できるようなりました。
  - `PodSpec.Container.ResizePolicy` (new object) により利用者は containers でリサイズをコントロールできるようになりました。
  - `PodStatus.Resize` ステータスは Pod resize のリクエストの状態を示します。
  - `PodStatus.ResourcesAllocated` は Pod に割り当てられるノードリソースを示す。
  - `PodStatus.Resources` は CRI で管理される running 中のコンテナに割り当てるノードリソースを示します。
  - `UpdateContainerResources` CRI API は Linux と Windows の両方をサポートします。 ([#102884](https://github.com/kubernetes/kubernetes/pull/102884), [@vinaykul](https://github.com/vinaykul))
    - :pencil: これは In-place Update of Pod Resources に関する機能になります。詳細はこちらの [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/1287-in-place-update-pod-resources) を参照ください・

- `StatefulSetAutoDeletePVC` が Beta になりました。 ([#116501](https://github.com/kubernetes/kubernetes/pull/116501), [@mattcary](https://github.com/mattcary))


- `StatefulSet` names は subdomains ではなく DNS labels である必要があります。 `StatefulSet` に関する subdomain のバリデーション(名前に `.` を含むかどうか)の結果、機能しません。それは `StatefulSetName` が `pod.spec.hostname` に設定されて DNS label として検証されるからです。([#114172](https://github.com/kubernetes/kubernetes/pull/114172), [@thockin](https://github.com/thockin))


- `resource.k8s.io/v1alpha1` は `resource.k8s.io/v1alpha2` にリプレイスされました。 クラスタをアップグレードする前に全ての resource.k8s.io/v1alpha1 に関するオブジェクトを削除する必要があります。(ResourceClaim, ResourceClaimTemplate,
  ResourceClass, PodScheduling)　この変更は内部的なものであり、YAML files については新しい `apiVersion` への変更以外の対応は必要ありません。 ([#116299](https://github.com/kubernetes/kubernetes/pull/116299), [@pohly](https://github.com/pohly))


- `volumes`:  効果がないため、inline PVC template を利用して作成か更新中の PVC の `resource.claims` はクリアされるようになりました。([#115928](https://github.com/kubernetes/kubernetes/pull/115928), [@pohly](https://github.com/pohly))


### :sparkle: Feature（機能追加）

- API validation が緩和されて Indexed Jobs の  parallelism と completions を同時に変更できることが可能になり(parallelism == completions の範囲内で) スケールアップ/ダウンができるようになります。([#115236](https://github.com/kubernetes/kubernetes/pull/115236), [@danielvegamyhre](https://github.com/danielvegamyhre)) [SIG Apps and Testing]
  - :pencil:  Indexed Jobs で spec.Completions の変更条件が緩和された話になります。


- kubelet　の`UserNamespacesStatelessPodsSupport` feature gate が有効化することで別の user namespace で stateless pod を起動させることができるようになります。 ([#116377](https://github.com/kubernetes/kubernetes/pull/116377), [@giuseppe](https://github.com/giuseppe)) [SIG Apps, Node and Storage]
  - :pencil: これは Support User Namespaces in stateless pods に関する変更になります。詳細はこちらの [KEP](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/127-user-namespaces/README.md) を参照ください


- HPA controller は kube-controller-manager から以下のメトリクスを出力するようになります。
  - `metric_computation_duration_seconds`: computations の数 
  - `metric_computation_total`: HPA controller が 1 metric の計算にかかる時間 ([#116326](https://github.com/kubernetes/kubernetes/pull/116326), [@sanposhiho](https://github.com/sanposhiho)) [SIG Apps, Autoscaling and Instrumentation]


- HPA controller は kube-controller-manager から以下のメトリクスを出力します。
  - `reconciliations_total`: HPA controller の reconciliation の数
  - `reconciliation_duration_seconds`: HPA controller が1回の reconcile にかかる時間 ([#116010](https://github.com/kubernetes/kubernetes/pull/116010), [@sanposhiho](https://github.com/sanposhiho))

- controller helper functions が contextual logging を使用するようにマイグレーションしました。 ([#115049](https://github.com/kubernetes/kubernetes/pull/115049), [@fatsheep9146](https://github.com/fatsheep9146))

- ResourceQuota controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113315](https://github.com/kubernetes/kubernetes/pull/113315), [@ncdc](https://github.com/ncdc)) [SIG API Machinery, Apps and Testing]

- StatefulSet controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113840](https://github.com/kubernetes/kubernetes/pull/113840), [@249043822](https://github.com/249043822))
- `ClusterRole` aggregation controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113910](https://github.com/kubernetes/kubernetes/pull/113910), [@mengjiao-liu](https://github.com/mengjiao-liu))
- `Deployment` controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。 ([#113525](https://github.com/kubernetes/kubernetes/pull/113525), [@249043822](https://github.com/249043822))
- `ReplicaSet` controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#114871](https://github.com/kubernetes/kubernetes/pull/114871), [@Namanl2001](https://github.com/Namanl2001))
- bootstrap signer controller と token cleaner controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113464](https://github.com/kubernetes/kubernetes/pull/113464), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG API Machinery, Apps and Instrumentation]


- defaultbinder scheduler plugin が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#116571](https://github.com/kubernetes/kubernetes/pull/116571), [@mengjiao-liu](https://github.com/mengjiao-liu)) [SIG Instrumentation and Scheduling]
- kube-controller-manager binary  が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#116529](https://github.com/kubernetes/kubernetes/pull/116529), [@pohly](https://github.com/pohly))
- namespace controller (within `kube-controller-manager`)  が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113443](https://github.com/kubernetes/kubernetes/pull/113443), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085))
- service-account controller (within `kube-controller-manager`)  が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#114918](https://github.com/kubernetes/kubernetes/pull/114918), [@Namanl2001](https://github.com/Namanl2001)) [SIG API Machinery, Apps, Auth, Instrumentation and Testing]


- volume attach/detach controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。
  - `PersistentVolumeClaim` protection controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。
  - `PersistentVolume` protection controller (within `kube-controller-manager`)  が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。 ([#113584](https://github.com/kubernetes/kubernetes/pull/113584), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085))
- `TTL after finished` controller (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113916](https://github.com/kubernetes/kubernetes/pull/113916), [@songxiao-wang87](https://github.com/songxiao-wang87))



- `CronJob controller`が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113428](https://github.com/kubernetes/kubernetes/pull/113428), [@mengjiao-liu](https://github.com/mengjiao-liu))


- `ipam` controller が `cidrset_cidrs_max_total` と `multicidrset_cidrs_max_total` のメトリクスを出力するようになります。CIDRs の割り当てが最大になる前に知ることができるようになります。 ([#112260](https://github.com/kubernetes/kubernetes/pull/112260), [@aryan9600](https://github.com/aryan9600))


- 一度も起動していない suspended の Job の Pod template `schedulingGates` を変更できるようになりました。 ([#115940](https://github.com/kubernetes/kubernetes/pull/115940), [@ahg-g](https://github.com/ahg-g)) [SIG Apps]
  - :pencil: これは Allow updating scheduling directives of jobs に関する変更になります。詳細はこちらの [KEP](https://github.com/kubernetes/enhancements/tree/master/keps/sig-scheduling/2926-job-mutable-scheduling-directives) を参照ください
  - :pencil: 通常だと request の値見てスケジュールできなかったら Pending のステータスになるところを Pod を suspend の状態で作成して実行開始を制御したいみたいケースで使う機能が拡充されたようです。


- Pods の `spec.terminationGracePeriodSeconds`　が無効な負の値が指定されていた場合に `terminationGracePeriodSeconds` が `1` になるようになりました。([#115606](https://github.com/kubernetes/kubernetes/pull/115606), [@wzshiming](https://github.com/wzshiming))


- Pod の `.spec.schedulingGates[*].name`フィールドは修飾名(like `example.com/mygate`)を要求するようになり、`.spec.readinessGates[*].name`の名前でバリデーションするようになります。1.27 より前のバージョンで alpha の scheduling gate feature を使用していた場合は、バリデーションを通るように名前を変更するか削除する必要があります。 ([#115821](https://github.com/kubernetes/kubernetes/pull/115821), [@lianghao208](https://github.com/lianghao208)) [SIG Apps and Scheduling]


- `JobMutableNodeSchedulingDirectives` 機能が GA になりました ([#116116](https://github.com/kubernetes/kubernetes/pull/116116), [@ahg-g](https://github.com/ahg-g)) [SIG Apps, Scheduling and Testing]


- `ReadWriteOncePod` 機能が beta になりました。([#114494](https://github.com/kubernetes/kubernetes/pull/114494), [@chrishenzie](https://github.com/chrishenzie))


- Indexed Jobs で新しい index が完了した時しかステータスが更新されないバグを修正しました。`[0, .spec.completions> range` の範囲の index が完了した場合も `.status.completedIndexes` が更新されるようになりました。 ([#115349](https://github.com/kubernetes/kubernetes/pull/115349), [@danielvegamyhre](https://github.com/danielvegamyhre))


- job controller は back-off の仕組みが workqueue から切り離されました。parallelism > 1 の場合、 リコンサイルの中で新しく複数の失敗が発生した場合は、全ての失敗を考慮して back-off が計算されます。以前は全ての障害でこの back-off が考慮されていましたが、これにより Pod の障害だけに絞ることができます。back-off の制限を超えると、job はすぐに失敗として記録されます。この変更前では job の失敗は次の back-off の時に失敗と記録されていました。 ([#114768](https://github.com/kubernetes/kubernetes/pull/114768), [@sathyanarays](https://github.com/sathyanarays)) [SIG Apps and Testing]



- サポートされていない PodDisruptionBudget の設定を見つけた際に、イベントログに設定ミスがあることが通知されるようになります。 ([#115861](https://github.com/kubernetes/kubernetes/pull/115861), [@JayKayy](https://github.com/JayKayy)) [SIG Apps]


- `kubernetes.io/tls` の `Secret` は cert が private key と一致することを検証するようになりました。([#113581](https://github.com/kubernetes/kubernetes/pull/113581), [@aimuz](https://github.com/aimuz))


- `StorageVersionGC` (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。 ([#113986](https://github.com/kubernetes/kubernetes/pull/113986), [@songxiao-wang87](https://github.com/songxiao-wang87))


### :page_facing_up: Documentation（ドキュメント改善）
特になし

### :hammer_and_wrench: ENHANCEMENT（機能改善）
特になし

### :bug: Bug or Regression(バグ修正)

- `DaemonSet` の Pod が作成に失敗した時にステータスが更新されな不具合を修正しました。 ([#113787](https://github.com/kubernetes/kubernetes/pull/113787), [@gjkim42](https://github.com/gjkim42))


- `OwnerReferencesPermissionEnforcement` admission plugin が有効な場合の `StatefulSetAutoDeletePVC` の機能が修正されました。 ([#114116](https://github.com/kubernetes/kubernetes/pull/114116), [@jsafrane](https://github.com/jsafrane))
  - :pencil: PVC を削除する時に権限がなくて失敗するので、その修正になります。

-  `parallelism = 1` の Job が管理する Pod が失敗した際に、job controller が backoff delay を尊重するため再び Pod を再生成する不具合を修正しました。jobs が `parallelism > 1` の場合 backoff delay を尊重することなく作成することがあります。([#114516](https://github.com/kubernetes/kubernetes/pull/114516), [@nikhita](https://github.com/nikhita))


- rate-limiter が queue をチェックして古い pod disruption conditions をクリーニングする機能を修正しました。このバグにより PDB の同期の更新が遅れたり、pod disruption に時間がかかっていた可能性があります。([#114770](https://github.com/kubernetes/kubernetes/pull/114770), [@mimowo](https://github.com/mimowo))


- `PodDisruptionConditions`(default in 1.26)の導入で発生していた2つの不具合を修正しました。:
  - pod eviction API が偽の前提条件に基づくエラーを返すため、成功させるためには2回の evict API の呼び出しが必要だった
  - dry-run で eviction API 呼んだ時に、DisruptionTarget condition に退避される Pod の状態を含んでいた ([#116554](https://github.com/kubernetes/kubernetes/pull/116554), [@atiratree](https://github.com/atiratree))



- これ以降、`HPAContainerMetrics` を無効化した場合は HPA controller は container resource metrics を返さなくなります。その結果 HPA は container resource metric によるスケールダウンをしなくなります。([#116043](https://github.com/kubernetes/kubernetes/pull/116043), [@sanposhiho](https://github.com/sanposhiho))

- 利用者が ephemeral container を static pod に追加しようとした時に、validation error が表示されるようになります。([#114086](https://github.com/kubernetes/kubernetes/pull/114086), [@xmcqueen](https://github.com/xmcqueen))

- `DisruptionTarget` のメッセージのコンディションから以前の Pod の metadata が入らなくなります。  ([#114914](https://github.com/kubernetes/kubernetes/pull/114914), [@mimowo](https://github.com/mimowo))


- PVC が見つからずに Pod が pending になっている場合に、PVC を自動で再作成するようになります。 ([#113270](https://github.com/kubernetes/kubernetes/pull/113270), [@rrangith](https://github.com/rrangith)) [SIG Apps and Testing]



- PersistentVolume API objects は NodeAffinities で OS, architecture, zone, region,instance type で beta の Kubernetes labels を使用している場合に stable の Kubernetes labels に更新できるようになります。 ([#115391](https://github.com/kubernetes/kubernetes/pull/115391), [@haoruan](https://github.com/haoruan))

- `key encipherment` 使用時のバリデーションが緩和されて `kubelet` で要求されて使用方法になります。 ([#111660](https://github.com/kubernetes/kubernetes/pull/111660), [@pacoxu](https://github.com/pacoxu))


- Pod の GC が実行される時に `kube-controller-manager` は Evicted pods を最初に削除するようになります。 ([#116167](https://github.com/kubernetes/kubernetes/pull/116167), [@borgerli](https://github.com/borgerli))


- `topologySpreadConstraints` で指定されて `LabelSelectors` が検証されて Pod が期待通りにスケジュールされるようになりました。 無効な `LabelSelectors` をもつ Pod は更新できましたが、有効な `LabelSelectors` を持つ Pod の場合は再作成が必要でした。([#111802](https://github.com/kubernetes/kubernetes/pull/111802), [@maaoBit](https://github.com/maaoBit))





- `PodGC` で terminal phase になった Pod がは`DisruptionTarget` condition に追加されません。 ([#115056](https://github.com/kubernetes/kubernetes/pull/115056), [@mimowo](https://github.com/mimowo))


- `ExternalName` の `Service` は `Endpoint` を作成しなくなります。 ([#114814](https://github.com/kubernetes/kubernetes/pull/114814), [@panslava](https://github.com/panslava))


- 空でない `schedulingGates` を設定する時に `nodeName` の設定が必要になりました。([#115569](https://github.com/kubernetes/kubernetes/pull/115569), [@Huang-Wei](https://github.com/Huang-Wei))

- `statefulset` status で一貫した API errors を出力するようになりました。([#113834](https://github.com/kubernetes/kubernetes/pull/113834), [@atiratree](https://github.com/atiratree))

- DaemonSet の pods が Succeeded phase で完了した場合は再作成されるようになります。([#117073](https://github.com/kubernetes/kubernetes/pull/117073), [@mimowo](https://github.com/mimowo)) [SIG Apps and Testing]


### :microscope: Other (その他の修正)

 `HPA` がコントロールする Pod から受け取るメトリクスが存在しない時のメッセージがミスリードを招くようになっていたので修正しました。([#114740](https://github.com/kubernetes/kubernetes/pull/114740), [@kushagra98](https://github.com/kushagra98))



- `pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go, pkg/controller/nodeipam/ipam/multi_cidr_range_allocator.go pkg/controller/nodeipam/ipam/range_allocator.go pkg/controller/nodelifecycle/node_lifecycle_controller.go` が structured logging に以降しました。([#112670](https://github.com/kubernetes/kubernetes/pull/112670), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085))
- Kubernetes object garbage collector (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。([#113471](https://github.com/kubernetes/kubernetes/pull/113471), [@ncdc](https://github.com/ncdc))
- `ttlafterfinished controller` (within `kube-controller-manager`) が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。 ([#115332](https://github.com/kubernetes/kubernetes/pull/115332), [@obaranov1](https://github.com/obaranov1)) [SIG Apps]
- `sample-controller`が [contextual logging](https://k8s.io/docs/concepts/cluster-administration/system-logs/#contextual-logging) を使用するようにマイグレーションしました。 ([#113879](https://github.com/kubernetes/kubernetes/pull/113879), [@pchan](https://github.com/pchan)) [SIG API Machinery and Instrumentation]


- API server の identity Lease labels の名前が変更されて `apiserver.kubernetes.io/identity` を使うようになります。([#114586](https://github.com/kubernetes/kubernetes/pull/114586), [@andrewsykim](https://github.com/andrewsykim)) [SIG API Machinery, Apps, Cloud Provider and Testing]


## 所感

今回は変更点の件数自体はいつもより少し多かったんですが、新規機能の追加等の大きな変更はありませんでした。細かいバグとか仕様の調整が多数なされて、順当に Alpha の機能が Beta に移行した、比較的安定したリリースの印象でした。