Kubernetes 1.27: SIG-Network の変更内容

[Kubernetes 1.27](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md) の SIG-Network の変更内容をまとめました。kube-proxy の iptables 処理の最適化を行う [MinimizeIPTablesRestore](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/3453-minimize-iptables-restore) 機能がデフォルトで有効になったため、大規模クラスタでは改善が期待できそうです。

<details><summary>過去の SIG-Network の変更内容</summary><div>

- [Kubernetes 1.26: SIG-Network の変更内容](https://qiita.com/tkusumi/items/bc3b6c8073c5b3785741)
- [Kubernetes 1.25: SIG-Network の変更内容](https://qiita.com/tkusumi/items/a41ed4ffd67dd7b3ed23)
- [Kubernetes 1.24: SIG-Network の変更内容](https://qiita.com/tkusumi/items/8ae63017abf763b0a22d)
- [Kubernetes 1.23: SIG-Network の変更内容](https://qiita.com/tkusumi/items/9516b7955c1c33d31e8e)
- [Kubernetes 1.22: SIG-Network の変更内容](https://qiita.com/tkusumi/items/2e3c69849ce2a4b50a90)
- [Kubernetes 1.21: SIG-Network の変更内容](https://qiita.com/tkusumi/items/a816626c258735bdc98f)
- [Kubernetes 1.20: SIG-Network の変更内容](https://qiita.com/tkusumi/items/5e1c420503cfa730d940)
- [Kubernetes 1.19: SIG-Network の変更内容](https://qiita.com/tkusumi/items/ee1e100d34465ff2d764)
- [Kubernetes 1.18: SIG-Network の変更内容](https://qiita.com/tkusumi/items/e72e255363f6deee3e9b)
- [Kubernetes 1.17: SIG-Network の変更内容](https://qiita.com/superbrothers/items/fd936c4046459a16609c)
- [Kubernetes 1.16: SIG-Network の変更内容](https://qiita.com/tkusumi/items/5fc2e12a4bb8931a2eed)
- [Kubernetes 1.15: SIG-Network の変更内容](https://qiita.com/summerwind/items/e1c8d649ed8c7ae44b83)
- [Kubernetes 1.14: SIG-Network の変更内容](https://qiita.com/summerwind/items/7ca97a5d6e3e2537ebca)

</div></details>

以下は、[Kubernetes v1.27 の Changelog](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md) を和訳したものです。:memo: の部分は筆者の補足になります。

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

- API の追加: なし
- API の削除:
    - storage.k8s.io/v1beta1/csistoragecapacities (v1 に切り替えましょう)
- Deprecation の指定: なし

多くの API は既に GA となっており、v1.27 でデフォルト有効な beta は以下の 4 つだけとなっています。なお v2 の API は未だに Horizontal Pod Autoscaler のみです。

```
flowcontrol.apiserver.k8s.io/v1beta2/flowschemas D
flowcontrol.apiserver.k8s.io/v1beta2/prioritylevelconfigurations D
flowcontrol.apiserver.k8s.io/v1beta3/flowschemas
flowcontrol.apiserver.k8s.io/v1beta3/prioritylevelconfigurations
```

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

https://qiita.com/tkusumi/items/cb2dc318875fbef19468

## Urgent Upgrade Notes (アップグレード前に確認が必要なこと)
- 外部クラウドプロバイダ(external cloud provider) の `IPv6DualStack` フィーチャーゲートが削除されました。(この機能は 1.23 で GA となり、他のコンポーネントでは数リリース前にゲートが削除されています)手動でこれを有効にしている場合、今すぐ指定をやめる必要があります。([#116255](https://github.com/kubernetes/kubernetes/pull/116255), [@danwinship](https://github.com/danwinship))

## Changes by Kind (Kind ごとの変更)
- Service API に警告が追加されました。Service が次の場合、Kubernetes は警告を出すようになりました。
    - 先頭にゼロがつく IP アドレス
    - 標準的 (RFC 5952) でない形式の IPv6 アドレス ([#114505](https://github.com/kubernetes/kubernetes/pull/114505), [@aojea](https://github.com/aojea))
    - :memo: [CVE-2021-29923](https://github.com/advisories/GHSA-38h6-vxp4-qxvm) に関連したセキュリティ上の修正です。
    - :memo: [net.ParseIP](https://pkg.go.dev/net#ParseIP) は Go 1.17 からこの形式に非対応のため fork 版の [ParseIPSloppy](https://github.com/kubernetes/utils/blob/master/net/parse.go) が利用されています。

:memo: 例えば `010.096.000.011` のような先頭に `0` を含む IP アドレスを Service の ClusterIP 指定すると、作成は完了しますが以下のような警告が出ます。先頭に `0` を含む形式は将来的に使えなくなり、Service オブジェクトの再作成も必要なためご注意ください。

```console
$ kubectl apply -f leading-zero-svc.yaml
Warning: spec.clusterIPs[0]: IP address was accepted, but will be invalid in a future Kubernetes release: ParseAddr("010.096.000.011"): IPv4 field has octet with leading zero
service/leading-zero created
```

この IP アドレスは先頭のゼロを除いて十進数 (decimal) と解釈された `10.96.0.11` になります。先頭のゼロがある場合に八進数 (octal) として解釈するライブラリもあり [CVE-2021-29923](https://github.com/advisories/GHSA-38h6-vxp4-qxvm) の脆弱性となっていたようです。

```console
$ kubectl run -it --rm --restart=Never curl --image curlimages/curl:7.88.1 \
  -- -sI http://10.96.0.11/
HTTP/1.1 200 OK
Server: nginx/1.23.4
```

Service オブジェクト上は `010.096.000.011` と `0` を含んだままの形となっています。

```console
$ kubectl get svc leading-zero
NAME           TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
leading-zero   ClusterIP   010.096.000.011   <none>        80/TCP    83s
```

そのため、先頭の `0` を抜いて Service を apply し直すとエラーとなります。Service の clusterIP は immutable のため変更できないため、先頭 `0` を含む Service を誤って作ってしまった場合は再作成が必要となります。

```console
The Service "leading-zero" is invalid: spec.clusterIPs[0]: Invalid value: []string{"10.96.0.11"}: may not change once set
```


## API Change (API の変更)
- 新しく IPAddress というオブジェクトの種別 (kind) が追加されました
    - 新しい ClusterIP アロケータを追加しました。新しいアロケータは IPv4 の以前の Service CIDR ブロックのサイズをなくし、IPv6 のサイズを /64 に制限します。 [#115075](https://github.com/kubernetes/kubernetes/pull/115075), [@aojea](https://github.com/aojea)) [SIG API Machinery, Apps, Auth, CLI, Cluster Lifecycle, Network and Testing]
    - :memo: [KEP-1880: Multiple Service CIDRs](https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/1880-multiple-service-cidrs/README.md) 関連の取り組みです。利用には `MultiCIDRServiceAllocator` というフィーチャーゲートを有効にする必要があります。
- `service.kubernetes.io/topology-aware-hints` と `service.kubernetes.io/topology-mode` のアノテーションが両方セットされていたときに、どちらも同じ値になっていることを確認する検証を追加しました。また、`service.kubernetes.io/topology-aware-hints` アノテーションが使われた場合に、非推奨の警告 (deprecation warning)が追加されました。([#116612](https://github.com/kubernetes/kubernetes/pull/116612), [@robscott](https://github.com/robscott))
- 新しい `service.kubernetes.io/topology-mode` アノテーションが `service.kubernetes.io/topology-aware-hints` アノテーションの代わりとして導入されました。
  - `service.kubernetes.io/topology-aware-hints` アノテーションは非推奨となります。
  - kube-proxy はこれらのアノテーションに "disable" 以外の任意の値を受け入れるようになり、カスタムの実装固有または将来的なビルトインのユーリティステイックの使用が可能になりました。([#116522](https://github.com/kubernetes/kubernetes/pull/116522), [@robscott](https://github.com/robscott)) [SIG Apps, Network and Testing]
- 更新: AppProtocol フィールドの説明を再定義し、新しい標準の値を追加しました。([#115433](https://github.com/kubernetes/kubernetes/pull/115433), [@LiorLieberman](https://github.com/LiorLieberman)) [SIG API Machinery, Apps and Network]
    - :memo: [KEP-3726: Standard Application Protocols](https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/3726-standard-application-protocols/README.md) 関連の取り組みです。今回は `kubernetes.io/h2c`, `kubernetes.io/grpc` が Kubernetes 独自の標準の値として追加されています。

## Feature (機能追加)
- 大規模クラスタで kube-proxy の iptables モードのパフォーマンスを改善する新機能が有効になりました。対応は不要ですが
  1. もし Service が iptables に正しく同期されない問題が起きたときは、kube-proxy に `--feature-gates=MinimizeIPTablesRestore=false` を指定することでこの機能を無効にできます(もしこれで治った場合バグとしてあげてください)。(この問題は `sync_proxy_rules_iptables_partial_restore_failures_total` のメトリックの値が上昇することで検出できるかもしれません)
  1. もしパフォーマンス上の理由で kube-proxy の設定を上書きしていた場合、それは不要になるかもしれません。https://kubernetes.io/docs/reference/networking/virtual-ips/#optimizing-iptables-mode-performance をご覧ください。 ([#115138](https://github.com/kubernetes/kubernetes/pull/115138), [@danwinship](https://github.com/danwinship)) [SIG Network]
    - :memo: 大規模クラスタでは `minSyncPeriod`, `syncPeriod` の調整な場合がありましたが。それが不要になったようです。
- 新しいフィーチャーゲート ServiceNodePortStaticSubrange は NodePort サービスポートアロケータの新しいストラテジを有効にします。ノードポートの範囲を分割し Service のノードポートの動的割当を上位の範囲から優先的に行うようになります。 ([#114418](https://github.com/kubernetes/kubernetes/pull/114418), [@xuzhenglun](https://github.com/xuzhenglun))
    - :memo: ServiceIPStaticSubrange のノードポート版です
    - 参考: [Kubernetes: Service の静的 IP 用レンジを分割する (ServiceIPStaticSubrange)](https://qiita.com/tkusumi/items/da474798c5c9be88d9c5)
- アルファの `CloudNodeIPs` フィーチャーゲートを kubelet とクラウドプロバイダで有効にすることで、デュアルスタックの `--node-ip` の値を指定できるようになります。(この機能をサポートする外部クラウドプロバイダの利用時) ([#116305](https://github.com/kubernetes/kubernetes/pull/116305), [@danwinship](https://github.com/danwinship)) [SIG API Machinery, Cloud Provider, Network and Node]
- GPRC probe は TIME-WAIT 状態を改善するため 1 秒の linger オプションを設定するようになりました。([#115321](https://github.com/kubernetes/kubernetes/pull/115321), [@rphillips](https://github.com/rphillips)) [SIG Network and Node]
- Kubelet の TCP と HTTP probe はネットワークリソース(conntrack エントリ、ソケット)をより効果的に使用するようになりました。これはコネクションの `TIME-WAIT` 状態をデフォルト 60 秒から 1 秒に減らすことで実現されています。これにより kubelet はソケットと関連した conntrack エントリ、エフェメラルポートを開放できるようになります。([#115143](https://github.com/kubernetes/kubernetes/pull/115143), [@aojea](https://github.com/aojea))
- kubelet はデフォルトで Pod に `net.ipv4.ip_local_reserved_ports` sysctl の使用を許可するようになりした。最小カーネルバージョンは 3.16 です。Pod Security admission で v1.27 以上の baseline と restricted ポリシーでこの sysctl を許可します。([#115374](https://github.com/kubernetes/kubernetes/pull/115374), [@pacoxu](https://github.com/pacoxu)) [SIG Auth, Network and Node]
- Node `ipam` コントローラは、割り当てられる CIDR の最大値に関するメトリクス `cidrset_cidrs_max_total` と `multicidrset_cidrs_max_total` を公開するようになりました。([#112260](https://github.com/kubernetes/kubernetes/pull/112260), [@aryan9600](https://github.com/aryan9600))
- mount-utils マウンタはフォーマット操作を同時に行う数の制限をオプションとして提供するようになりました。([#115379](https://github.com/kubernetes/kubernetes/pull/115379), [@artemvmin](https://github.com/artemvmin)) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node and Storage]
    - :memo: GCP の Persistent Disk CSI Driver では[同時実行数を 1 に設定した](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/pull/1169)ようです。
- kubelet はデフォルトで特定のレガシーな iptables ルールを作らないようになりました。このルールに不適切に依存したサードパーティコンポーネントでは、問題が起きる可能性があります。影響があった場合、kubelet に `--feature-gates=IPTablesOwnershipCleanup=false` を付けることができますが、そのサードパーティコンポーネントに対してもバグの報告も行ってください。 ([#114472](https://github.com/kubernetes/kubernetes/pull/114472), [@danwinship](https://github.com/danwinship))
- `kube-proxy` が `ContextualLogging`, `LoggingAlphaOptions`, `LoggingBetaOptions` を受け入れるようになりました。([#115233](https://github.com/kubernetes/kubernetes/pull/115233), [@pohly](https://github.com/pohly))

## Failing Test (失敗しているテスト)
- Windows 上で kubelet の設定 `--resolv-conf=Host` を設定したとき、kubelet が意図した通り Pod DNS ポリシーを適用するようになりました。([#110566](https://github.com/kubernetes/kubernetes/pull/110566), [@claudiubelu](https://github.com/claudiubelu))

## Bug or Regression (バグまたはリグレッション)
- すでに [#109706](https://github.com/kubernetes/kubernetes/pull/109706) で開始されていた [#111539](https://github.com/kubernetes/kubernetes/issues/111539) の部分的な修正を拡大しました。
  具体的には、CCM 内の `ETP=local` のサービスの同期回数をさらに減らし、LB の再構成を大幅に回避しました。([#111658](https://github.com/kubernetes/kubernetes/pull/111658), [@alexanderConstantinescu](https://github.com/alexanderConstantinescu))
- IPV4 場合のファイル内容のチェックがデフォルトでは有効でなくなりました。`kubeadm init` または `kubeadm join` ための` IPV4P` または `IPV6` のチェックは、その IP アドレスファミリをサポートするクラスタを作成するときのみ実施されます。([#115420](https://github.com/kubernetes/kubernetes/pull/115420), [@chendave](https://github.com/chendave))
- NodeIP が変更された場合に Route コントローラが更新されるように修正しました ([#108095](https://github.com/kubernetes/kubernetes/pull/108095), [@lzhecheng](https://github.com/lzhecheng))
- 標準ではない形式のカスタムエンドポイントに対して、`EndpointSlice` ミラーリングコントローラが複数のスライスを生成するバグを修正しました。([#114155](https://github.com/kubernetes/kubernetes/pull/114155), [@aojea](https://github.com/aojea))
- IP アドレスが重複した Pod を EndpointSlice を誤って処理する可能性のある EndpointSlice コントローラのハッシュのバグを修正しました。例えば、completed になった Pod に割り当てられた IP アドレスが新しい Pod に再利用されたときに発生する可能性がありました。([#115907](https://github.com/kubernetes/kubernetes/pull/115907), [@qinqon](https://github.com/qinqon)) [SIG Apps and Network]
- Winkernel Proxier の問題を修正。`ExternalTrafficPolicy` がローカルに設定され、利用できるエンドポイントが全て `remoteEndpoints` だったとき Cluster IP ロードバランサが抜けていた問題がありました。([#115919](https://github.com/kubernetes/kubernetes/pull/115919), [@princepereira](https://github.com/princepereira))
- Winkernel Proxier の問題を修正。Internal Traffic Policy が `Local` のロードバランサ Service のエンドポイントを水平スケールしているときに、予期せずアクティブな TCP 接続の切断が発生する問題がありました。([#113742](https://github.com/kubernetes/kubernetes/pull/113742), [@princepereira](https://github.com/princepereira))
- Winkernel Proxier の問題を修正。service が `ipFamilyPolicy`: `RequireDualStack` に設定されたとき、IPV6 ロードバランサのポリシーが抜けていた問題がありました。([#115503](https://github.com/kubernetes/kubernetes/pull/115503), [@princepereira](https://github.com/princepereira))
- Winkernel Proxier の問題を修正。service が `ipFamilyPolicy`: `RequireDualStack` に設定されたとき、IPV6 ロードバランサのポリシーが抜けていた問題がありました。([#115577](https://github.com/kubernetes/kubernetes/pull/115577), [@princepereira](https://github.com/princepereira))
    - :memo: ユニットテストが別 PR として出されていただけでした
- Winkernel Proxier の問題を修正。全てのエンドポイントが停止中(terminating)のときの Ingress ロードバランサのルールがありませんでした。([#113776](https://github.com/kubernetes/kubernetes/pull/113776), [@princepereira](https://github.com/princepereira))
- #115825 の修正。kube-proxy は LB の HC のレスポンスに `healthz` の状態を含めるようになり、kube-proxy が正常ではないときに LB が対象のノードを使用しないようになりました。([#111661](https://github.com/kubernetes/kubernetes/pull/111661), [@alexanderConstantinescu](https://github.com/alexanderConstantinescu)) [SIG Network]
- IPVS: 任意の ipvs スケジューラが構成できるようになりました。もし利用できないスケジューラが構成された場合、`kube-proxy` はリスタートするためログをチェックしなければなりません。(今までと同様ですが、別のログが出力される)([#114878](https://github.com/kubernetes/kubernetes/pull/114878), [@uablrek](https://github.com/uablrek))
    - :memo: ipvs のスケジューラのバリデーションが削除されました。利用できるスケジューラは [man ipvsadm](http://kb.linuxvirtualserver.org/wiki/ipvsadm) の `--scheduler` の項目で確認できます。
- `ingressClass` アノテーションと `IngressClassName` の両方が設定された Ingress が作れるようになりました。([#115447](https://github.com/kubernetes/kubernetes/pull/115447), [@AxeZhan](https://github.com/AxeZhan))
- Internal Traffic Policy: `Local` の属性によって `LoadBalancer` 作成の最適化を行いました。([#114407](https://github.com/kubernetes/kubernetes/pull/114407), [@princepereira](https://github.com/princepereira))
- Shared informer は同期しているかどうかを正しく伝搬するようになりました。各 informer ハンドラは新しい `HasSynced` メソッドを使って同期しているかどうかをチェックできます。コントローラが初期リストのアイテムの作業が完了したかどうかを追跡する、ライブラリサポートが追加されました。(`AsyncTracker`) ([#113985](https://github.com/kubernetes/kubernetes/pull/113985), [@lavalamp](https://github.com/lavalamp))
    - :memo: もともと informer には HasSynced メソッドがあるのですが、API サーバーからのオブジェクト取得の同期に完了を示していました。今回はハンドラの処理の同期完了がわかるようになったようです。
- type `ExternalName` の `Service` は `Endpoint` を作らないようになりました。([#114814](https://github.com/kubernetes/kubernetes/pull/114814), [@panslava](https://github.com/panslava))
- `--proxy-mode=ipvs` を指定した `kube-prixy` が静的リンクされたカーネルで利用できるようになりました。`rfc5737` にある予約された IPv4 の範囲 `TEST-NET-2` は、アドレス `198.51.100.0` がプローブに使われるため、`ClusterIP` または `loadBalancerIP` として使用してはいけません。([#114669](https://github.com/kubernetes/kubernetes/pull/114669), [@uablrek](https://github.com/uablrek))

## Other (その他)
- `iptables` ユーティリティの誤ったログ情報を修正しました。 ([#110723](https://github.com/kubernetes/kubernetes/pull/110723), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085))
- `pkg/controller/nodeipam/ipam/cloud_cidr_allocator.go, pkg/controller/nodeipam/ipam/multi_cidr_range_allocator.go pkg/controller/nodeipam/ipam/range_allocator.go pkg/controller/nodelifecycle/node_lifecycle_controller.go` を構造化ログに移行しました。([#112670](https://github.com/kubernetes/kubernetes/pull/112670), [@yangjunmyfm192085](https://github.com/yangjunmyfm192085))
- [KCCM - service controller]: クラスタオートスケーラによるノードのダウンスケール時に、終了中 Pod に対するコネクションのドレインを有効にしました。これはクラスタオートスケーラがノードが消えることを示す taint に反応しないようにすることで実現しています、そのため VM が完全に削除されるまでロードバランサによってノードは参照され続けます。([#115204](https://github.com/kubernetes/kubernetes/pull/115204), [@alexanderConstantinescu](https://github.com/alexanderConstantinescu))

## :memo: 直近のトピック
KubeCon EU 2023 のセッション [SIG Network: Intro and Updates](https://kccnceu2023.sched.com/event/1HyUk/sig-network-intro-and-updates-antonio-ojea-garcia-google-surya-seetharaman-red-hat-shane-utt-kong) で、SIG-Network の今後の取り組みについて話があったので、GA (予定を含む) として挙げられていたものを簡単に紹介します。詳細なロードマップは [SIG-Network の GitHub Project](https://github.com/orgs/kubernetes/projects/10) に記載されています。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100377/c0380f32-fc0f-f87c-4897-50979858a55d.png)
> https://kccnceu2023.sched.com/event/1HyUk/sig-network-intro-and-updates-antonio-ojea-garcia-google-surya-seetharaman-red-hat-shane-utt-kong より引用


### Gateway API

[Gateway API](https://gateway-api.sigs.k8s.io/) はルーティングとロードバランサの API です。Ingress を HTTP 以外にも拡張したような仕様となっています。今年 GA を目標としているようです。[20 以上の実装が存在](https://gateway-api.sigs.k8s.io/implementations/)し Cilium, Istio などでもベータとして実装されています。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100377/589d7137-2113-f661-2cb8-cb9b7b82f7c7.png)
> https://kccnceu2023.sched.com/event/1HyUk/sig-network-intro-and-updates-antonio-ojea-garcia-google-surya-seetharaman-red-hat-shane-utt-kong より引用


### Service Internal Traffic Policy
Service の `spec.internalTrafficPolicy` フィールドを追加し、従来の方式 `Cluster` に加えて、同一ノード上の Pod だけにルーティングする `Local` を追加する取り組みです。[Kubernetes v1.22 からデフォルト有効で、v1.26 で GA](https://github.com/kubernetes/kubernetes/blob/v1.27.1/pkg/features/kube_features.go#L759-L766) となっています。

- [KEP-2086: Service Internal Traffic Policy](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/2086-service-internal-traffic-policy)
- https://kubernetes.io/docs/concepts/services-networking/service-traffic-policy/

### Reserve Service IP Ranges For Dynamic and Static IP Allocation

Service の静的 IP アドレス用のレンジを分割し、動的 IP アドレスと、静的 IP アドレスの衝突リスクを減らすための機能です。[Kubernetes v1.26 で GA](https://github.com/kubernetes/kubernetes/blob/v1.27.1/pkg/features/kube_features.go#L768-L775) となっています :tada: 。

https://qiita.com/tkusumi/items/da474798c5c9be88d9c5

- [KEP-3070: Reserve Service IP Ranges For Dynamic and Static IP Allocation](https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/3070-reserved-service-ip-range/)


### Terminating Endpoints

終了中 (terminating) の Pod のエンドポイントを graceful に扱うための取り組みです。`EndpointSliceTerminatingCondition` は [v1.26 で GA](https://github.com/kubernetes/kubernetes/blob/v1.27.1/pkg/features/kube_features.go#L261-L268) となっています。kube-proxy 側の対応 `ProxyTerminatingEndpoints` はデフォルトで有効ですが、[v1.27 では beta](https://github.com/kubernetes/kubernetes/blob/v1.27.1/pkg/features/kube_features.go#L687-L693) です。

- [KEP-1672: Tracking Terminating Endpoints in the EndpointSlice API](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/1672-tracking-terminating-endpoints)
- [KEP-1669: Proxy Terminating Endpoints](https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/1669-proxy-terminating-endpoints)

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/100377/e3676742-abe3-c951-0b7c-6de99499587b.png)
> https://kccnceu2023.sched.com/event/1HyUk/sig-network-intro-and-updates-antonio-ojea-garcia-google-surya-seetharaman-red-hat-shane-utt-kong より引用