Neco Weekly (2022-11-02号)
Neco Weekly (2022-11-02号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第13回目の記事となります。
🤝 KubeCon + CloudNativeCon North America 2022
KubeCon で面白かったセッションをいくつか紹介します。
現在のところ動画は参加登録した人しか見ることはできませんが、1ヶ月後くらいに YouTube で公開されると思います。
Essential Patterns For Designing And Implementing Your Operator
Kubernetes の Operator をつくるときのアンチパターン、API Server の負荷を下げる方法、キャッシュの効率的な使い方、Multi-cluster Client の話など。
controller-runtime の詳しい使い方が紹介されているのでおすすめです。
Resize Your Pods In-Place With Deterministic eBPF Triggers
前半は、NecoWeekly 2022-10-21号でも紹介した In-Place Pod Resize の話です。
後半は、eBPF を利用して Pod 内で実行されるコマンドをトリガーにしてリソースを増減させる話です。
普段は Pod に 50MB しかメモリを割り当ててないけど、eBPF を利用して Pod 内で重たい処理(make)の実行を検出したら、In-Place Pod Resize の機能を利用してメモリを5GBに増やすという例を紹介していました。
非常にトリッキーではありますが面白い仕組みですね。
Towards Something Better Than CRDs In a Post-Operator World
kube-bind の APIBinding/APIExport という仕組みを使って、Operator を SaaS として利用・提供する仕組みの紹介です。
自分たちのクラスタに Operator を運用しなくても、Operator の機能を利用できるので非常に便利そうです。
また、1つの会社内でマルチクラスター Kubernetes を運用しているケースでも役立ちそうですし、いろいろ夢が広がりますね。
Cgroupv2 Is Coming Soon To a Cluster Near You
cgroup の基本的な説明から、v2 での変更点、Pod Spec とのマッピング、CPU Limits に関する議論、さらには将来的な機能の紹介など、非常に充実した内容でした。
おすすめのセッションです。
100Gbit/S Clusters With Cilium: Building Tomorrow’s Networking Data Plane
Cilium における IPv6 を利用した低レイテンシーネットワーク上の取り組みについて紹介しています。
Neco チームではそれほど高いパフォーマンスのネットワークを必要としているわけではありませんが、Cilium の目指している方向などがうかがい知れるセッションでした。
👀 Notable Articles
PromLabs and Chronosphere Open-Source the PromLens Query Builder
PromLens が Prometheus コミュニティに寄付されて、OSS として利用できるようになるそうです。
PromLens は PromQL を解析して可視化するツールでとても便利そうなので、一度試してみたいところです。
The four Golden Signals of Kubernetes monitoring
サービスをモニタリングする際の重要な観点として Error, Saturation, Traffic, Latency という4つの指標をあげ、Kubernetes ではそれぞれどのようなメトリクスを見ればいいのかを紹介しています。
イギリスの有名な童話「3びきのくま」をネタにしているのですが、日本人にはなじみがないのであまりピンとこないですね…。
client-go-examples
Kubernetes のクライアントライブラリである client-go のいろいろな使い方を紹介しているリポジトリです。
Neco チームでは controller-runtime がラップしているクライアントを使うことが多いのですが、生の client-go の使い方を知っておくと役立つこともあるかと思います。
How to communicate effectively as a developer
開発者がテキストベースのコミュニケーションをおこなう際に、解像度と共感性の高い文章を書くと良いという内容です。
Slack や GitHub でのやりとりなどを例に挙げて分かりやすく解説しています。
👀 Releases
Argo CD v2.5
待望の Argo CD v2.5 がリリースされました。
👀 Tools
Building re-usable operators with controller-idioms
カスタムコントローラを作るときによくあるパターンの実装を提供するライブラリの紹介動画です。
例えば、owner ではないリソースを watch する仕組みや、特定のリソースの reconcile を一時停止する仕組みなど、カスタムコントローラを作ったことがある人なら欲しくなるような機能がいろいろ入っています。
Medik8s - Kubernetes Node Remediation
ノード故障を検出すると kubectl cordon/drain
したりノードを再起動したりして、自動的にワークロードの復旧を試みてくれるツールのようです。
Neco チームでもノードの自動復旧機能が欲しいと思っているところなので、非常に気になります。
mirrord
Telepresence のように、Kubernetes クラスタ内の特定の Pod の処理を手元のローカルプロセスとして動かし、開発やデバッグするためのツールです。
Telepresence との違いは、複数人で同じクラスタを共有可能だったり、コンテナではなくローカルプロセスとして動くので開発しやすいところのようです。
gobra
Go のコード検証ツールです。
以下のように、Go のコードに事前条件や事後条件、純粋関数かどうかなどのアノテーションを付与して検証をおこなうようです。
package tutorial
ensures res == (n % 2 == 0)
pure func isEven(n int) (res bool) {
return n % 2 == 0
}
ensures isEven(n) ==> res == n / 2
ensures !isEven(n) ==> res == n / 2 + 1
func halfRoundedUp(n int) (res int) {
if isEven(n) {
res = n / 2
} else {
res = n / 2 + 1
}
return res
}
あとがき
早いもので、今年もアドベントカレンダーの季節が近づいてきました。
Kubernetes Advent Calendar たのしみですね。
Discussion