Kubernetes 1.19: アップグレード時の注意事項

# はじめに

このエントリは、[Kubernetes 1.19 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md#v1190) からアップグレード時に確認すべき内容をまとめています。
具体的には以下の項目を翻訳し、適宜補足やコメントを追加しています。

- Urgent Upgrade Notes
- Known Issues

その他の内容は [Kubernetes 1.19 の変更点まとめ](https://qiita.com/uesyn/items/ecc9edf67e0149675705)を参照ください。

このエントリでは翻訳部分と補足などの筆者の追加のコメントは :pencil: のあとに追加するようにしています。

## アップグレード時に確認すべき注意事項(Urgent Upgrade Notes)

- マスターコンポーネントのベースイメージ(kube-controller-manager)が debian から distroless に変更されました。もし、スクリプトを使用するFlex Volumeのサポートが必要な場合には、必要なパッケージ(bashなど)を持った独自イメージをビルドしてください。([#91329](https://github.com/kubernetes/kubernetes/pull/91329), [@dims](https://github.com/dims)) [SIG Cloud Provider, Release, Storage and Testing]
- ベーシック認証をサポートするために利用する `--basic-auth-file` フラグが削除されました。似た機能を利用を続けたい場合は`--token-auth-file`に移行してください。([#89069](https://github.com/kubernetes/kubernetes/pull/89069), [@enj](https://github.com/enj)) [SIG API Machinery]
  - :memo: API server の認証としてサポートされていたベーシック認証が削除されたという話です。
- Azure blob disk(kind: Shared, Dedicated)は非推奨になりました。kind: Managedをkubernetes.io/azure-diskのStorage Classで使用する必要があります。([#92905](https://github.com/kubernetes/kubernetes/pull/92905), [@andyzhangx](https://github.com/andyzhangx)) [SIG Cloud Provider and Storage]
- CVE-2020-8559 (Medium): Kubeletへのリクエストを攻撃者に傍受されると元のリクエストの認証情報を利用できる問題(詳細はこちら#92914)に対応するため、APIサーバは101以外のアップグレードリクエストをプロキシしなくなりました。101レスポンス以外をレスポンスするバックエンド(拡張APIサーバなど)が動かなくなる可能性があります。
    - :memo: 1.18.6, 1.17.9 などでもこの変更は含まれています。該当するバージョンを利用している方は早めのアップグレードをおすすめします。
- kubeadm は非推奨の `--cgroup-driver` フラグを `/var/lib/kubelet/kubeadm-flags.env` に設定しなくなりました。`kubeletconfig.yaml` で設定されます。 `/var/lib/kubelet/kubeadm-flags.env` または `/etc/default/kubelet`（RPMの場合は`/etc/sysconfig/kubelet`）にこのフラグがある場合は、それを削除し、KubeletConfigurationを使用して値を設定してください ([#90513](https://github.com/kubernetes/kubernetes/pull/90513), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle]
- Kubeadm は ClusterConfiguration でユーザー指定の etcd バージョンを尊重し、適切に使用するようになりました。 ClusterConfiguration で指定されたバージョンを維持したくない場合は、kubeadm-config 構成マップを編集して削除する必要があります。([#89588](https://github.com/kubernetes/kubernetes/pull/89588), [@rosti](https://github.com/rosti)) [SIG Cluster Lifecycle]
- Kubeadm は、systemd-resolved サービスがアクティブであっても、ユーザーが設定した resolvConf 値を尊重します。 kubeadmは、`/var/lib/kubelet/kubeadm-flags.env` の `--resolv-conf` にフラグを設定しなくなりました。 `/var/lib/kubelet/kubeadm-flags.env` または `/etc/default/kubelet` （RPMの場合は `/etc/sysconfig/kubelet`）にこのフラグがある場合は、それを削除し、KubeletConfiguration を使用して値を設定してください。([#90394](https://github.com/kubernetes/kubernetes/pull/90394), [@SataQiu](https://github.com/SataQiu)) [SIG Cluster Lifecycle]
- Kubeadm： `kubeadm init` ワークフローで実施される kubelet-start フェーズを kubeconfig フェーズの後に移動します。 これにより、kubeletConfiguration コンポーネントの構成ファイル（`/var/lib/kubelet/config.yaml`）が生成された後にのみ kubeadm が kubelet を起動し、OpenRC などの init システムが kubelet サービスをクラッシュループできない問題を解決します。([#90892](https://github.com/kubernetes/kubernetes/pull/90892), [@xphoniex](https://github.com/xphoniex)) [SIG Cluster Lifecycle]
- `kubeadm config upload` コマンドは、 GA の廃止サイクルが終わり、削除されました。今後使用する場合は代わりに `kubeadm init phase upload-config` を使用してください。([#92610](https://github.com/kubernetes/kubernetes/pull/92610), [@rosti](https://github.com/rosti)) [SIG Cluster Lifecycle]
- `kubescheduler.config.k8s.io/v1alpha2` は `kubescheduler.config.k8s.io/v1beta1` にアップグレードされました。([#91420](https://github.com/kubernetes/kubernetes/pull/91420), [@pancernik](https://github.com/pancernik)) [SIG Scheduling]
  - `.bindTimeoutSeconds` はプロファイル毎に設定が分けられ `VolumeBinding`のためのプラグインの引数の一部に移動しました
  - `.extenders` は API 標準を満たすために更新されました
     - `.extenders` の復号化は大文字と小文字を区別するようになりました。これはすべてのフィールドに影響します。
     - `.extenders[*].httpTimeout` は `metav1.Duration` になりました
     - `.extenders[*].enableHttps` は `.extenders[*].enableHTTPS` に名前が変更されました
  - `RequestedToCapacityRatio` の復号化は大文字と小文字を区別するようになりました。これはすべてのフィールドに影響します。
  - `DefaultPodTopologySpread` [plugin] は `SelectorSpread` に名前が変更されました
  - `Unreserve` extension point は プロファイル定義から削除されました。すべての `Reserve` プラグインは `Unreserve ` を呼び出すように実装する必要があります。
  - `.disablePreemption` は削除されました。 DefaultPreemption PostFilter plugin によって preemption を無効化することができます。
 
## 既知の問題点(Known Issues)

- 新しく登場したアルファ機能のStorage capacity trackingは、ボリュームのbinding modeWaitForFirstConsumerの制限の影響を受けることが知られています [#94217](https://github.com/kubernetes/kubernetes/issues/94217)