Kubernetes 1.17: SIG-Appsの変更内容

# はじめに

12/8にリリースされた Kubernets v1.17の変更点のうち特にSIG-Appsについてまとめています。

元となっているのは[Changelog v1.17](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.17.md)です。

:memo: マークはChangeLog関係なく所感や追加の解説です。

ほかの変更点はこちら → [Kubernetes 1.17: 変更点まとめ](https://qiita.com/shmurata/items/55acb85f60e5e8d19500)


# そのほかの変更(Notable Features)
## Apps


- Service Topologyをサポートしました。([#72046](https://github.com/kubernetes/kubernetes/pull/72046), [@m1093782566](https://github.com/m1093782566))
  - :memo: [KEP](https://github.com/m1093782566/enhancements/blob/141db30163f76de50a9ff0835608f34dc38eb7a5/keps/sig-network/0033-service-topology.md)で定義されており、Nodeのラベルにより定義されるトポロジ(node, rack, zone, regionなど)を考慮してServiceのルーティングを行うための機能です。ServiceリソースのSpecにtopology keyを指定することで特定のルートを矯正したり、優先したりすることができます。Headless Serviceに関しても名前を引くPodのトポロジに応じて返却するDNSレコードを変化させる機能が計画されていますが、それはBetaで実装予定とのことです。
  - :memo: 現在はalphaの機能です。

- ServiceによるLoadBalancerにFinalizerによる保護を入れる機能がGAとなりデフォルトで有効になりました。この機能によりServiceリソースは対応するロードバランサが削除されるまでは完全に削除されないようになります。([#85023](https://github.com/kubernetes/kubernetes/pull/85023), [@MrHohn](https://github.com/MrHohn))

- PodプロセスNamespace共有機能がGAとなりました。feature gateである`PodShareProcessNamespace`は廃止となり、1.19にて完全に削除される予定です。([#84356](https://github.com/kubernetes/kubernetes/pull/84356), [@verb](https://github.com/verb))

- PodDisruptionBudgetコントローラにてtombstonesの扱いを修正しました。([#83951](https://github.com/kubernetes/kubernetes/pull/83951), [@zouyee](https://github.com/zouyee))

- 削除されたサービスが、クリーンアップされた後もEndpointSliceControllerになんども処理されるバグを修正しました。([#82996](https://github.com/kubernetes/kubernetes/pull/82996), [@tnqn](https://github.com/tnqn))

- `label.Selector`の操作用の関数`RequireExcatMatch`を追加しました。 ([#85048](https://github.com/kubernetes/kubernetes/pull/85048), [@shaloulcy](https://github.com/shaloulcy))

- 何がEndpointSliceを管理しているかを示すための新しいラベルを追加しました。([#83965](https://github.com/kubernetes/kubernetes/pull/83965), [@robscott](https://github.com/robscott))

- kubeletの設定で認証なしでログを確認できるようにすることが選択できるようにします。この機能はfeature gate　`AllowInsecureBackendProxy`をfalseにすることで無効にできます。([#83419](https://github.com/kubernetes/kubernetes/pull/83419), [@deads2k](https://github.com/deads2k))
  - :memo: [KEP](https://github.com/deads2k/enhancements/blob/6f4425097ce5477687ecfbc6c55981938dd6f90c/keps/sig-api-machinery/20190927-insecure-backend-proxy.md)によると、通常Kubelet経由でログを見るためにはTLS証明書が正しい必要がありますが、`kubectl logs`に`--insecure-skip-tls-verify-backend`を指定することで、この確認を無視することができます。これにより偽のkubeletのログをつかまされる可能性がありますが、そのリスクを承知でデバッグ目的で実行するためのオプションです。

- ReplicaSetをスケールダウンした時に、ダブっているレプリカを先に削除するようにしました。ダブっているレプリカというのは、関係するアクティブなReplicSetに属している同一Nodeに存在するPodのことです。 ([#80004](https://github.com/kubernetes/kubernetes/pull/80004), [@Miciah](https://github.com/Miciah))
  - :memo: Deploymentによるローリングアップデートの結果、同一NodeにPodが配置されることがあります。この状況でPodをスケールインする時は、なるべくこれらの「ダブっているPod」から削除するという機能です。

- Kube-controller-managerがヘッドレスサービスのラベルをセットする時に既存のラベルを無視してしまっているバグを修正しました。([#85361](https://github.com/kubernetes/kubernetes/pull/85361), [@liggitt](https://github.com/liggitt))

- エラー文言に間違いがあり修正しました。([#84637](https://github.com/kubernetes/kubernetes/pull/84637), [@zhipengzuo](https://github.com/zhipengzuo))
  - :memo: nodeipamコントローラのエラーログにおいて`--cluster-cidr`の説明が誤っていたのを修正しました。

- GetPodServiceMemberships関数が複数定義されていたので綺麗にしました。([#83902](https://github.com/kubernetes/kubernetes/pull/83902), [@gongguan](https://github.com/gongguan))

# 所感

Sig Appsここのところ新機能はなかったのですが。Service Topologyは新機能です（SIG-Networkという説もありますが・・）