今年一番面白かったトピックの振り返りなど: Neco Weekly (2023-12-22号)
Neco Weekly (2023-12-22号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第47回目の記事となります。
年内最後の記事ということで、今年の Neco Weekly でそれぞれが気になった記事や技術トピックを振り返りました。
今年紹介したトピックの振り返り
大規模Kubernetesクラスタにおけるコンテナレジストリの高速化
3月のNeco Weeklyで、Spegelというステートレスな分散コンテナレジストリミラーを紹介しました。
サイボウズの夏のインターンシップではSpegelの評価、および課題解決のためのカスタムコントローラー開発をおこないました。
Spegelはステートレスで構成要素が少なく、非常にメンテしやすいアーキテクチャになっており、我々のプラットフォームにマッチしたコンテナレジストリだと感じています。今後は本番導入を目指していく予定です。
(Neco Weekly 2023-03-17号、Neco Weekly 2023-09-22号)
CiliumにおけるGeneveプロトコルを用いたDSRの実装と導入
Cilium 1.14 からNeco チームが取り組んだ DSR with Geneve 機能が利用できるようになりました。
Cilium が提供する L4LB 機能は Direct Server Return (DSR) を利用することができます。
Neco チームではこの DSR 機能を有効化して L4LB を運用しています。
DSR with Geneve は Neco で運用する際に発生した問題を解決するために Upstream に提案、実装を行いました。
詳細は CNDT 2023 で発表しましたのでそちらをご覧ください。
Kubernetes 1.28でFeatureGateになったSidecar containersをJobで試す
Kubernetes 1.28で入ったSidecarContainersの紹介です。
今までのKubernetesでは、Podに複数のコンテナを設定した場合にサイドカーコンテナを区別する方法はありませんでした。これに起因する問題として、例えばサイドカーを利用するJobを作成した場合、ShareProcessNamespaceを使ってPIDを共有しSIGTERMを送るなどしてサイドカーのコンテナを終了させないとJobが終了扱いにならない問題がありましたが、このSidecarContainersの機能を使うことでこのような細工が不要になりました。
Jobの動作の詳細はブログ記事をご覧ください。
CVSSとその限界
アプリケーションの脆弱性の重要度を示す CVSS のスコアは仕組み上、脆弱性の公開時に主観を伴って判断されている部分があります。そのため、各種機関によってスコアにばらつきがあったり、PoC の実装状況によって重要度を変えていくことができませんでした。
新しい EPSS という指標では、機械学習を利用して脆弱性が30日以内に悪用されるされる可能性を数値で表してくれます。これもまた一つの参考ではありますが、脆弱性の重要度を判断する上で参考になりそうです。
A fail-in-place approach for sustainable server operations
サーバの修理回数を減らすための仕組みについての紹介です。
今まではサーバの部品が故障した際には、都度サーバを修理に出していたそうです。
実際にサーバの部品が故障した際に修理に出す必要があるかを調べたところ、部品によっては冗長性があり一つの部品が使えなくなってもサーバを問題なく動かすことができることがわかったそうです。
さらに、部品が使えなくなることによってパフォーマンスに影響があるかを調べたところ、部品の一部をDeactivationすればパフォーマンスにも影響がでないことがわかったそうです。
そこで、サーバが故障した際は冗長性がある部品に関しては故障した部品をDeactivationして、サーバを動かし続ける運用方法に変えたそうです。
この運用方法により、従来のサーバの運用方法に比べて修理回数が60%ほど削減されたそうです。
👀 Notable Articles
入門 eBPF
入門eBPF が O'reilly より発売されました。
eBPF は Linux カーネルの挙動を安全かつ動的に拡張できる機能で、近年非常に注目されています。
しかし、これまで日本語で体系的にまとまった情報はほとんど存在していませんでした。
この本は eBPF の概要から、重要なコンポーネントである検証器 (verifier) までハンズオンを交えつつ丁寧に解説されています。
eBPF という言葉は聞いたことあるけど触ったことはない人から eBPF のコードを書いたことがある人まで幅広い層におすすめです。
(弊社の sat も翻訳に参加しています)
BPF Programmable Netdevice
BPF Programmable Netdevice (LPC 2023)
2023年10月にLinuxに入った新しいネットワーク仮想デバイスのnetkitの紹介スライドです。
カーネル空間のネットワーク処理とホスト側の仮想デバイスのbacklog queueをバイパスする仕組みを実装し、Pod間の通信が単純なホスト間通信と同等以上の通信パフォーマンスを発揮できるようにしたそうです。
netkitの開発者はCiliumの開発を主導するIsovalentの方ということで、今後Ciliumのnetkit対応が実装されるのが楽しみです。
HashiCorp Vaultもフォークへ、「OpenBao」がLinux Foundation傘下で進行中
2023年8月、HashiCorp から Terraform や Vault などのソフトウェアのライセンスを Business Source License v1.1 (BSL 1.1) に変更するというアナウンスがありました。
既に Terraform のフォークとして OpenTofu が立ち上がっていますが、今回 Vault も OpenBao という名前でフォークされることになったようです。
eBPFを使ったOpenTelemetryのGo自動計装ライブラリを調べる
アプリケーションの分散トレーシングをする際、Java や Python などでは言語ランタイムのサポートがありますが、Go では通常、ソースコードに手を加えず計装 (Instrumentation) をする方法がありませんでした。
この記事では、opentelemetry-go-instrumentation を使い、eBPF の uretprobe を用いて Go の自動計装を行う方法が紹介されています。
あとがき
年内最後の記事ということで、今回はNecoメンバーの気に入っているトピックの振り返りを中心にお届けしました。
来年も引き続き面白い技術トピックを紹介して行きたいと思っていますので、何卒よろしくお願いいたします。それでは、よいお年をお迎えください。
Discussion