Kubernetes 1.9: 廃止予定の機能 (Deprecations)

このエントリは、[Kubernetes 1.9 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md) から廃止予定の機能についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は次のリンク先を参照してください。

- [Kubernetes v1.9: 主な変更点 (Major Themes)](https://qiita.com/inajob/items/883b92f5aaaa63e21a21)
- [Kubernetes v1.9: Before Upgrading](https://qiita.com/inajob/items/943a634a1941030e5075)
- [Kubernetes v1.9: 既知の問題 (Known Issues)](https://qiita.com/tkusumi/items/8ce2a635f2f850bd1a17)
- Kubernetes v1.9: 廃止予定の機能 (Deprecations)

---

ここでは Kubernetes 1.9 で廃止予定の API バージョン、オプション、フラグ、引数の概要について扱います。廃止予定とは、将来のリリースでその機能が削除されることを意味します。

### **API Machinery**

* kube-apiserver `--etcd-quorum-read` フラグは廃止予定になりました。また将来のリリースで Quorum Read を無効にする機能は削除されます。 ([#53795](https://github.com/kubernetes/kubernetes/pull/53795),[ @xiangpengzhao](https://github.com/xiangpengzhao))
    * :memo: etcd における Quorum はクラスタのメンバー数を n として (n/2)+1 です。
* kube-apiserver の `/ui` のリダイレクトは廃止予定となり、Kubernetes 1.10 で削除されます。 ([#53046](https://github.com/kubernetes/kubernetes/pull/53046), [@maciaszczykm](https://github.com/maciaszczykm))
    * :memo: `/ui` は kubernetes-dashboard にアクセスする方法として kube-apiserver に実装されています。代わりに kubectl proxy の実行後 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ からアクセスする方法が推奨されています。
* バックエンドとしての `etcd2` は廃止予定となり、Kubernetes 1.13 または 1.14 でサポートがなくなります。
    * :memo: kube-apiserver `--storage-backend` フラグで指定されます。デフォルトは `etcd3` です。

### **Auth**

*   controller-manager `--cluster-signing-cert-file` フラグと `--cluster-signing-key-file` フラグのデフォルティングは廃止予定になりました。将来のリリースで明示的な値の指定が必須になります。([#54495](https://github.com/kubernetes/kubernetes/pull/54495),[ @mikedanese](https://github.com/mikedanese))
    * :memo: `--cluster-signing-cert-file` フラグのデフォルト値は `/etc/kubernetes/ca/ca.pem`、`--cluster-signing-key-file` フラグのデフォルト値は `/etc/kubernetes/ca/ca.key` となっています。
*   RBAC オブジェクトは etcd に v1 のフォーマットで保存されるようになりました。1.9 にアップグレード後、v1alpha1 のサポートが削除される前に etcd に保存されている全ての RBAC オブジェクト (Roles, RoleBindings, ClusterRoles, ClusterRoleBindings) を v1 にマイグレートする必要があります。([#52950](https://github.com/kubernetes/kubernetes/pull/52950),[ @liggitt](https://github.com/liggitt))
    * :memo: オブジェクトを新しい API バージョンにアップグレードするには `/cluster/update-storage-objects.sh` を実行します。
    * https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#upgrading-to-a-different-api-version

### **Cluster Lifecycle**

* kube-apiserver `--ssh-user` フラグと `--ssh-keyfile` フラグは廃止予定となり将来のリリースで削除されます。Google Kubernetes Engine における Master -> Nodes 間通信の SSH トンネル機能のユーザは、Master と Node のネットワークをブリッジする別の代替手段を取ったほうがよいでしょう。([#54433](https://github.com/kubernetes/kubernetes/pull/54433),[ @dims](https://github.com/dims))
    * :memo: Kubernetes のメインリポジトリから特定のクラウドプロバイダの機能を排除する一貫です。SSH トンネル機能は主に GCE において使用されています。
* kubeadm `--skip-preflight-checks` フラグは廃止予定となり将来のリリースで削除されます。
* cloud-provider によりホストアドレスの取得は廃止予定となり、将来のリリースで削除されます。代わりに kube-apiserver `--external-hostname` フラグを明示的に設定します。([#54516](https://github.com/kubernetes/kubernetes/pull/54516),[ @dims](https://github.com/dims))
    - :memo: kube-apiserver `--external-hostname` フラグは Swagger API Docs などに含まれる外部からアクセスされる URL の生成に使われるホスト名が指定されます。

### **Network**

*  NetworkPolicy extensions/v1beta1 API は廃止予定となり将来のリリースで削除されます。([#56425](https://github.com/kubernetes/kubernetes/pull/56425), [@cmluciano](https://github.com/cmluciano))
    * NetworkPolicy は network.k8s.io/v1 に移行しています。v1beta1 NetworkPolicy は [cluster/update-storage-objects.sh スクリプト](https://github.com/danwinship/kubernetes/blob/master/cluster/update-storage-objects.sh)を使って v1 API にアップグレードすることができます。詳しくは https://kubernetes.io/docs/concepts/services-networking/network-policies/ を参考してください。

### **Storage**

* `volume.beta.kubernetes.io/storage-class` アノテーションは廃止予定となり、将来のリリースで削除されます。StorageClass API オブジェクトは v1 を使用し、アノテーションの代わりに `v1.PersistentVolumeClaim.Spec.StorageClassName` と `v1.PersistentVolume.Spec.StorageClassName` を使用してください。 ([#53580](https://github.com/kubernetes/kubernetes/pull/53580),[ @xiangpengzhao](https://github.com/xiangpengzhao))

### **Scheduling**

* kube-scheduler コマンドが、スケジューラの設定ファイルを指定する `--config` フラグをサポートしたことにより、その他のほとんどの kube-scheduler のフラグは廃止予定になりました。 ([#52562](https://github.com/kubernetes/kubernetes/pull/52562),[ @ironcladlou](https://github.com/ironcladlou))

### **Node**

* kubelet `--enable-custom-metrics` フラグは廃止予定になりました。v1.11.0 で削除される予定です。 ([#54154](https://github.com/kubernetes/kubernetes/pull/54154),[ @mtaufen](https://github.com/mtaufen))