Kubernetes 1.28: SIG-Network的更改细节

我总结了Kubernetes 1.28版本的SIG-Network网络变更内容。在1.28版本中,引入了默认启用的功能,将节点端口的动态和静态分配的优先范围分开,以减少静态端口指定时的冲突,从而提高稳定性。

关于ServiceNodePortStaticSubrange,我们已经整理了以下各个单独文章。

 

Kubernetes 1.27:SIG-Network的变更内容
Kubernetes 1.26:SIG-Network的变更内容
Kubernetes 1.25:SIG-Network的变更内容
Kubernetes 1.24:SIG-Network的变更内容
Kubernetes 1.23:SIG-Network的变更内容
Kubernetes 1.22:SIG-Network的变更内容
Kubernetes 1.21:SIG-Network的变更内容
Kubernetes 1.20:SIG-Network的变更内容
Kubernetes 1.19:SIG-Network的变更内容
Kubernetes 1.18:SIG-Network的变更内容
Kubernetes 1.17:SIG-Network的变更内容
Kubernetes 1.16:SIG-Network的变更内容
Kubernetes 1.15:SIG-Network的变更内容
Kubernetes 1.14:SIG-Network的变更内容

以下是我对Kubernetes v1.28的变更日志进行的中文翻译。这部分是我的补充说明。

Kubernetes 1.27 和 1.28 版本的 API 差异

使用从 Kubernetes API(/api/,/apis/)获取的信息,我们确认了 Kubernetes 1.27 和 1.28 默认启用的 API 的差异。此次更改只添加了一个 API。

    • API の追加:

authentication.k8s.io/v1/selfsubjectreview

kubectl auth whoami がデフォルトで使えるように

API の削除: なし
Deprecation の指定: なし

由于添加了 SelfSubjectReview v1 并默认启用,现在可以使用 kubectl auth whoami 来显示访问用户的信息。(需要 kubectl v1.28.0 或更高版本才可使用)

$ kubectl auth whoami
ATTRIBUTE   VALUE
Username    kubernetes-admin
Groups      [system:masters system:authenticated]

Kubernetes的API版本兼容性表也已更新至Kubernetes 1.28的最新信息。

 

