Kubernetes 1.28: SIG Cluster Lifecycle の変更内容

[Kubernetes 1.28 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md) から SIG Cluster Lifecycle の取り組みについてにピックアップしました。

## 重大なアップグレードに関する警告 (Urgent Upgrade Notes)

- None

## 種類別の変更 (Changes by Kind)

### 廃止予定 (Deprecation)

- None

### APIの変更 (API Change)

- None

### Feature

- **kubeadm: 設定ファイルの妥当性を検証するためのコマンドである、`kubeadm config validate` が追加されました。`--config`フラグを使って対象の設定ファイルを指定してください。また、`--help`フラグで追加の情報を知ることができます。この新しいコマンドを追加した結果として、既存の `kubeadm config migrate` コマンドの検証機能が強化されました。`migrate`および`validate`両方のコマンドで、未知のAPIやフィールドはエラーを投げます。** ([#118013](https://github.com/kubernetes/kubernetes/pull/118013), [@neolit123](https://github.com/neolit123))

- **kubeadm: `kubeadm config migrate/validate` コマンドに `--allow-experimental-api` フラグが追加されました。このフラグは、将来的にWIP、または実験的なAPIを`migrate`または`validate`する際に使用できます。**  ([#118866](https://github.com/kubernetes/kubernetes/pull/118866), [@neolit123](https://github.com/neolit123))

- **kubeadm: 時刻同期がされていない場合のワークアラウンドとして、現在のシステム時間に対して過去に5分オフセットした開始時間でCA証明書を生成します。**  ([#118922](https://github.com/kubernetes/kubernetes/pull/118922), [@champtar](https://github.com/champtar))
    - :pencil: 起動してきたばかりのマシンで、まだ時刻同期がされていない場合を想定しているようです。

### Documentation

- None

### Failing Test

- None

### Bug or Regression

- **`kubeadm reset`が`remove-etcd-member`フェーズで削除するピアに対応するetcdメンバーIDを見つけられない場合、最大3分間リトライするのではなく、すぐに他のフェーズに進みます。** ([#117724](https://github.com/kubernetes/kubernetes/pull/117724), [@dlipovetsky](https://github.com/dlipovetsky))

- **kubeadm: `kubeadm`の設定ファイルで`ignorePreflightErrors`フィールドを`all`に設定できないという制限が解除されました。** ([#119351](https://github.com/kubernetes/kubernetes/pull/119351), [@SataQiu](https://github.com/SataQiu))

- **kubeadmのログメッセージで、etcdメンバーIDの先頭のゼロを削除しました。** ([#117919](https://github.com/kubernetes/kubernetes/pull/117919), [@dlipovetsky](https://github.com/dlipovetsky))
  - :pencil: etcd のメンバーIDを `%016x` で出力していたところを、`strconv.FormatUint(id, 16)` を利用して出力するように変更したようです。

- **kubeadm: kubeletとの整合性が取れていないStatic Podの変更検出ロジックのバグを修正しました。**  ([#118069](https://github.com/kubernetes/kubernetes/pull/118069), [@SataQiu](https://github.com/SataQiu))
  - :pencil: Static Podのマニフェストの比較の際、フィールドの定義順が異なっていても内容が同じならば「同じ」と検出しなければいけなかったようです。

- **kubeadm: `crictl pull`時にイメージサービスのエンドポイントの指定に`-i`を使い設定するようにしました。** ([#117835](https://github.com/kubernetes/kubernetes/pull/117835), [@pacoxu](https://github.com/pacoxu))

- **kubeadm: アップグレード時に、Windowsプラットフォームでバックアップのためのファイルコピーが正しくされていなかった問題を修正しました。** ([#117861](https://github.com/kubernetes/kubernetes/pull/117861), [@SataQiu](https://github.com/SataQiu))

- **kubeadm: 初期化を0秒または20秒高速化しました。`kubelet-start` フェーズは現在、etcdとコントロールプレーンのフェーズの後になります。これにより、`kubelet`が静的ポッドのマニフェストを探す動作と、`kubeadm`がそれらを書き込む動作の間のレースコンディションが解消されました。** ([#117984](https://github.com/kubernetes/kubernetes/pull/117984), [@champtar](https://github.com/champtar))

- **kubeadm: 非推奨のFeature Gateに対して、エラーではなくワーニングを投げるようにしました。** ([#118270](https://github.com/kubernetes/kubernetes/pull/118270), [@pacoxu](https://github.com/pacoxu))

### Other (Cleanup or Flake)

- **kubeadm: `kube-proxy`のバージョン非整合ポリシーの不整合を修正するために、新しいフィーチャーゲート`UpgradeAddonsBeforeControlPlane`を導入しました。デフォルト値は`false`です。このフィーチャーゲートが`true`に設定されていない限り、`CoreDNS`と`kube-proxy`のアドオンのアップグレードは、すべてのコントロールプレーンのインスタンスがアップグレードされた後にトリガーされます。このフィーチャーゲートは、将来のリリースで削除される予定です。** ([#117660](https://github.com/kubernetes/kubernetes/pull/117660), [@pacoxu](https://github.com/pacoxu))
    - :pencil: [kube-proxy のバージョン非整合ポリシー](https://kubernetes.io/releases/version-skew-policy/#kube-proxy) によると、kube-proxy は kube-apiserver のバージョンよりも新しくてはいけないそうです。