@superbrothers!kubelet が OOMメトリクスを開⽰▶ OOM のメトリクスは kubelet にビルドインされている cAdvisor v0.40.0 で実装され、 kubelet 1.23.0 から使われていたものの、kubelet で利⽤できるようにしていなかった14# HELP container_oom_events_total Count of out of memory events observed for the container# TYPE container_oom_events_total countercontainer_oom_events_total{id="testcontainer",image="test",name="test"} 0 1395066363000
15.
@superbrothers![KEP 2590][alpha] kubectlでサブリソースをサポート▶ kubectl の get, patch, edit, replace サブコマンドに --subresource フラグが追加された▶ このフラグを使⽤することでサブリソースを操作できるようになった15# list status subresource for a single pod.kubectl get pod web-pod-13je7 --subresource status--subresource='':If specified, gets the subresource of the requested object. Must be one of [status scale]. This flag is alpha and may change in the future.defg¶·e:u*%KbO¤QjLMO¨P%Ÿ¸ŽŸ+*>%%%%%%%%%%%¦jkQP¦@jQKP%]¹º16:ue»¼•½<¾¿45:À
@superbrothers!▶ [KEP 127]User Namespaces+ Linux userns のサポートで特権を持つユーザ ID をノード上の⾮特権な ID にマッピングできる+ プロセスがホストに侵⼊できたとしても⾮特権ユーザとして実⾏されるため、影響を限定できる▶ [KEP 1287] In-place Pod Vertical Scaling+ Pod の resource requests/limits が再起動なしに更新できる+ 特にバッチワークロードはリソースが⾜りなくなって停⽌するコストが⼤きくて⽌めたくない▶ [KEP 2008] Container Checkpointing (CRIU)+ 分析を⽬的に実⾏中のコンテナのスナップショットを取得する機能+ https://github.com/checkpoint-restore/criu+ 特定のコンテナのスナップショットを取得することがターゲットで、 完全な Pod のスナップショットを対象としていないが、将来的には実現できるかもしれない▶ [KEP 2091] AdminNetworkPolicy support+ クラスタレベルの NetworkPolicy 機能の追加+ 現状、NetworkPolicy は開発者がアプリケーションを安全にすることを⽬的としており、 クラスタ管理者がクラスタをスコープとして制御する⼿段がない22
23.
@superbrothers!▶ [KEP 2258]Use kubectl to view logs of system services on nodes+ kubectl でノード上のシステムサービスのログを⾒えるようにする+ kubelet を含むシステムコンポーネントのログを⾒るために現状 SSH が必要になっているが、kubectl で完結したいというニーズ+ kubelet にはすでに /var/log のログを表⽰する機能を持っているが、クライアントが存在しない+ 今後 journald サポートが追加で実装される予定+ kubectl logs nodes という形が予定されている▶ [KEP 2593] Enhancing NodeIPAM to support multiple ClusterCIDRs+ 複数の ClusterCIDR (Pod ネットワーク) がサポートされる+ これまで ClusterCIDR は1つの⼤きなものを指定するしかなく、あとから変更しにくい、 ⼤きな CIDR を確保できない等の問題があった+ これに加えてノードによって CIDR とマスクサイズを変更できる機能も加わる+ ヘテロなクラスタでノードのサイズが異なっても同じマスクサイズを使うしかなかった+ 1.24 に実装がマージされていたが、新しい API が追加される際はドキュメンテーションが必須のルールを満たしていないという理由でリバートされてしまった23
24.
@superbrothers!▶ [KEP 2837]Pod level resource limits+ Pod レベルでリソース制限を設定できるようになる+ 個々のコンテナ毎にリソース制限を細かく制御するではなく Pod 単位でざっくり制限できるようにすることでリソース管理が⽤意になる+ Pod のデザインは Pod を VM、コンテナをプロセスを⾒ることができるが、VM の場合 サイズが固定でプロセスは制限なしも多いと思うので、同じことができるようになるという理解▶ [KEP 2872] Keystone Containers+ Job でアプリケーションコンテナが停⽌してもサイドカーコンテナが停⽌せず Pod が終了しないというのサイドカー問題への対応+ この KEP はアプリケーションコンテナが終了したらサイドカーが実⾏されていても kubelet による Pod の終了処理が開始されることに注⼒している+ 別に "[KEP 753] Sidecar Containers" が存在するが、これはコンテナの起動/終了順序の制御もターゲットに含まれており変更範囲が広く開発がうまく進んでいない+ Keystone Containers はスコープを絞ったことが変更範囲を最⼩化できている24
25.
@superbrothers!▶ [KEP 3017]PodHealthyPolicy for PodDisruptionBudget+ PDB で新たに Pod が Ready になったらが古い Pod の削除が開始されるようにできる機能追加+ 現状は Pod が Running になったら古い Pod の削除が開始されるが、 Ready になるまでに時間がかかる Pod で問題がある▶ [KEP 3101] 1:1 pod to node assignment+ 1つの Pod のみを 1つの ノードに割り当てる機能+ ノードのリソースを専有したいという HPC のワークロードで特に要望が多い+ リソース要求をノードサイズに設定してやればよいように⾒えるが、実際にはヘテロなクラスタだと異なるサイズのノードが存在するため、事前にリソース要求を決めることが困難+ spec.CoexistPolicy=DaemonsetAndStaticPods | Any のスペックになる予定▶ [KEP 3162] Add Deallocate and PostStopContainer to device plugin API+ デバイスプラグインの API に PostStopContainer と Deallocate の API コールが追加される+ 使い終わったら初期化処理が必要なデバイスだったり、電⼒消費が激しいデバイスが使い終わったら省電⼒モードに切り替えるとか、セキュリティ関連の HW アクセラレータの場合は内部メモリ上のデータが使⽤後にクリアされるとは限らないため、使⽤後に毎回クリーンアップしないなどなどのユースケースが想定されている25