Kubernetes 1.31 の SIG-Network の変更内容をまとめました。v1.31ではnftablesがfeature gateの指定なしに設定可能となったり、ServiceのtrafficDistributionが利用可能となりました。
過去の SIG-Network の変更内容
- Kubernetes 1.29: SIG-Network の変更内容
- Kubernetes 1.28: SIG-Network の変更内容
- 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.31 の Changelog を和訳したものです。 の部分は筆者の補足になります。
Deprecation
- なし
API Change
- kube-proxyのnodePortAddresses / --nodeport-addressesオプションに、ノードの主要なIPv4および/またはIPv6アドレス(Nodeオブジェクトによる)のみでNodePort接続をリッスンするという意味の「primary」の値を受け入れるサポートが追加されました。これは、以前に--nodeport-addressesを使用していなかった場合、予期しない動作を避けるために強く推奨されます。(この動作はnftablesバックエンドでデフォルトで有効化されています。従来の「すべてのインターフェースでリッスンする」動作を得るには、そこで明示的に
--nodeport-addresses 0.0.0.0/0,::/0
を要求する必要があります。) (#123105, @danwinship) [SIG API Machinery, Network and Windows]
- Component-base/logs: Go >= 1.21でコンパイルされた場合、component-baseはklogの初期化と共にslogをデフォルトロガーとして自動的に設定します。 (#120696, @pohly) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Storage and Testing]
-
DisableNodeKubeProxyVersion
feature gateはベータへ昇格しました。デフォルトでkubeletはもはや関連するノードの.status.kubeProxyVersion
フィールドをセットしようとしなくなります。(#123845, @HirazawaUi) [SIG API Machinery, Cloud Provider, Network, Node and Testing]
- kube-proxyのWindowsサービスコントロールマネージャー統合(
--windows-service
)を、v1alpha1コンポーネント設定のwindowsRunAsService
フィールドを通じて設定可能にしました。 (#126072, @aroradaman) [SIG Network and Scalability] [sig/network,sig/scalability]
users on the system.) (#124152, @danwinship) [SIG Network]
- MultiCIDRServiceAllocator機能をベータへ更新しました(デフォルトでは無効)。この新機能を使用するためには、ユーザーはfeature gateとnetworkin v1beta1グループを有効にする必要があります。これにより、Service CIDR範囲を動的に再設定することが可能になります。(#125021, @aojea) [SIG API Machinery, Apps, CLI, Etcd, Instrumentation, Network and Testing]
Feature
-
kubeproxy_iptables_ct_state_invalid_dropped_packets_total
メトリックを導入することで、kube-proxyのiptablesモードがconntrackによって誤って無効とマークされ、その後ドロップされたパケットを追跡するサポートが追加されました。(#122812, @aroradaman) [SIG Instrumentation, Network and Testing]
- kube-proxyのnftablesモード(--proxy-mode=nftables)がbetaとなりデフォルトで利用可能となりました。(#124383, @danwinship) [SIG Cloud Provider and Network]
- デフォルトで利用可能ではありますが、proxy modeのデフォルトはiptablesモードのままです
-
KubeProxyDrainingTerminatingNodes
feature gateがstableへ昇格しました(#125082, @alexanderConstantinescu)-
この機能が導入されたPRを確認する限り、NodeオブジェクトがTerminating or ToBeDeletedByClusterAutoscaler taint が付与された場合に、kube-proxyのヘルスチェックで503を返す機能のようです
- これにより、Nodeが削除されることをLBが事前に知ることができるので、LBのメンバーから安全に削除する準備を進めることができます
- ToBeDeletedByClusterAutoscaler は名前からもわかるようにClusterAutoscalerで定義されたtaintであり、この機能を利用したい方はNodeオブジェクトの削除前にこちらのTaintをつけるような仕組みを用意する必要があります
-
この機能が導入されたPRを確認する限り、NodeオブジェクトがTerminating or ToBeDeletedByClusterAutoscaler taint が付与された場合に、kube-proxyのヘルスチェックで503を返す機能のようです
- ServiceのtrafficDistributionフィールドがbetaへ昇格しデフォルトで設定可能となり、featureフラグの必要がなくなりました。そのフィールドが設定されていないServiceは既存の振る舞いを維持します。詳細は https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution をご確認ください。 (#125838, @gauravkghildiyal) [SIG Network and Testing]
- kube-proxyのiptablesモードは、
kubeproxy_iptables_localhost_nodeports_accepted_packets_total
メトリックを導入することで、localhostのnode-portsに向けられた受け入れられたパケットを追跡します。これにより、ユーザーはiptables.localhostNodePorts機能に依存しているかどうかを特定し、最終的にiptablesからnftablesへの移行を支援します。(#125015, @aroradaman) [SIG Instrumentation, Network and Testing]
- 以前に非推奨とされ機能していなかったkube-proxyのコマンドラインフラグである
--proxy-port-range
は削除されました。(#126293, @aroradaman) [SIG Network]
- CEL(Common Expression Language)のオプショナルタイプの名前が、
optional
からoptional_type
に変更されました。(#124328, @jiahuif) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Network and Node]
- Windows Kubeproxyは、以前の削除と作成のAPIの代わりに、ロードバランサーの更新のための更新ロードバランサーAPIを使用します。
- リモートエンドポイントの削除は、終了したエンドポイント(古いエンドポイントマップには存在するが新しいエンドポイントマップには存在しないもの)のみがトリガーされ、以前は終了中のエンドポイントでも行われていました。 (#124092, @princepereira) [SIG Network and Windows]
Failing Test
- なし
Bug or Regression
-
"iptables"の名前を報告する代わりに、nftables kube-proxyモードのメトリクスが追加されました。 (#124557, @danwinship) [SIG Network and Windows]
- モード毎に専用のメトリクスを用意したようです
- Podの状態が素早く変更された時、endpointsのout-of-syncステータスを修正しました。(#125675, @tnqn) [SIG Apps, Network and Testing] [sig/network,sig/apps,sig/testing]
- EndpointsSliceではなくEndpoint Controllerに対する修正のようです
- e2eフラグの"-kube-test-repo-list"が効果を発揮しない可能性がある問題を修正しました。(#123587, @huww98) [SIG API Machinery, Apps, Autoscaling, CLI, Network, Node, Scheduling, Storage, Testing and Windows]
- Service LoadBalancerコントローラが
新しいIPModeのservice.Status
フィールドを正しく考慮せず、ステータスが変更されたかどうかを確認する際にPortsを除外していた問題を修正しました。これにより、変更されたフィールドがservice.Status
を正しく更新しない可能性がありました。(#125225, @aojea) [SIG Apps, Cloud Provider and Network]
- EndpointSliceMirroringコントローラによってEndpointsからミラーリングされたEndpointSlicesが修正された場合、それらが再調整されないというバグを修正しました。(#124131, @zyjhtangtang) [SIG Apps and Network]
- kube-controller-managerがリスタート中にEndpointsリソースに対応するが手動で削除され再作成された場合、endpointssliceが正常に作成できない問題を修正しました。(#125359, @yangjunmyfm192085) [SIG Apps and Network]
-
--healthz-bind-address
と--metrics-bind-address
パラメータのためのデフォルト値の説明を更新しました。(#123545, @yangjunmyfm192085)
Other (Cleanup or Flake)
- "
kubectl describe service
"および"kubectl describe ingress
"はendpointsの代わりにendpointslicesを利用するようになりました。(#124598, @aroradaman) [SIG CLI and Network]
- hostnameとhostNetworkをチェックするためのテストケースを追加しました(#124428, @yashsingh74) [SIG Architecture, Network and Testing]
- kube-apiserverの初期の一般的なコントロールプレーンのリファクタリングが完了し、Kubernetesのようなコントロールプレーンを構築するサンプルバイナリを提供しますが、コンテナオーケストレーションリソースは含まれません。(#124530, @sttts) [SIG API Machinery, Apps, Cloud Provider, Network, Node and Testing]
- Kube-apiserver: すでに非推奨となっていた
--enable-logs-handler
フラグとログ提供機能は、デフォルトでオフになり、v1.33で削除される予定です。(#125787, @dims) [SIG API Machinery, Network and Testing]
- pkg/proxyがcontextual loggingを利用するようにしました。(#122979, @fatsheep9146) [SIG Network and Scalability]
- GAとなっているためServiceNodePortStaticSubrange feature gateを削除しました。(#124738, @xuzhenglun)
- Kubeletの
--iptables-masquerade-bit
と--iptables-drop-bit
はv1.28で非推奨となっており、現在は完全に削除されました。(#122363, @carlory) [SIG Network and Node]
- 最後に残っていたin-tree gcp cloud providerとcredential providerを削除しました。代わりに https://github.com/kubernetes/cloud-provider-gcp のexternal cloud providerとcredential providerを利用してください。(#124519, @dims) [SIG API Machinery, Apps, Auth, Autoscaling, Cloud Provider, Instrumentation, Network, Node, Scheduling, Storage and Testing]