弃用

    • kube-controller-manager で –volume-host-cidr-denylist と –volume-host-allow-local-loopback のフラグが廃止予定となりました。(#118128, @carlory) [SIG API Machinery, Apps, Network, Node, Storage and Testing]

in-tree のボリュームプラグインの脆弱性対応(CVE-2020-8555) のために入ったフラグですが、現在は未使用のため削除されたようです。

取り下げとなった機能 NetworkPolicyStatus が削除されました。 (#115843, @rikatz)

これは KEP-2943: Network Policy Status subresource で進められていた、NetworkPolicy に status サブリソースを追加する機能でした。しかし alpha のまま取り下げることが決まったようです。

このフィールドに使われていた protobuf のフィールド番号が将来に渡って欠番になるように Test_NetworkPolicyRemovedFieldProtobufNumberReservation というテストが追加されていました。

API变更

    • loadbalancer status ingress に IP mode フィールドが追加されました。(#118895, @RyanAoh)

KEP-1860 Make Kubernetes aware of the LoadBalancer behaviour の実装です。

kube-proxy: 構造化ロギングをサポートするための –logging-format フラグが追加されました。(#117800, @cyclinder)

IPTablesOwnershipCleanup 機能 (KEP-3178) は GA となり、kubelet は KUBE-MARK-DROP チェイン(ここ数リリースの間使われていないもの)と KUBE-MARK-MASQ チェイン(現在 kube-proxy のみが作成する)を作成しなくなりました。(#119374, @danwinship)

功能新增

    • アルファの CloudDualStackNodeIPs 機能を修正しました。(#118329, @danwinship)

ノード IP のアノテーションがデュアルスタックのときに alpha.kubernetes.io/provided-node-ip アノテーションに 1 つの IP アドレスしか設定されていないという問題の修正です

kube-proxy は停止中の EndpointSlice の条件を処理するようになり、ExternalTrafficPolicy=Local の Service でゼロダウンタイムのデプロイメントが可能になりました。author: @andrewsykim (#117718, @aojea) [SIG Network, Testing and Windows]

以前からある ProxyTerminatingEndpoints という機能ですが GA となりました

kube-proxy サービスヘルスはローカルエンドポイントの数を示す HTTP ヘッダ X-Load-Balancing-Endpoint-Weight を返すようになりました。同じ情報はレスポンスボディの JSON payload.LocalEndpoints でも利用可能です。(#118999, @cezarygerard)

pkg/controller/endpoint が contextual ロギングに移行しました。(#116755, @my-git9)
コントローラ関数が contextual ロギングを使用するように移行しました。(#116930, @fatsheep9146) [SIG API Machinery, Apps, Network, Node, Storage and Testing]
kube-controller-manager の EndpointSlice と EndpointSliceMirroring コントローラが contextual ロギングを使用するように移行しました。(#115295, @Namanl2001) [SIG API Machinery, Apps, Network and Testing]
新たに EndpointSlice reconciler のためのステージングリポジトリが作られました。(#118953, @mskrocki)

kubernetes/endpointslice というリポジトリに分けられ、out-of-tree の EndpointSlice コントローラからロジックを再利用できるようになりました。(KEP-3685: Move EndpointSlice Reconciler into Staging)

ServiceNodePortStaticSubrange フィーチャーゲートがベータに昇格し、デフォルトで有効になります (#117877, @xuzhenglun)

個別記事にまとめました。基本的に ServiceIPStaticSubrange のノードポート版です。

ExpandedDNSConfig 機能が GA となりました。ExpandedDNSConfig フィーチャーはデフォルト値に固定され、v1.30 で削除されます。もしこのフィーチャーゲートを明示的に設定している場合は今すぐ削除してください。(#116741, @gjkim42) [SIG Apps, Network and Node]
[kube-proxy]: 停止中 (terminating) のノードからの接続のドレイン (connection draining) が実装されました。(#116470, @alexanderConstantinescu)

KEP-3836: Kube-proxy improved ingress connectivity reliability の実装です。

klog のテキスト出力は、構造体、マップ、スライスに対するエンコーディングに JSON を使うようになりました。(#117687, @pohly)
iptables モードの kube-proxy は既存の sync_proxy_rules_duration_seconds に加えて、sync_full_proxy_rules_duration_seconds と sync_partial_proxy_rules_duration_seconds を個別に持つようになります。これにより両方の種類の加重平均だけでなく、各同期ごとの所要時間が提供されるようになります。(#117787, @danwinship)

错误或回归 (錯誤或回歸)

    • 問い合わせたエンドポイントのリストの繰り返し処理で、エンドポイントの IP 設定に対する追加検証を追加しました。(#116749, @princepereira)

WinProxy (Windows) のみの話です。

Pod のコンテナポートに対する更新・パッチでポートが重複している場合の警告を追加しました。(#113245, @pacoxu)

kubectl では Warning: spec.containers[0].ports[1]: duplicate port definition with spec.containers[0].ports[0] のような Warning が表示されます

TopologyCache で AddHints と SetNodes が同時に呼ばれたとのデータ競合を修正しました。(#117249, @tnqn) [SIG Apps and Network]
LocalModeNodeCIDR を使った場合の kube-proxy の競合状態を修正しました。kube-proxy の起動中にノードオブジェクトが再作成されたときに Service のトラフィックがドロップすることを避けられるようになりました。 (#118499, @aojea)

topology.kubernetes.io/zone ラベルがノードの作成後に追加された場合に、Topology Aware Hints が動作しない問題を修正しました。(#117245, @tnqn)
http (live-/readiness)-probe でヘッダが小文字だった場合に、意図せずカスタムの Accept ヘッダを上書きしていたバグを修正しました。(#114606, @tuunit)
タイミングトレースの記録に競合状態がありました。実際の影響はおそらく低かったです。(#117139, @pohly) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node and Storage]
kube-proxy の sync_proxy_rules_iptables_total メトリックは、1.27 以前の挙動に戻りました。これは kube-proxy が責任を持つ iptables のルールの総数を追跡するもので、最後の同期で再同期したルール数だけを数えるのではありません。後者の数字は新たに sync_proxy_rules_iptables_last メトリックが提供されます。(#119140, @danwinship) [SIG Network]
[KCCM] service controller: クラウドコントローラマネージャを、ノードの同期時に providerID を predicate とするように変更しました。この変更によりロードバランサの統合で、ロードバランサとターゲットを設定する際に providerID が設定されていることを保証します。(#117388, @alexanderConstantinescu) [SIG Cloud Provider and Network]

其他(清洁或片状)(其它)

    • kube-proxy は IP ファミリの設定に矛盾があるとき、起動時に警告を出すようになりました。(例えば IPv4 のノード IP を持っていときに –cluster-cidr が IPv6 である場合) (#119003, @danwinship) [SIG Network]

 

    • kube-proxy: コンフィグファイルを使わなかったときのログの警告を削除しました。(#118115, @TommyStarK) [SIG Network]

kube-controller-manager 内で呼ばれる podgc コントローラとその他のログを contextual ロギング を使うようにしました。kube-controller-manager の変更 (contextual ロギング移行) は完全に終わりました。(#119250, @pohly) [SIG API Machinery, Apps, Cloud Provider, Instrumentation, Network, Storage and Testing]
GA となったフィーチャーゲート MixedProtocolLBService, ServiceInternalTrafficPolicy, ServiceIPStaticSubrange, EndpointSliceTerminatingCondition を削除しました。(#117237, @yulng)

OpenAPI v2 のスペックを 50% 以上縮小しました。特に CPU のリソース消費が削減されます。(#118204, @sttts)

参照記法 ($ref) を使って重複したパラメータを省略することで実現しています。

OpenAPI v2 のスペックは kubectl get –raw /openapi/v2 | jq . で確認できます

v1.21 で廃止予定となった NetworkPolicyLegacy テストスイートは新しいテーブルドリブンの e2e テストに置き換えられ正式に削除されました。(#118915, @astoycos)

未来话题的介绍

我来介绍一下在SIG-Network中我个人觉得很有意思的话题。

pod LifecycleHandler should support a sleep option #114465

Kubernetes で安全に Pod を終了するときに必要な sleep を LifecycleHandler に組み込むという提案です

KEP はマージされましたたが 実装 PR はレビュー中でした

Service でプロトコルが違うがポート番号が重複したときに apply の挙動がおかしい問題

https://github.com/kubernetes/kubernetes/issues/118725
https://github.com/kubernetes/kubernetes/issues/105610
https://github.com/kubernetes/kubernetes/issues/114402
https://github.com/kubernetes/kubernetes/issues/119126

广告
将在 10 秒后关闭
bannerAds