はじめに
Kubernetes 1.16 の CHANGELOG から SIG Node の取り組みについてまとめます。
What's new
なし
既知の問題点(Known Issues)
なし
アップグレード時の注意点 (Urgent Upgrade Notes)
なし
非推奨・廃止される機能 (Deprecations and Removals)
- kubelet
- 1.14で非推奨となった
--containerized
フラグが削除されました(#80043, @dims)-
--containerized
についてはこちらを参照
-
-
beta.kubernetes.io/os
とbeta.kubernetes.io/arch
ラベルはv1.14以来非推奨であり、v1.18で削除予定です-
上記のラベルを利用している場合は
kubernetes.io/os
とkubernetes.io/arch
を利用してください(Well-Known Labels, Annotations and Taints
)
-
上記のラベルを利用している場合は
- cAdvisorのjson endpointsは1.15以降非推奨です(#78504, @dashpole)
- v1.17でデフォルトでdisableになるようです
-
--node-labels
フラグで、許可された特別なラベルとプレフィックスを持つもの以外のkubernetes.io
やk8s.io
プレフィックスを持つラベルをセットできなくなりました(#79305, @paivagustavo)
- 1.14で非推奨となった
注目機能 (Notable Features)
- Beta
- なし
- Alpha
- RuntimeClassのための新しいadmission controllerを導入しました。対応するRuntimeClassNameが指定された場合、RuntimeClassは特定のRuntimeClassに関連付けられたPodのオーバーヘッドをPodの
spec
に適用されるようになります。PodOverheadはalpha機能としてKubernetes 1.16から利用可能です。(#78484, @egernst)- PodOverheadsを使うとPod自体の作成にかかるOverheadをスケジューリング等に含めることが可能となります。Overheadは自動で決まるものではなくユーザが指定する必要があるようです。
- Ephemeral containersがalpha機能として追加されました。一時的なコンテナをデバッグのような目的で実行中のPodに対して追加可能であり、これは
kubectl exec
が既存のコンテナでプロセスを実行する方法に似ています。また、kubectl exec
と同様に、一時コンテナ用のリソースは予約されておらず、終了時に再起動されません。コンテナのnamespaceのターゲティングはまだ実装されていないため、Pod内の他のコンテナからプロセスを表示するには、process namespace sharingを有効にする必要があります。(#59484, @verb)- Ephemeral Containersについてはこちらの記事へ
- RuntimeClassのための新しいadmission controllerを導入しました。対応するRuntimeClassNameが指定された場合、RuntimeClassは特定のRuntimeClassに関連付けられたPodのオーバーヘッドをPodの
- Misc
- RuntimeClassのためのスケジューリングを追加しました。RuntimeClassは現在nodeSelectorのconstraintsとtolerationsを宣言でき、そこで宣言されたものはそのRuntimeClassを使うPodのPodSpecへマージされます。(#80825, @tallclair)
- これにより事前にRuntimeClassを適切に設定しておけば、ユーザはRuntimeClassを指定するだけで、ノードのlabelやtaintを意識せずにRuntimeClassが利用できるノードを選択してPodを起動できるようになるようです
-
--(kube|system)-reserved-cgroup
を--cgroup-driver=systemd
で指定する場合、完全修飾cgroupfs名を利用可能になりました。(#78793, @mattjmcnaughton)
- RuntimeClassのためのスケジューリングを追加しました。RuntimeClassは現在nodeSelectorのconstraintsとtolerationsを宣言でき、そこで宣言されたものはそのRuntimeClassを使うPodのPodSpecへマージされます。(#80825, @tallclair)
その他の注目機能(Other notable changes)
-
PID cgroup controllerに関連するfeature gatesが無効になっている場合に、PID cgroup controllerの要件を削除しました(#79073, @rafatio)
-
この修正が入る前は
SupportPodPidsLimit
とSupportNodePidsLimit
を無効にしても、PID cgroup controllerのために必要なシステム要件を満たす必要があり、対応していないkernelだった場合にkubeletが正常に起動しなかったようです。
-
この修正が入る前は
-
kubeletのNodeLeaseの潜在的なパフォーマンスの問題を修正しました。Kubeletは、APIサーバーから毎回取得する代わりに、キャッシュされたリースを使用してリースを更新しようとします。(#81174, @answer1991)
-
--cpu-manager-policy
フラグに無効なポリシー名を渡すと、単にフラグを無視して代わりにcpumanager
のデフォルトポリシーを実行する代わりに、kubeletが失敗します。(#80294, @klueska) -
kubeletのnode-status-update-frequencyに基づいて、ノードのリース更新間隔をよりヒューリスティックにします(#80173, @gaorong)
-
CloudProviderによって報告されるノードIPのセットが変更された場合でも、Kubeletは同じプライマリノードIPをより確実に報告するようになりました。(#79391, @danwinship)
-
コンテナのハッシュ値を計算するときは、ハッシュが変更されないように、「nil」または空のフィールドを省略します。コンテナ仕様にゼロ以外のデフォルト値を持つ新しいフィールドの場合、ハッシュは変更されます。(#57741, @dixudx)
-
PodのrestartPolicyがNeverのときにkubeletがPod Sandboxの作成を再試行しないバグを修正しました(#79451, @yujuhong)
-
execのrediness/liveness probesのbodyの長さを制限しました。remote CRIやDocker shimはは最大16MBの出力を読み取り、そのうちexecプローブ自体が10kbを検査します。(#82514, @dims)
- execで無限に出力するようなコマンドを使った場合にノードのリソースを使い切ってしまう問題があり、それが修正されたようです。
-
単一のstatic podファイルおよびhttpエンドポイントからのpodファイルは、10 MBを超えることはできません。HTTP probeのペイロードは現在10KBへ切り詰められます。(#82669, @rphillips)
-
PodOverheadの機能が有効な時、pod cgroupsへpod overheadの内容も適用するようになりました。(#79247, @egernst)
-
Node-Problem-Detector v0.7.1がGCIで使用されます(#80726, @wangzhen127)
-
Node-Problem-Detector v0.7.1がaddonのdaemonsetで使用されます(#82140, @wangzhen127)
-
kubeletの
node-lease-renew-interval
をlease-renew-durationの0.25に変更します (#80429, @gaorong) -
--cloud-provider = external
でノードアドレスが存在しない場合、kubeletのホスト名と内部IPを設定しようとするようになりました (#75229, @andrewsykim)