2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kubernetes 1.28: SIG-Network の変更内容

Last updated at Posted at 2023-09-04

Kubernetes 1.28 の SIG-Network の変更内容をまとめました。1.28 では ServiceNodePortStaticSubrange というノードポートの動的と静的の割当の優先レンジを分けて、静的ポート指定時の衝突を減らす機能がデフォルトで有効になるなど、安定性向上につながる変更が主になっています。

ServiceNodePortStaticSubrange については、以下の個別記事にまとめました。

過去の SIG-Network の変更内容

以下は、Kubernetes v1.28 の Changelog を和訳したものです。:pencil: の部分は筆者の補足になります。

:pencil: Kubernetes 1.27 と 1.28 の API 差分

Kubernetes API (/api/, /apis/) から取得した情報を使って、Kubernetes 1.27 と 1.28 のデフォルトで有効な API の差分を確認しました。今回の変更は API の追加 1 つだけでした。

  • API の追加:
    • authentication.k8s.io/v1/selfsubjectreview
      • kubectl auth whoami がデフォルトで使えるように :tada:
  • API の削除: なし
  • Deprecation の指定: なし

SelfSubjectReview v1 が追加されデフォルトで有効になったため、アクセスしたユーザの情報を表示する kubectl auth whoami が使えるようになりました。:tada: (利用には kubectl v1.28.0 以上が必要です)

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

各 Kubernetes の API バージョン対応表も、Kubernetes 1.28 時点での情報に更新しました。

Deprecation (非推奨)

API Change (API の変更)

  • loadbalancer status ingress に IP mode フィールドが追加されました。(#118895, @RyanAoh)
  • kube-proxy: 構造化ロギングをサポートするための --logging-format フラグが追加されました。(#117800, @cyclinder)
  • IPTablesOwnershipCleanup 機能 (KEP-3178) は GA となり、kubelet は KUBE-MARK-DROP チェイン(ここ数リリースの間使われていないもの)と KUBE-MARK-MASQ チェイン(現在 kube-proxy のみが作成する)を作成しなくなりました。(#119374, @danwinship)

Feature (機能追加)

  • アルファの CloudDualStackNodeIPs 機能を修正しました。(#118329, @danwinship)
    • :pencil: ノード IP のアノテーションがデュアルスタックのときに alpha.kubernetes.io/provided-node-ip アノテーションに 1 つの IP アドレスしか設定されていないという問題の修正です
  • kube-proxy は停止中の EndpointSlice の条件を処理するようになり、ExternalTrafficPolicy=Local の Service でゼロダウンタイムのデプロイメントが可能になりました。author: @andrewsykim (#117718, @aojea) [SIG Network, Testing and Windows]
    • :pencil: 以前からある 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 の EndpointSliceEndpointSliceMirroring コントローラが contextual ロギングを使用するように移行しました。(#115295, @Namanl2001) [SIG API Machinery, Apps, Network and Testing]
  • 新たに EndpointSlice reconciler のためのステージングリポジトリが作られました。(#118953, @mskrocki)
  • ServiceNodePortStaticSubrange フィーチャーゲートがベータに昇格し、デフォルトで有効になります (#117877, @xuzhenglun)
  • ExpandedDNSConfig 機能が GA となりました。ExpandedDNSConfig フィーチャーはデフォルト値に固定され、v1.30 で削除されます。もしこのフィーチャーゲートを明示的に設定している場合は今すぐ削除してください。(#116741, @gjkim42) [SIG Apps, Network and Node]
  • [kube-proxy]: 停止中 (terminating) のノードからの接続のドレイン (connection draining) が実装されました。(#116470, @alexanderConstantinescu)
  • klog のテキスト出力は、構造体、マップ、スライスに対するエンコーディングに JSON を使うようになりました。(#117687, @pohly)
  • iptables モードの kube-proxy は既存の sync_proxy_rules_duration_seconds に加えて、sync_full_proxy_rules_duration_secondssync_partial_proxy_rules_duration_seconds を個別に持つようになります。これにより両方の種類の加重平均だけでなく、各同期ごとの所要時間が提供されるようになります。(#117787, @danwinship)

Bug or Regression (バグまたはリグレッション)

  • 問い合わせたエンドポイントのリストの繰り返し処理で、エンドポイントの IP 設定に対する追加検証を追加しました。(#116749, @princepereira)
    • :pencil: WinProxy (Windows) のみの話です。
  • Pod のコンテナポートに対する更新・パッチでポートが重複している場合の警告を追加しました。(#113245, @pacoxu)
    • :pencil: kubectl では Warning: spec.containers[0].ports[1]: duplicate port definition with spec.containers[0].ports[0] のような Warning が表示されます
  • TopologyCache で AddHintsSetNodes が同時に呼ばれたとのデータ競合を修正しました。(#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]

Other (Cleanup or Flake) (その他)

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

:pencil: 今後のトピックの紹介

SIG-Network で扱われているトピックで、個人的に気になったものを紹介します。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?