1
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?

Kubernetes 1.37: SIG-Network の変更内容

1
Posted at

Kubernetes 1.37 の SIG-Network の変更内容をまとめました。

過去の SIG-Network の変更内容

以下は、Kubernetes v1.37 の Changelog の中からSIG-Networkに関連した内容を和訳したものです。:pencil: の部分は筆者の補足になります。

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

  • なし

Changes by Kind

Dependency

  • google.golang.org/grpc を v1.82.1 に更新しました。これにより、HTTP/2 制御フレームのフラッディングに対するサーバー側の制限が追加されます。また、GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING 環境変数が削除されるため、strict path checking は常に有効になります。 (#140740, @dims) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Network, Node and Scheduling]
  • kubelet に組み込まれている cAdvisor を、より軽量な github.com/google/cadvisor/lib モジュールに移行しました。この変更に伴い、次の古い機能が削除されます。
    • 非推奨の cAdvisor フラグは受け付けられなくなり、設定されていると kubelet の起動に失敗します(引き続き使えるのは --housekeeping-interval のみです)。次のフラグを設定から削除してください: --application-metrics-count-limit、--boot-id-file、--container-hints、--containerd、--containerd-namespace、--enable-load-reader、--event-storage-age-limit、--event-storage-event-limit、--global-housekeeping-interval、--log-cadvisor-usage、--machine-id-file、--storage-driver-user、--storage-driver-password、--storage-driver-host、--storage-driver-db、--storage-driver-table、--storage-driver-secure、--storage-driver-buffer-duration。
    • cAdvisor のアプリケーション/カスタムメトリクスは収集されなくなります。対象には /stats/summary の userDefinedMetrics フィールドと、/metrics/cadvisor の container_application_* メトリクスが含まれます。
    • /metrics/cadvisor の container_cpu_load_average_10s、container_cpu_load_d_average_10s、container_tasks_state メトリクスは出力されなくなります。 (#139870, @dims) [SIG API Machinery, Auth, Instrumentation, Network, Node and Testing]
  • etcd クライアントライブラリを v3.6.10 に更新しました。 (#138393, @humblec) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling and Storage]

API Change

  • workloadbuilder ライブラリおよび Workload ビルディングブロック API との統合により、Job コントローラーに Workload-aware scheduling (WAS) のサポートを追加しました。 (#140188, @helayoty) [SIG API Machinery, Apps, Auth, Network, Node, Scheduling, Storage and Testing]
  • nftables kube-proxy バックエンドにオプトインのユーザースペース TCP プロキシを追加し、IPv4 および IPv6 で localhost の NodePort Service を提供できるようにしました。 (#138427, @AustinAbro321) [SIG Instrumentation, Network and Testing]
    • :pencil: nftablesモードへの移行の制約として書かれていたlocalhostによるNodePortの対応が実装されたようです :tada:
  • SchedulerPreQueueingHints フィーチャーゲート (Alpha、デフォルトで無効) を追加しました。有効にすると、スケジューラープラグインが PreQueueingHintFn を提供できるようになり、クラスターイベント時に評価する Pod の範囲を絞り込んでスケジューリングのスループットを向上させます。DRA プラグインはこれを実装し、ResourceClaimTemplate ベースのワークロードを最適化します。 (#138916, @geetasg) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Instrumentation, Network, Node, Scheduling, Storage, Testing and Windows]
  • kube-apiserver の CBOR エンコーダーを変更し、コレクションを一括ではなく 1 項目ずつエンコードするようにしました。 (#138808, @chenk008) [SIG API Machinery, Apps, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Contributor Experience, Instrumentation, Network, Node, Release, Scalability, Scheduling, Storage, Testing and Windows]
  • 1 つのリクエストで複数のデバイスを割り当てる際、DRA の consumable capacity で DistinctAttribute 制約が各デバイスに正しく適用されないバグを修正しました。 (#140600, @GunaKKIBM) [SIG API Machinery, Apps, CLI, Etcd, Network, Node, Release, Scheduling and Testing]
  • API Go 型のインライン化された TypeMeta フィールドの JSON タグを ",inline" から "" に変更しました。inline は JSON シリアライザーが認識するオプションではなく、marshal や unmarshal の動作を変更するものではありませんでした。 (#138260, @liggitt) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • client-go: 呼び出し元が context を渡す API を導入し、ほぼすべての context.TODO 呼び出しを削除しました。ログ呼び出しでは、利用可能な場合は呼び出し元が提供するロガーを使用します。 (#129125, @pohly) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Instrumentation, Network, Node, Storage and Testing]

Feature

  • Windows の kube-proxy (winkernel) におけるロードバランサー操作の失敗を監視する Prometheus メトリクスを追加しました: kubeproxy_sync_proxy_rules_winkernel_lb_create_failures_total、kubeproxy_sync_proxy_rules_winkernel_lb_update_failures_total、kubeproxy_sync_proxy_rules_winkernel_lb_delete_failures_total。各メトリクスには ip_family、lb_type、error ラベルが含まれます。 (#137767, @princepereira) [SIG Instrumentation, Network and Windows]
  • 安全な sysctl の許可リストに net.ipv4.tcp_slow_start_after_idle と net.ipv4.tcp_notsent_lowat を追加しました。 (#138389, @gheffern) [SIG Auth, Network and Node]
    • :pencil: 以下のkernelのバージョンでそれぞれnamespacedなパラメータとなっています
      • net.ipv4.tcp_slow_start_after_idle: 4.15
      • net.ipv4.tcp_notsent_lowat: 4.6
  • プロキシモード (iptables、ipvs、nftables など) を明示せずに kube-proxy を起動した場合に警告を表示するようにしました。Linux では、将来のリリースでデフォルトモードが iptables から nftables に切り替わる予定です。 (#139957, @danwinship) [SIG Network]
    • :pencil: nftablesのデフォルト化が着々と進んでいますね
  • EtcdRangeStream ベータ版のフィーチャーゲートを追加しました。有効時、watch キャッシュはページ分割された Range リクエストではなく、単一の RangeStream RPC で etcd からオブジェクトをストリーミングして初期化します。 (#136915, @Jefftree) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • kube-proxy の ipvs モードを無効化し、その後削除する準備として、KubeProxyIPVS フィーチャーゲートを追加しました。 (#139397, @adrianmoisey) [SIG Network]
    • :pencil: ipvs無効化のためのphase 2であるipvs機能の有効・無効を制御するためのfeature gateの追加です。
    • :pencil: 予定通りであれば以下の通りの計画で廃止が進みます。
      • 1.40: KubeProxyIPVS のデフォルトを false に変更。何もしなければ IPVS は使えなくなるが、feature gate を明示的に有効化すればまだ使える。
      • 1.43: IPVS を完全に利用不可にし、実装も削除
      • 1.46: feature gateの削除
  • スケジューラーメトリクス queued_entities と queue_incoming_entities_total を追加しました。queued_entities はスケジューラーキュー内のスケジューリングエンティティ (Pod または PodGroup) の現在数を、queue_incoming_entities_total はキューに追加されたエンティティの累計を報告します。 (#139840, @iomarsayed) [SIG Instrumentation, Network and Scheduling]
  • RelaxedServiceNameValidation フィーチャーゲートを GA に昇格しました。 (#139282, @adrianmoisey) [SIG Apps and Network]
    • :pencil: RelaxedServiceNameValidationがfalseにできなくなります。
  • オブジェクトの走査に遅延評価型のリフレクションベースユーティリティを採用して CEL アドミッションポリシーの評価を最適化し、リクエスト処理中の CPU 使用量とガベージコレクションのオーバーヘッドを削減しました。 (#138771, @lalitc375) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Network, Node, Scheduling and Storage]

Documentation

  • kube-proxy の --metrics-bind-address フラグのドキュメントから、フラグを空文字列に設定するとメトリクスサーバーが無効になるという誤った記述を削除しました。 (#138940, @kairosci) [SIG Network]
    • :pencil: 空値を設定すると、デフォルト値である127.0.0.1:10249にセットされます

Bug or Regression

  • 大規模クラスターモード (Endpoint が 1000 を超える場合) では、kube-proxy が full-sync 操作をスキップするようにしました。 (#138571, @aojea) [SIG Network]
    • :pencil: Endpoint が 1000 以上になると、定期的な念のためのiptablesのルールのfull syncが実行されなくなるようです。
  • kube-proxy が nftables の service マップを書き込む前にコメントをカーネルの 128 バイト制限に切り詰めるようにし、長い Service 名による同期失敗を回避しました。 (#139516, @Vinayak9769) [SIG Network]
  • kube-proxy の nftables モードで netlink サポートをデフォルトで有効にしました。kube-proxy は netlink を直接使ってルールとチェーンを一覧表示するため、nft コマンドの実行と出力解析を避け、パフォーマンスを向上できます。NFTablesNetlink フィーチャーゲート (Beta、デフォルトで有効) を無効にすると、以前の動作に戻せます。 (#137536, @aojea) [SIG Network and Testing]
  • UDP Service に提供中のエンドポイントがなくなった場合 (たとえばゼロにスケールした後) に、kube-proxy が古い conntrack エントリを削除するように修正しました。これにより、以前に確立された単方向の UDP フローが、削除済み Pod IP に対して無期限にブラックホール化されるのを防ぎます。 (#139629, @Bafff) [SIG Network]
    • :pencil: NodePortについては今回の修正からは対象外になっています
  • kube-proxy の IPVS モードにおけるパフォーマンスバグを修正しました。多数の Service があるクラスターで、GetAllLocalAddressesExcept がインターフェースごとに完全な netlink アドレス一覧を取得していたため、syncProxyRules に数十秒かかることがありました。アドレスファミリーごとに 1 回だけ一覧を取得するようにし、大規模クラスターでのレイテンシーを大幅に削減します。 (#138927, @ytcisme) [SIG Network]
  • Windows 上の kube-proxy で、再起動またはリカバリー中の一時的な HNS ダウンタイムにより LoadBalancer の状態調整が誤り、Cannot create a file when that file already exists. (0xb7) エラーで重複作成に失敗する問題を修正しました。 (#139503, @princepereira) [SIG Network and Windows]
  • 空の IPFamilies フィールドを持つ Service (デュアルスタック導入前に作られ、その後 spec が更新されていない Service) の処理で、エンドポイントコントローラーが panic する可能性がある v1.33 のリグレッションを修正しました。 (#138736, @rahulbabu95) [SIG Apps and Network]
    • :pencil: GET/LIST経由とWatchではdefaultingの挙動が異なり、WATCH経由ではdefaultingが機能していなかったようで、古いSpecのServiceがetcd上に保持されていた場合に、defaultingで存在すると期待していたIPFamilies[0]にアクセスし、panicを引き起こしてしまっていたようです。
  • Server-Side Apply のリグレッションを修正しました。コンテナーの型 (list または map) にパッチを適用したとき、以前は成功していた apply リクエストで 422 required エラーが返されることがありました。 (#140294, @jpbetz) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling, Storage and Testing]
  • L2Bridge ネットワークで Pod IP がノード間で再利用された際に、Windows 上で古いリモート HNS エンドポイントが残り、トラフィックが誤ったノードにルーティングされて DNS タイムアウトが発生する問題を修正しました。 (#138000, @princepereira) [SIG Network and Windows]
  • test/images/glibc-dns-testing のビルドを修正しました。 (#138877, @BenTheElder) [SIG Network and Testing]
  • 無効な Service CIDR が設定されている場合に、エラー理由を表示するようにしました。 (#139182, @PseudoResonance) [SIG Network]
  • watch している Node の IP が変更された場合、または Node オブジェクトが削除された場合に kube-proxy を終了するようにしました。これにより、更新されたノードネットワーク状態で再起動できます。 (#138183, @abishekgiri) [SIG Network]

Other (Cleanup or Flake)

  • kube-apiserver の service/proxy サブリソースを変更し、Service へのプロキシ時に Endpoints ではなく EndpointSlices を使うようにしました。この変更は、Service 用の Endpoints を手動で作成し、EndpointSlice ミラーリングを無効にしているクラスターにのみ影響します。 (#134860, @danwinship) [SIG API Machinery and Network]
  • kube-proxy が必要としない .metadata.managedFields フィールドを削除し、メモリ使用量を改善しました。 (#140056, @adrianmoisey) [SIG Network]
  • kube-proxy の nftables モードで、エンドポイントが 1 つだけの Service にマップを使わないようにし、nftables の書き込みを高速化しました。 (#140723, @adrianmoisey) [SIG Network]
1
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
1
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?