😽

コンテナレジストリ高速化の話など: Neco Weekly (2023-09-22号)

2023/10/05に公開

Neco Weekly (2023-09-22号)

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

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

👀 Notable Articles

大規模Kubernetesクラスタにおけるコンテナレジストリの高速化

https://blog.cybozu.io/entry/2023/09/21/161930

我々のチームで受け入れていたインターンシップの学生さんが、その成果をブログにまとめてくれました。
Spegel というストレートレスなコンテナレジストリミラーの導入と、Kubernetes v1.26 で導入された Pod Scheduling Readiness という機能を使ったカスタムコントローラーの開発をおこない、コンテナレジストリの性能計測まで実施しています。

CVSSとその限界

https://www.docswell.com/s/hasegawa/56Y9J7-CVSS#p1

脆弱性を判断するときに CVSS のスコアだけだとなかなか判断が難しいことが多いです。
一方、EPSS では、機械学習を利用してその脆弱性が30日以内に悪用される可能性を数値で表してくれるそうです。
この数値も絶対視できるものではないそうですが、脆弱性をチェックする際には参考にしたいと思います。

Organizing a Go module

https://go.dev/doc/modules/layout

Go のプロジェクトのディレクトリ構成についての公式記事が出ていました。
internal パッケージについての言及が多めですね。

Platform Engineering w/ jacopen | fukabori.fm

https://fukabori.fm/episode/104

Platform Engineering の基礎的なところから実践的な話まで、非常に分かりやすくて面白い内容でした。

Kubernetesクラスタ内に大量のServiceリソースがあるとNginxコンテナが起動しなくなる

https://tech.pepabo.com/2023/09/15/large-amount-of-service-resources-in-your-k8s-cluster-prevent-nginx-containers-from-starting/

Kubernetesはデフォルトの挙動として、同じNamespace内にあるServiceリソースの数だけ、コンテナに環境変数を設定します。
また、Nginxコンテナは起動時に、テンプレートファイル内に記載されている環境変数の置換を実行します。envsubst: Argument list too longは、置換する環境変数の量が閾値より多いときに出るエラーです。

トラブルシューティングの記事は面白いですね。
カーネルのレイヤーまで降りていって調査してるのもすごいです。

Soft Reboot

https://cfp.all-systems-go.io/media/all-systems-go-2023/submissions/XVV9QY/resources/ASG_2023_Soft_Reboot_pzQvOii.pdf

systemd v254 から導入された soft reboot に関しての資料です。
soft reboot を利用することで、カーネルを再起動させずにユーザ空間のみの再起動ができるようになるそうです。

From RSS to WSS: Navigating the Depths of Kubernetes Memory Metrics

https://itnext.io/from-rss-to-wss-navigating-the-depths-of-kubernetes-memory-metrics-4d7d77d8fdcb

コンテナのメモリ使用量を監視する際に container_memory_usage_bytes を利用すると、期待しているものとは違う結果が得られる場合があります。
多くの場合は container_memory_usage_bytes から container_memory_cache を引いた値を利用するのがよさそうです。

KEP: SySched - System call-based scheduling

https://github.com/kubernetes-sigs/scheduler-plugins/tree/master/kep/399-sysched-scoring

Pod が使用するシステムコールのリスクに基づいて、Pod のスケジューリングを行うスケジューラプラグインの KEP です。
これを利用することで、ホストカーネルを侵害するような Pod を特定のノードに集めておいて、問題が起きたときの被害の影響範囲を少なくすることができるそうです。

Grafana Pyroscope を用いて Go のアプリケーションで継続的プロファイルしてみた

https://zenn.dev/k6s4i53rx/articles/021a1d65af9e95

さっそく Pyroscope v1.0 を試してみた記事です。
フレームグラフの diff が Grafana で確認できるのはとてもよさそうですね。

【インターンレポート】ブローカーの開発でPyroscopeのスケールアウトを可能にした話

https://engineering.linecorp.com/ja/blog/pyroscope-to-scale-out

こちらは旧 Pyroscope をスケールアウトさせるためにブローカーを開発したという話。
Pyroscope v1.0 の登場でブローカーは不要になったようですが、こういった取り組みをインターンで経験できるのはとてもよいですね。

🛠️ Tools, Frameworks, Libraries

Kustomize v5 の互換性問題

Kustomize v5 では patchesStrategicMerge が Deprecated となり patches を利用することが推奨されています。
しかし、現状の patches では、指定したファイルに複数のリソースのパッチを入れることができません。

以下の PR がリリースされるのを待つ必要がありそうです。
https://github.com/kubernetes-sigs/kustomize/pull/5194

あとがき

今年のインターンシップは期間を2週間から3週間に延ばし、内容もよりチャレンジングなものにしてみました。
メンターの準備も大変だったのですが、我々にとっても非常に有意義な結果を得ることができ、とても良いインターンシップになったと思います。

サイボウズ Necoチーム 😺

Discussion