😊

k8s 1.28の新機能SidecarContainersの紹介など: Neco Weekly (2023-07-14号)

2023/07/18に公開

Neco Weekly (2023-07-14号)

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

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

👀 Notable Articles

🌟Kubernetes SidecarContainers feature is merged🌟

https://twitter.com/bibryam/status/1678340796628566017

Kubernetes v1.28 で、サイドカーコンテナーが標準機能としてサポートされるようになります。

これまでもサイドカーコンテナーは通常のコンテナとして定義して利用することができたのですが、v1.28 からは spec.initContainersrestartPolicy=Always を指定して定義することができるようになります。
サイドカーコンテナーを InitContainer として定義することで、以下のような問題が解決できるようになります。

  • Job がサイドカーコンテナーを持っていた場合、メインの処理だけでなくサイドカーコンテナも終了しないと Job が終了しない
  • ログを収集するサイドカーコンテナーが起動のタイミングなどによりログの一部をロストする

これはうれしい新機能ですね。
なお詳細については KEP-753 をご覧ください。

How to monitor Kubernetes network and security events with Hubble and Grafana

https://grafana.com/blog/2023/07/13/how-to-monitor-kubernetes-network-and-security-events-with-hubble-and-grafana/

Neco Weekly 2022-11-18号 で、Grafana と Cilium の提携のニュースを紹介しましたが、その成果として Grafana の Hubble プラグインが発表されました。
Hubble UI と同じように、 Kubernetes クラスタ内のトラフィック情報などを Grafana で表示できるようになるそうです。

この連携は非常にうれしいので、今後ますます発展していくことを期待しています。

How to run faster Loki metric queries with more accurate results

https://grafana.com/blog/2023/07/05/how-to-run-faster-loki-metric-queries-with-more-accurate-results/

Loki でログの傾向を分析するときに正確な結果を出すクエリを書く方法が紹介されています。
結果がレンジクエリになる場合は、クエリのレンジに [$__interval] を指定し、インスタントクエリの場合は [$__range] を指定すべきとのこと。
なお将来的には、自動的に [$__interval][$__range] か判断してくれる [auto] という指定ができるようになるみたいです。

Monitor the past, present, and future of your Kubernetes resource utilization

https://grafana.com/blog/2023/07/12/monitor-the-past-present-and-future-of-your-kubernetes-resource-utilization/

Grafana で CPU やメモリなどのリソース使用量の過去の値、将来の値、将来の予測値を表示する機能について紹介している記事です。
ただしこの機能は Grafana Cloud でのみ提供されているようです。
すごく便利そうなので OSS 版でも提供してほしいところです。

Service Mesh vs. API Gateway on Kubernetes

https://www.signadot.com/blog/service-mesh-vs-api-gateway-on-kubernetes/

サービスメッシュと API Gateway にどのような違いがあるのかを解説している記事です。
サービスメッシュは主にクラスタ内のサービス感の通信を管理するもので、トラフィックの管理や、通信のモニタリング、セキュリティポリシーの適用などに利用されます。
一方の Gateway API は、クラスタ外からの通信を管理するもので、ルーティングやプロトコルの変換、認証・認可などに利用されます。

🛠️ Tools, Frameworks, Libraries

Flux v2.0.0

https://github.com/fluxcd/flux2/releases/tag/v2.0.0

Flux v2 が General Availability (GA) になりました。
Flux v2 では horizontal scaling & sharding capabilities という機能がサポートされています。
これにより、管理するアプリケーションの数が増えたとしてもスケールすることが可能になっています。

我々のチームでは Argo CD を使っているのですが、 Argo CD はクラスタ単位でしかコントローラーを分離することができず、クラスタ内のアプリケーションの数が増えるとパフォーマンスの問題が発生することがあります。
なのでこの Flux の機能は非常にうらやましいですね。

kubesess

https://twitter.com/everpeace/status/1678315792193171463

シェルごとに kubectl の context を切り替えることのできるツール。
複数のクラスタを扱っている場合、kubectl で context を切り替えるとすべてのシェルに影響が出てしまうため、開発環境だと思って操作していたら実は本番環境だったなんていう事故が起きかねません。
このツールを使うとそういった事故を回避できるのでとてもよさそうですね。

Govulncheck

https://go.dev/blog/govulncheck

Neco Weekly 2023-04-14号 で紹介した Govulncheck が v1.0.0 になりました。
これは、自分たちのソースコードが脆弱性を含むパッケージを利用していないかをチェックすることができるツールです。
併せてセキュリティベストプラクティスガイドも公開されているので要チェックです。

BPFを利用し、Linuxカーネルのパラメータを継続的に自動チューニングする「bpftune」。オラクルがオープンソースで公開

https://www.publickey1.jp/blog/23/bpflinuxbpftune.html

BPF を利用して sysctl の設定を監視し、利用状況に応じて適切なチューニングをおこなってくれるというツール。
BPF の使い道として非常に面白いですね。

📘 Books

パケットキャプチャで理解する TLS1.3

https://zenn.dev/arailly/books/41061020f0cfaa

Wireshark を使って TLS の通信をキャプチャし、鍵交換や暗号化、証明書の認証などがどのようにおこなわれているのかを解説しています。
TLS は仕様だけを読んでもなかなか理解するのが難しいので、実際に通信をキャプチャして解析するというのはとても参考になりますね。

基礎からの最新ストレージ入門

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

まだ目次も公開されていませんが、信頼できる著者なので非常に楽しみな一冊です。

あとがき

https://blog.cybozu.io/entry/2023/07/14/170000

今年もサイボウズの新人研修資料が公開されました。
私は「オブザーバビリティ入門」という講義を担当しました。
ログ、メトリクス、トレースに関する基本的な内容を解説しているので、興味のある方はご覧ください。

サイボウズ Necoチーム 😺

Discussion