はじめに
Kubernetes 1.17 の CHANGELOG から Known Issues と Urgent Upgrade Notesについてまとめます。
Known Issues(既知の問題)
- コンテナがprivilegedなとき、volumeDevicesマッピングが無視されます
- conformance testの
Should recreate evicted statefulset
がPod ss-0 expected to be re-created at least once
という理由で失敗します- これは
Predicate PodFitsHostPorts failed
というスケジューリングエラーで、根本原因はホストポートの21017
ポートのコンフリクトです - このポートはノード上で稼働している他のアプリケーションにより一時的なポートとして既に使用されています
- この問題は1.18で検討されます
- これは
-
NewDiscoveryClientForConfig
またはNewDiscoveryClientForConfigOrDie
を使って作られたclient-goのdiscovery clientはデフォルトで通常のディスカバリリクエストパターンに数秒かかるレート制限を設定されます- これは https://issue.k8s.io/86168 で修正され、v1.17.1で解決されます
- workaroundとして、
Burst
の値は、NewDiscoveryClientForConfig
またはNewDiscoveryClientForConfigOrDie
に渡されるrest.Configで調整できます
Urgent Upgrade Notes(アップグレード前に確認が必要な注意点)
Cluster Lifecycle
- Kubeadm: 新しい
kubelet-finalize
フェーズをinit
ワークフローの一部として追加され、プライマリのコントロールプレーンノード上のkubeletのクライアント証明書のローテーションを自動化するためのサブフェーズが追加されます
- 1.17より前でkubeadm init
により作成された既存のノードでkubeletの証明書のローテーションを望む場合、/etc/kubernetes/kubelet.conf
をPEMのシンボリックリンクを指すように修正しなければなりません
-client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
およびclient-key: /var/lib/kubelet/pki/kubelet-client-current.pem
を組み込みのクライアント証明書と置き換える必要があります(#84118, @neolit123)
Network
- EndpointSlices: EndpointSlicesが既に有効かされているクラスタをアップグレードする場合、EndpointSlice controllerにより管理されるべきEndpointSlicesは
http://endpointslice.kubernetes.io/managed-by
ラベルをendpointslice-controller.k8s.io
へセットする必要があります-
ChangeLogには
http://endpointslice.kubernetes.io/managed-by
とありますが、おそらくendpointslice.kubernetes.io/managed-by
だと思われます
-
Scheduling
- Kubeadm: 追加のapiserverのauthorization-modeを追加する時、デフォルトの
Node, RBAC
は生成されるstatic Podのmanifestへ追加されなくなり、全てをオーバーライドが許可されます (#82616, @ghouscht)-
デフォルト値が適用されなくなるため、この値を変更によりapiserverに追加のNode,RBACに加えてWebhook等を設定している場合、全て指定する必要がありそうです
-
Storage
- ブロックボリュームに使用されるパスがこのリリースで変更されたため、ノードのオンラインアップグレードが許可されないず、Kubernetesクラスターをアップグレードする前にすべてのノードをドレインする必要があります(#74026, @mkimuram)
Windows
- Windowsコンテナの
RunAsUsername
機能がベータとなりました - Widonws ワーカーノードは既存のWindows Server 2019のサポートに加え、Windows Server version 1903をサポートするようになりました
- RuntimeClassスケジューラーにより、LinuxまたはWindows Podを適切なノードに簡単にステアリングできるようになりました
- すべてのWindowsノードは、WindowsコンテナとWindowsワーカーノードの互換性を一致させるために必要なWindowsのメジャー、マイナー、ビルド番号を反映する新しいラベル
node.kubernetes.io/windows-build
を取得します