KubeCon - CloudNativeCon North America 2023 のご紹介


この記事は検索エンジンプロダクトを一緒に開発してた同窓会 [Advent Calendar 2023](https://qiita.com/advent-calendar/2023/alumni)の21日目の記事です！

今回は今年11月に参加したKubernetesコミュニティの一大イベント、[KubeCon North America](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/) について書きたいと思います！

# KubeConとは
クラウドネイティブコンピューティング技術を推進する非営利団体 Cloud Native Computing Foundation が主催するイベントです。世界中のKubernetesユーザから自社のプラクティス・事例紹介が行われたり、コントリビューターから最新の機能、アップデートの紹介が行われます。
毎年北米とヨーロッパで1回ずつ開催されるのですが、今年の北米回はシカゴでの開催でした。

スケジュールはこんな感じで11/6-11/9 朝から晩までびっしりとセッションがあります。

![スクリーンショット 2023-12-20 21.00.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538478/3fdbd7c3-e15c-1803-18f6-c1066a0d9f36.png)
→ [詳細スケジュールはこちらから](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/program/schedule/)

数が凄すぎてとてもまとめきれなかったので、今回はハイライトとしてKeynoteセッションを少しご紹介します。

# Welcome + Opening Remarks
- Presenter: Priyanka Sharma, Executive Director, CNCF
- [Video Link](https://www.youtube.com/watch?v=NcLAVtQ5H4A&list=PLj6h78yzYM2MYc0X1465RzF_7Cqf7bnqL&index=2)

CNCF代表からの一番最初のKeynoteです。ここではWeb Service主体の流れからAI/ML領域がKubernetesの主戦場となっていることが一貫して取り上げらました。

6年前のKubeConで初めてOpenAIのプラットフォームエンジニアリングチームが登壇し、何日も稼働する機械学習のTraining(訓練)JobをKubernetes上で運用する事例紹介がされました。現在では、KubernetesはGenAIの動きと密な共生関係にあり、Kubernetesの発達がGenAI製品の発展に貢献するまでになりました。

AI/MLワークロードの運用はこれまでとは前提が全く異なり、データセンターだけでなくエッジコンピューティングも想定した設計、GPUの適切サイズの見極めやリソースアロケーションなどの課題に多くの企業が取り組んでいます。CNCFの取り組みとしてはKubernetes v1.27(alpha)から利用可能となる[Dynamic Resource Allocation](https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/)が紹介されました。

また、セッション中ではML開発環境の例として、ローカルマシンで[kind](https://kind.sigs.k8s.io/)を活用してLLM Chatbotを起動させるデモなども紹介されました。デモに使われたソースコードはすべて[こちら](https://github.com/cncf/llm-starter-pack)に公開されています。

# Environmental Sustainability in the Cloud Is Not a Mythical Creature
- Presenter: Frederick Kautz, TestifySec; Rimma Iontel, Red Hat; Tammy McClellan, Microsoft; Marlow Weston, Intel; Niki Manoledaki, Grafana Labs
- [Video Link](https://www.youtube.com/watch?v=na6KPMZF1ys&list=PLj6h78yzYM2MYc0X1465RzF_7Cqf7bnqL&index=5)

こちらのセッションではAI/MLワークロードのホスティングにより大量のコンピューティングリソースが必要になる中、どのように環境保護に向き合っていくかを取り上げられました。

自分のシステムが稼働している間、どれほどの二酸化炭素を排出しているのか？AI/ML領域での開発が活発化する以前の段階で、データセンターのエネルギー消費量は全世界の消費量の1~2%を締めていたそうです。今後はさらに激しくエネルギー消費していくと考えられ、各社でリソース効率化や省エネ稼働に向けて取り組みが活発化しています。IntelやRed Hatなどの企業はVMサイズの見直しを実施した結果、消費電力量を20~30%と削減できた実績などもあり、環境面・経済面でも大きな効果があると注目が集まっています。

最後に、システムの二酸化炭素強度はどのように測れるか？Kubernetesでは二酸化炭素強度のモニタリングのため、以下のような指標・ツールが活用できると紹介されました。
### Software Carbon Intensity
SCIはシステムの二酸化炭素強度を計算するために設けられた公式です。この指標をもとにモニタリング・分析などが可能になります。
```
SCI = ((E * I) + M) per R
* E = Energy consumed by software in kWh
* I = Carbon emitted per kWh of energy, gCO2/kWh
* M = Carbon emitted through the hardware that the software is running on
* R = Functional Unit; this is how software scales, for example per user or per device
```
参考: [Software Carbon Intensity guidance](https://sci-guide.greensoftware.foundation/)

### Kepler
Kepler(Kubernetes-based Efficient Power Level Exporter)はCNCFが開発中のエネルギーモニタリングシステムです。まだ正式リリースされていませんが、eBPFを使いCPUパフォーマンスやLinuxカーネルトレースポイントなどを調査し、調査結果を統計値としてPrometheusメトリクスにエクスポートします。
参考: [Kepler]( https://www.cncf.io/projects/kepler/)

### KEDA
最後にKubernetes Event Driven AutoScalerの一機能の紹介です。KEDAはイベントに応じてKubernetes内の任意コンテナのスケーリングを行うことができます。 特定のイベント（e.g. ユーザーの操作、特定のメトリクス条件）に応じて動作します。今年11月からcarbon-aware-keda-operatorがリリースされ、二酸化炭素強度に基づいてKubernetesワークロードをスケールできるようになりました。
参考: [KEDA operator](https://github.com/Azure/carbon-aware-keda-operator)
 
# A Vision for Vision - Kubernetes in Its Second Decade
- Presenter: Tim Hockin, Distinguished Engineer, Google
- [Video Link](https://www.youtube.com/watch?v=WqeShpaztZY&list=PLj6h78yzYM2MYc0X1465RzF_7Cqf7bnqL&index=19)

こちらはメインコントリビューターの一人, Tim Hockinさんのセッションです。話題に対して時間が随分短かったので概要しか触れられなかったのが残念ですが、Kubernetesの今後10年について触れられました。
何度も取り上げられていますが、AI/ML により、コンピューティングリソースの使用量が増加し、それらのワークロードを効果的かつ効率的に管理するための要件についてがフォーカスポイントとなりました。

## How to manage MANY Clusters
クラスターマネジメントにはバージョン、ネットワーク、スケーリングなど重要な要素がいくつも含まれますが、何百ものクラスターを管理するユーザにとってはなるべく簡略化してほしい領域だと指摘されました。一方で、完全な`ClusterLess`までの到達は難しく、様々なアプリケーションインフラとして対応するためにはユーザに管理を委ねるものは必ず残るとのコメントもありました。今後は複数のクラスターマネジメントをより少ない手順・作業で可能にすることを模索する `Less Clusters`の感覚に近づけられるための考えが主流となるのではないかとの予想が語られました。

## Complexity & Reliability
日々、複雑化した要件が増加しており、Kubernetesの提供機能を取捨選択することの重要性が語られました。要求された機能を提供しない、という選択は覆すことができるが、一度提供した機能を取り下げる選択ははるかに難しく、追加する機能が複雑度にどれほど貢献するのかより慎重に検討することがKubernetesコミュニティには求められることになります。また、複雑度には二面あり、メンテナーが安定して機能提供するための管理コスト （「内部的複雑性」）、ユーザが使いこなすためのコスト（「外部的複雑度」）の2つです。メンテナーはKubernetesについての理解が深い故、外部的複雑度を甘く見積もる傾向があり、これはKubernetesが抱える大きなリスクであるとの指摘がありました。今後はユーザ・メンテナーともに許容できるぎりぎりの複雑度合いを模索する重要性が強調されていました。

# まとめ
改めてKubernetesの勉強がまだまだ足りないと感じられた4日間でした。パフォーマンスチューニング、CICD、マルチクラスター管理、マニフェスト管理など多種多様なトピックに触れられてめちゃくちゃ楽しかったです！お土産コーナーもおもしろグッズ豊富で、子供向けのKubernetes入門絵本を思わず買ってしまいました笑　
![DSC_0109.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538478/78ead46a-b76f-47ee-bc8c-0371f2bfa8bf.jpeg)


他セッションの概要説明と動画は全て[こちら](https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/program/schedule/)からみれるので興味ある方は是非みてください！