Kubernetes 1.15: Urgent Upgrade Notes と 既知の問題 (Known Issues)

# はじめに

このエントリは、[Kubernetes 1.15 の CHANGELOG](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md) からUrgent Upgrade Notes と 既知の問題 (Known Issues)についてまとめています。翻訳に合わせて補足を追記しています。その他の内容は

## 既知の問題点(Known Issues)

- kubeadm 1.15.0では、コントロールプレーンノードを同時に参加させることはできません。 この機能は1.15.0でのリリースを予定していましたが、フォローアップパッチリリースで修正されるかもしれません。
- `--log-file`を使うことは1.15では問題があることが知られています。 これは物事が同じファイルに複数回記録されているように見えます。 この問題の動作と詳細、およびそれを修正するためのいくつかの予備的な試みが[こちら](https://github.com/kubernetes/kubernetes/issues/78734#issuecomment-501372131)に文書化されています。

## アップグレード前に確認が必要な注意点(Urgent Upgrade Notes)

#### API Machinery

- `k8s.io/kubernetes`と公開されているコンポーネント（`k8s.io/client-go`や`k8s.io/api`のような）は依存バージョン情報を含むgoモジュールファイルを含んでいます。 goモジュールを使って `k8s.io/client-go`を使うことについての詳細は [go-modules](http://git.k8s.io/client-go/INSTALL.md#go-modules) を参照してください。

#### Apps

- hyperkube docker imageは現在これらのエイリアスを作成するので、hyperkubeの短いエイリアスはソースコードから削除されました。 ([＃76953](https://github.com/kubernetes/kubernetes/pull/76953)、[@Rand01ph](https://github.com/Rand01ph))
    - :memo: `apiserver`, `controller-manager`, `proxy`, `scheduler` のエイリアスが削除されたため、利用していた方は `kube-apiserver` のように省略されていない指定に変更する必要があります。

#### Auth

- Rancher認証情報プロバイダは削除されました。 これはあなたが下流のRancherディストリビューションを使用している場合にのみ影響します。([#77099](https://github.com/kubernetes/kubernetes/pull/77099), [@dims](https://github.com/dims))

#### AWS

- v1.13 で廃止予定の `system：aws-cloud-provider` クラスタロールはもはや自動作成されていません。 AWSクラウドプロバイダーを使用するデプロイはデプロイの一部として `kube-system`名前空間の `aws-cloud-provider` サービスアカウントに必要な権限を与えるべきです。([#66635](https://github.com/kubernetes/kubernetes/pull/66635), [@wgliang](https://github.com/wgliang))

#### Azure

- KubeletはAzure上でIDなしで実行できるようになりました。 サンプルクラウドプロバイダ設定は次のとおりです。 `{"vmType"："vmss"、"useInstanceMetadata"：true、"subscriptionId"："<subscriptionId> "}`
- 複数のKubernetesクラスタが同じリソースグループを共有できるようになりました
    - 以前のリリースからアップグレードするときに、複数のクラスタが同じリソースグループを共有すると、パブリックIPで問題が発生します。これらの問題を解決するには、クラスタに次の変更を加えます。
関連するLoadBalancerサービスを再作成するか、既存のパブリックIPに新しいタグ 'kubernetes-cluster-name：<cluster-name>'を手動で追加します。
`kube-controller-manager --cluster-name = <cluster-name>`を使って各クラスタを異なるクラスタ名で設定します([#77630](https://github.com/kubernetes/kubernetes/pull/77630), [@feiskyer](https://github.com/feiskyer))
- Azureクラウドプロバイダーのクラウド設定は、Kubernetes Secret オブジェクトの kube-system/azure-cloud-provider設定できるようになりました
    - Secretオブジェクトはcloud-configキーにシリアライズされたバージョンの `azure.json`ファイルを持ちます。 そしてSecretの名前はazure-cloud-providerとなっています。
    - cloud-configファイルに新しいオプションcloudConfigTypeが追加されました。 サポートされている値は `file`、`secret`そして `merge`です（`merge`がデフォルト値です）。
    - Azureクラウドプロバイダーに Secret オブジェクトの読み取りを許可するには、[RBACの規則](https://github.com/kubernetes/kubernetes/pull/78242)を構成する必要があります。

#### CLI

- 1.10 で廃止予定となっていた `kubectl scale job` は 、削除されました。([#78445](https://github.com/kubernetes/kubernetes/pull/78445), [@soltysh](https://github.com/soltysh))
- 廃止予定となっていた`kubectl exec` のための `--pod/p` フラグは削除されました。このフラグは 1.12 で廃止予定となっていました。([#76713](https://github.com/kubernetes/kubernetes/pull/76713), [@prksu](https://github.com/prksu))

#### Lifecycle

- 廃止予定の古いkubeadm v1alpha3設定のサポートは完全に削除されました。([#75179](https://github.com/kubernetes/kubernetes/pull/75179), [@rosti](https://github.com/rosti))
- kube-up.sh は "centos" と "local" プロバイダのサポートをしなくなりました。 ([#76711](https://github.com/kubernetes/kubernetes/pull/76711), [@dims](https://github.com/dims))

#### Network

- 廃止予定となっていた `--conntrack-max` がkube-proxyから削除されました。このフラグを使う人は代わりに `--conntrack-min` と `--conntrack-max-per-core` に切り替えるべきです。 ([#78399](https://github.com/kubernetes/kubernetes/pull/78399), [@rikatz](https://github.com/rikatz))
- 廃止予定となっていた `--cleanup-iptables` が kube-proxy から削除されました。 ([#78344](https://github.com/kubernetes/kubernetes/pull/78344), [@aramase](https://github.com/aramase))

#### Node

- 廃止予定となっていた kubelet の　`AllowPrivileged`, `HostNetworkSources`, `HostPIDSources`, and `HostIPCSources` フラグが削除されました。これらの制限を実施する場合は 代わりに admission control (PodSecurityPolicyなど)を通して制限すべきです。([#77820](https://github.com/kubernetes/kubernetes/pull/77820), [@dims](https://github.com/dims))
- 廃止予定となっていた　kubelet の `--allow-privileged` フラグが削除されました。 kubelet のマニフェストファイルや kubelet を起動するためのスクリプトからそのフラグを削除してください。([#77820](https://github.com/kubernetes/kubernetes/pull/77820), [@dims](https://github.com/dims))
- kubeletはノード、コンテナランタイム、kubelet、pod、コンテナのcgroupsメトリクスのみを収集するようになりました。([#72787](https://github.com/kubernetes/kubernetes/pull/72787), [@dashpole](https://github.com/dashpole))

#### Storage

- `Node.Status.Volumes.Attached.DevicePath`フィールドはCSIボリュームに対して設定解除されました。 このフィールドに依存するすべての外部コントローラを更新する必要があります。([#75799](https://github.com/kubernetes/kubernetes/pull/75799), [@msau42](https://github.com/msau42))
- CSI alpha CRD が削除されました。([#75747](https://github.com/kubernetes/kubernetes/pull/75747), [@msau42](https://github.com/msau42))
- `StorageObjectInUseProtection` アドミッションプラグインはデフォルトで有効になりました。 デフォルトで有効になっているアドミッションプラグインは v1.15.0 では `NamespaceLifecycle`、`LimitRanger`、`ServiceAccount`、`PersistentVolumeLabel`、`DefaultStorageClass`、`DefaultTolerationSeconds`、`MutatingAdmissionWebhook`、`ValidatingAdmissionWebhook`、`ResourceQuota`、`StorageObjectInUroteProtection` です。 `--admission-control`フラグを設定していなかった場合、クラスタの振る舞いが変わるかもしれませんので注意してください。 ([#74610](https://github.com/kubernetes/kubernetes/pull/74610), [@oomichi](https://github.com/oomichi))