Kubernetes 1.12:  Action Required

## はじめに

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

-   [Kubernetes 1.12: 既知の問題 (Known Issues) と 廃止された機能および廃止予定の機能 (Deprecations and removals)](https://qiita.com/yuanying/items/d5b55b408505d958f350)
-   [Kubernetes 1.12: 主な変更点 (Major Themes)](https://qiita.com/watawuwu/items/aeac4c5e3b43cc7ea5a0)
-   Kubernetes 1.12: Action Required
-   [Kubernetes 1.12: 新機能 (New Features)](https://qiita.com/watawuwu/items/85039af85134e2ad53f1)
-   [Kubernetes 1.12: API Changes](https://qiita.com/yuanying/items/ba7e64b44ae933a65792)

## Kubernetes 1.12: Action Required
-   Kubernetes のバックエンドとしての `etcd2` は非推奨となり、1.13 にて削除されます。

-   `kube-apiserver` における `--storage-versions` もまた非推奨です。このフラグはデフォルト値を利用するよう省略すべきです、さもなければ 1.12 より新しいバージョンへのクラスターのアップグレードは安全でなくなります。このフラグは 1.13 にて削除されます。 ([#68080](https://github.com/kubernetes/kubernetes/pull/68080), [@caesarxuchao](https://github.com/caesarxuchao)) [**SIG API Machinery**]
    <blockquote style='color: white; font-size: 90%;'><div>:pencil: **Note**</div> etcd2 が非推奨となり `--storage-versions` で指定すべき値が `etcd3` のみになったための変更のようです。</blockquote>

-   Volume scheduling における Dynamic provisioning がベータに昇格しました。それに伴い `DynamicProvisioningScheduling` のアルファ feature gate が削除されましたが、`VolumeScheduling` のベータ feature gate はこの機能を有効化するのにまだ必要となっていますのでご注意ください。([#67432](https://github.com/kubernetes/kubernetes/pull/67432), [@lichuqiang](https://github.com/lichuqiang)) [**SIG Apps, SIG Architecture, SIG Storage, and SIG Testing**]
    <blockquote style='color: white; font-size: 90%;'><div>:pencil: **Note**</div> AWSElasticBlockStore, GCEPersistentDisk, AzureDisk タイプの PV において、`StorageClass` の `volumeBindingMode` が `WaitForFirstConsumer` 時における dynamic provisioning がベータとなりました。 </blockquote>

-   `kube-apiserver` および `client-go` ライブラリが、UserInfo の "extra" データキーの中で英数字以外をサポートするように修正されました。(**SIG Auth**)

-   `kubeadm` にて join 時に利用されていた `NodeConfiguration` kind が v1alpha3 にて `JoinConfiguration` にリネームされました。([#65951](https://github.com/kubernetes/kubernetes/pull/65951), [@luxas](https://github.com/luxas)) [**SIG Cluster Lifecycle**]

-   `kubeadm` にて init 時に利用されていた `MasterConfiguration` kind が v1alpha3 にて `InitConfiguration` にリネームされました。([#65945](https://github.com/kubernetes/kubernetes/pull/65945), [@luxas](https://github.com/luxas)) [**SIG Cluster Lifecycle**]

-   `kubelet` が cAdvisor の Web UI を公開するために利用していた `--cadvisor-port` が 1.12 にて完全に削除されました。もし、それがまだ必要な場合は `DaemonSets` の機能などを使い、自分で起動してください。([#65707](https://github.com/kubernetes/kubernetes/pull/65707), [@dims](https://github.com/dims))

-   Cluster Autoscaler のバージョンが [1.3.1-beta.1 にアップデート](https://github.com/kubernetes/autoscaler/releases/tag/cluster-autoscaler-1.3.1-beta.1)されました。([#65857](https://github.com/kubernetes/kubernetes/pull/65857), [@aleksandra-malinowska](https://github.com/aleksandra-malinowska)) [**SIG Autoscaling**]
    <blockquote><div>:pencil: **Note**</div> GPU Type のメトリクスサポート、GKE における GPU limits のサポートなどです。</blockquote>

-   `kubeadm` における `v1alpha1` の config API が削除されました。([#65628](https://github.com/kubernetes/kubernetes/pull/65628), [@luxas](https://github.com/luxas)) [**SIG Cluster Lifecycle**]

-   `kube-apiserver` における `Priority` アドミッションプラグインが `--enable-admission-plugins` フラグを利用時にデフォルトで有効化されるようになりました。`--admission-control` フラグを使っている場合、`PodPriority` を有効化するためには明示的に `Priority` アドミッションプラグインをリストに追加にする必要があります。([#65739](https://github.com/kubernetes/kubernetes/pull/65739), [@liggitt](https://github.com/liggitt)) [**SIG Scheduling**]
    <blockquote style='color: white; font-size: 90%;'><div>:pencil: **Note**</div> `kube-apiserver` でアドミッションコントローラを指定する際には、できるだけ `--admission-control` フラグで全てのプラグインを指定するようなことはせずに、`--enable-admission-plugins` フラグを利用すべきです。そうすることで `kube-apiserver` の各バージョンでデフォルトで利用すべきプラグインを有効化できます。</blockquote>

-   `system-node-critical` および `system-cluster-critical` プライオリティクラスが `Priority` アドミッションプラグインによって `kube-system` ネームスペースに限定されるようになりました。([#65593](https://github.com/kubernetes/kubernetes/pull/65593), [@bsalamat](https://github.com/bsalamat)) [**SIG Scheduling**]
    <blockquote style='color: white; font-size: 90%;'><div>:pencil: **Note**</div> `system-node-critical` と `system-cluster-critical` の利用を `kube-system` ネームスペースに限定し、利用者がこれらのプライオリティクラスを気軽に利用してしまい、本当に必要な system critical なコンポーネントが preempt されてしまうことを防ぐことが目的のようです。</blockquote><blockquote style='color: white; font-size: 90%;'><div>:pencil: **Note**</div> この修正はワークアラウンドだと思われます。より一般的には、Quota Admission Configuration API を用いて実装することが可能です。</blockquote>

-   `kubeadm` において、`etcd`, `kube-apiserver`, `kube-proxy` と言った control plane のコンテナイメージの指定に `arch suffix` を利用しないように変更しました。([#66960](https://github.com/kubernetes/kubernetes/pull/66960), 
[@rosti](https://github.com/rosti)) [**SIG Cluster Lifecycle, SIG Release, and SIG Testing**]

-   `kubeadm` において `HighAvailability`, `SelfHosting`, `CertsInSecrets` の機能が非推奨になり、新しいクラスタ作成時に指定できなくなりました。またこれらのフラグを有効化されたクラスタのアップデートはサポートされません。([#67786](https://github.com/kubernetes/kubernetes/pull/67786), [@fabriziopandini](https://github.com/fabriziopandini)) [**SIG Cluster Lifecycle**]
    <blockquote><div>:pencil: **Note**</div> SIG の issue には細かいことが書いてありませんが、どうやら現在の実装は全て削除され、新たに `kubeadm` のサブコマンドとして再実装されるかも？ ([kubernetes/kubeadm#1072](https://github.com/kubernetes/kubeadm/issues/1072))というステータスのようです。</blockquote>

-   `kube-scheduler` の設定ファイルである `KubeSchedulerConfiguration` kind が、`GroupVersion` の `componentconfig/v1alpha1` から `kubescheduler.config.k8s.io/v1alpha1` に変更になりました。([#66916](https://github.com/kubernetes/kubernetes/pull/66916), [@dixudx](https://github.com/dixudx)) [**SIG Cluster Lifecycle, SIG Scheduling, and SIG Testing**]

-   `kubeadm` における `--skip-preflight-checks` が削除されました。`--ignore-preflight-errors` を利用してください。([#62727](https://github.com/kubernetes/kubernetes/pull/62727), [@xiangpengzhao](https://github.com/xiangpengzhao))

-   cloud config に OpenStack のロードバランサーの設定がなかった場合、ロードバランサーの初期化が行われないようになりました。([#65781](https://github.com/kubernetes/kubernetes/pull/65781), [@zetaab](https://github.com/zetaab))