🍕

分散システム学習コンテンツやHNCの新機能紹介など: Neco Weekly (2023-02-24号)

2023/02/27に公開

Neco Weekly (2023-02-24号)

サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。

今回は第24回目の記事となります。

👀 Notable Articles

Gossip Glomers

https://fly.io/blog/gossip-glomers/

maelstrom-go という Go のライブラリを使って分散システムを作る課題を提供する学習コンテンツです。

maelstrom というツールも提供されており、ネットワーク障害を擬似的に発生させて自分で作成した分散システムが正しく実装できているかどうかを確認することができるようです。
Kafka のようなメッセージングサービスや、Raft を利用した分散合意システムを実装する課題まで用意されていてかなり勉強になりそうです。

なお、これらは Jepsen という実績のある分散システム検証ツールの開発者と協力してつくったそうなので、内容の信頼性は間違いないでしょう。

Kubernetes: cgroup v2 使用時に "failed to create fsnotify watcher: too many open files" エラーが発生する問題の対策

https://qiita.com/superbrothers/items/d13762c1b4853049135c

cgroup v2 では1つの Pod あたり最低2つの inotify instance を消費するため、すぐに上限に達してしまうという問題があるそうです。

ちなみに Neco チームでは上限を 200,000 に設定してあるので大丈夫そうでした。
https://github.com/cybozu-go/neco/blob/e4721f496aed481cc635b6aba7f0592021d3f77a/ignitions/common/files/etc/sysctl.d/70-cybozu.conf#L4

Why I encountered Go memory fragmentation? How did I resolve it?

https://medium.com/@taisho6339/why-i-encountered-go-memory-fragmentation-how-did-i-resolve-it-8542afe16eee
https://zenn.dev/taisho6339/articles/165dc84870e05f

Go のメモリ管理の仕組みを解説しつつ、実際に発生したメモリフラグメンテーションを解決したお話。
問題の解決に至ったトラブルシューティングテクニックも非常に参考になります。

このブログで使われていた Gopher のイラスト がかわいい…。

OWASP Kubernetes Top 10

https://sysdig.jp/blog/owasp-kubernetes-top-10/

Kubernetes クラスタに対する10個の攻撃ベクターとその対策が紹介されている記事です。

RBAC の設定ミスや、サービスメッシュや CNI によるネットワークの制御、サブライチェーンの脆弱性など多岐にわたって解説されているのでとても参考になります。
リスクのある RBAC を検出してくれるツール KubiScan をはじめとして、たくさんのツールを紹介してくれているのもありがたいですね。

Cgroups — Deep Dive into Resource Management in Kubernetes

https://betterprogramming.pub/cgroups-deep-dive-into-resource-management-in-kubernetes-5970e23620f2

cgroups が Kubernetes のリソース管理でどのように利用されているかを詳細に解説している記事です。

I deployed Kubernetes with a 1986 Tandy 102 Portable Computer

https://www.buildon.aws/posts/i-deployed-kubernetes-with-a-1986-tandy-102-portable-computer/

1986年製のポータブルコンピューターで Kubernetes を動かそうとする話です。
さすがにこの時代のもので Kubernetes を動かすのは無理がありますね…😅

yoku0825さんがMySQLスペシャリストになるまでにやってきた勉強法を、私たちにすべて教えてください!

https://engineer-lab.findy-code.io/yoku0825-mysql

MySQL Operator MOCO の開発にも協力していただいている yoku0825 さんのインタビュー記事です。
私も最近は利用している OSS のドキュメントをなるべく頭から読むように心がけているんですが、とても役立つのでおすすめです。

🛠️ Tools, Frameworks, Libraries

Hikaru

https://github.com/haxsaw/hikaru

Kubernetes のマニフェストを読み込んで Python で加工できるツール。
先週紹介した KubeScript と似たようなコンセプトのツールでしょうか。

HierarchicalResourceQuota

https://github.com/kubernetes-sigs/hierarchical-namespaces/pull/183

Hierarchical Namespace Controller の新しい機能として、HierarchicalResourceQuota が提供されるようです。

Kubernetes の標準機能として提供されている ResourceQuota は、Namespace 単位でしかリソース割り当ての制限をおこなうことができません。
一方 HierarchicalResourceQuota を利用すると、階層構造になった Namespace 内のすべてのリソースの合計使用量を制限できるようになるそうです。

HNC v1.1.0-rc2 にこの PR が取り込まれているため、近々リリースされそうです。

ちなみに Neco チームでは、 necotiator という同じコンセプトのものを開発していたりします。

📘 Books

コンテナセキュリティ コンテナ化されたアプリケーションを保護する要素技術

https://www.amazon.co.jp/dp/4295016403

Isovalent の方が書いたコンテナセキュリティに関する書籍です。

データ指向プログラミング

https://www.amazon.co.jp/dp/4798179795

「データ指向アプリケーションデザイン」と同じような方向性の書籍かなと思ったのですが、目次を見る感じはかなりアプリケーション寄りの内容になっていそうです。

🤝 Events

Platform Engineering Meetup #1

https://platformengineering.connpass.com/event/275718/

Platform Engineering がテーマの勉強会。
Platform Engineering という言葉は聞いたことがなかったのですが、どういう取り組みなのかとても気になります。

CA.infra #1 - Kubernetes as a Service

https://cyberagent.connpass.com/event/272843/

Kubernetes as a Service(KaaS)がテーマの勉強会。こちらもおもしろそう。

あとがき

CI/CDカンファレンスに出したプロポーザルは残念ながら落選したのですが、構成を大幅に見直して Kubernetes Meetup Tokyo で発表することとなりました。
実際の Kubernetes クラスターで発生したパフォーマンス障害をもとに、Kubernetes のコントローラーのパフォーマンスチューニングについて話す予定です。
興味のある方はぜひご参加ください。

https://k8sjp.connpass.com/event/275280/

サイボウズ Necoチーム 😺

Discussion