Neco Weekly (2022-12-23号)
Neco Weekly (2022-12-23号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第18回目の記事となります。
👀 Notable Articles
私たちはKubernetes SchedulerにWasm拡張の夢を見るか
Wasm を利用して Kubernetes Scheduler を拡張する仕組みの検証をおこなっている記事です。
結果として、k8s.io/apiに依存した時点で、TinyGoではコンパイルができなくなります。かなり苦しいですね。
とあるように、Wasm で Kubernetes に関する拡張をおこなうにはやや不便がありそうです。
Kubewarden という Wasm で Kubernetes Admission Webhook を実装できるフレームワークにも同様の問題があり、以下のようなツールで Kubernetes の API に関するソースコードを生成して対応していました。
Kubernetes 1.26: Non-Graceful Node Shutdown Moves to Beta
ノードが突然故障した際にノードに taint をつけると、その上で動く Pod を削除し volume のデタッチをしてくれるという機能です。
データセンターで何百台ものノードを扱っているとノード故障は日常茶飯事なので、こういった故障時の対応を補助してくれる機能は非常にありがたいですね。
ただし、現状は手動で taint をつける必要があるみたいなので、kube-fencing のように故障を検知して自動でフェンシングをおこなう仕組みが別途必要になりそうです。
Kubernetes ControllerをScale-Outさせる方法
Kubernetes のカスタムコントローラーをスケールアウトさせるために Resource 単位でシャーディングをおこなう kubernetes-controller-sharding を解説している発表です。
etcd の Lease を利用して耐障害性を向上させたり、並行 Reconcile を避けるための drain ラベルを使うなど、非常に興味深い手法が紹介されていました。
ちなみに、外部の API/DB 等に依存して1回の Reconcile に時間がかかる場合にコントローラーのスケールアップに限界がくるという話がありましたが、我々の開発している MOCO という MySQL Operator では、 MySQL とやりとりするような時間のかかる処理は goroutine を分離することで、Reconcile の処理が詰まらないような工夫をしています。
興味のある方はぜひソースコードを読んでみてください。
🛠️ Tools, Frameworks, Libraries
Argo CD v2.6 Release Candidate
Argo CD v2.6 のリリース候補が公開されました。
今回は Application リソースに複数の source を指定できるようになったり、ApplicationSet の Progressive Rollout 機能の追加などがあります。
🤝 Events
CI/CD Conference 2023 by CloudNative Days開催決定!CFPエントリーも開始!(〜1/23)
CI/CD Conference 2023 の開催が決定しました。
我々のチームからも何か発表したいと考えています。
あとがき
2022年の Neco Weekly は今回が最後となります。
次回は2023年1月13日から再開する予定なので、引き続きよろしくお願いします。
Discussion