Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HA K8s Clusterのスタンダードが覆る!? Cilium 1.18の🔥激アツ🔥新機能
Search
Takuto Nagami
May 23, 2025
Technology
0
290
HA K8s Clusterのスタンダードが覆る!? Cilium 1.18の🔥激アツ🔥新機能
2024/5/23 CloudNative Days Summer 2025にて登壇した際の資料です。
Takuto Nagami
May 23, 2025
Tweet
Share
More Decks by Takuto Nagami
See All by Takuto Nagami
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
290
GopherCon Tour 概略
logica0419
2
150
言葉の壁を越えて ~Gophers EXと歩む海外登壇への道~
logica0419
1
45
Maintainer Meetupで「生の声」を聞く ~講演だけじゃないKubeCon
logica0419
1
480
理想の英語力に一直線!最高効率な英語学習のすゝめ
logica0419
6
410
Gophers EX: What We’ve Been Up To in Feb–May 2025 / 2025年2~5月 Gophers EX活動報告書
logica0419
0
82
Gophers EX プロジェクト説明
logica0419
2
54
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
310
え!! 日本国内でGo言語のバイリンガル勉強会を!?
logica0419
2
370
Other Decks in Technology
See All in Technology
履歴 on Rails: Bitemporal Data Modelで実現する履歴管理/history-on-rails-with-bitemporal-data-model
hypermkt
0
1.6k
Windows で省エネ
murachiakira
0
120
RailsのPostgreSQL 18対応
yahonda
0
1.1k
AI時代に活躍できるエンジニアとは #弁護士ドットコム
bengo4com
0
240
Findy Team+のSOC2取得までの道のり
rvirus0817
0
220
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
170
Geospatialの世界最前線を探る [2025年版]
dayjournal
2
430
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.2k
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
280
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
220
あなたのWebサービスはAIに自動テストしてもらえる?アクセシビリティツリーで読み解く、AIの『視点』
yusukeiwaki
1
3.3k
SOC2取得の全体像
shonansurvivors
1
330
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
3
130
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Raft: Consensus for Rubyists
vanstee
139
7.1k
Making Projects Easy
brettharned
118
6.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Designing Experiences People Love
moore
142
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Scaling GitHub
holman
463
140k
Done Done
chrislema
185
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Transcript
Takuto Nagami X: @logica0419 GitHub: @logica0419 HA K8s Clusterの スタンダードが覆る!?
Cilium 1.18の 🔥激アツ🔥新機能
自己紹介 • Takuto Nagami (logica) • 千葉工業大学 情報科学部 情報ネットワーク学科 4年
• ネットワークコンテンツ研究会 所属 ◦ 数人の自宅サーバーをVPNで繋いでクラウド基盤 作ろうとしてます • 最近はさくらのクラウド シークレット マネージャーをExternal Secretsに対応 させるお手伝いをしたりしています
CNDW2024 プレイベントの続きです
この発表とも関連しています
Cilium • 最近話題のeBPFをフルに用いたCNIプラグイン ◦ AWS / Google Cloudでも採用されている • kube-proxyの置き換えが最も大きな特徴
◦ iptables実装の弱い部分をeBPFで解決 ◦ kube-proxyの無いクラスタを用意し、そこに Ciliumを投げ込む ◦ (置き換えないこともできるが、面白くない)
Highly AvailableなK8sクラスタ • コントロールプレーンが複数台あるクラスタのこと ◦ 公式ドキュメントの中では「Highly Available Topology」と呼ばれている • コントロールプレーンが何個か落ちても大丈夫
◦ 3台以上のコントロールプレーンが必要とされる • KaaS等マネージドなサービスを使わず構築する場合 Control Planeロードバランシング問題が発生する
Control Planeが複数ある Plane Plane Plane
どこ接続すればいいか、わからない Plane Plane Plane ???
固定してしまったら Plane Plane Plane
死んだとき Plane Plane Plane
一巻の終わり Plane Plane Plane 💥
死んだときには Plane Plane Plane
別の所に接続できるように欲しい Plane Plane Plane
Control Planeのロードバランシング • コントロールプレーンを冗長化した際、外部から apiserverに常に接続できる状態を維持する ◦ どこかのノードが死んだらフォールバックする ◦ 同一のIPアドレスで常に接続できる •
Kubernetesエコシステムの中にはツールが無い ◦ “Since this is not part of Kubernetes or kubeadm, this must be taken care of separately.” とドキュメントに書いてある
ロードバランサーの選択肢 https://github.com/kubernetes/kubeadm/blob/main /docs/ha-considerations.md#options-for-software- load-balancing で取れる選択肢が提示されている 1. Keepalived と HAProxy 2.
kube-vip 他にも選択肢が無くはない (CNDW2024 プレイベ参照)
Internal API server hostname • Kubernetesには、内部にkube-apiserverに繋がる Serviceが存在する ◦ Podからのアクセスは通常これが用いられる •
Serviceなのでkube-proxy相当の物が必要 ◦ Ciliumはデプロイ時、直にapiserverのAddress / Portを一組示してやる必要がある ◦ Cilium内部のapiserverアドレスは勝手に書き換わら ないので、仮想IPを指定したい
ロードバランサーが必要な場所 • 外部からapiserverへの接続 • Worker Nodeからapiserverへの接続 • Ciliumからapiserverへの接続 ◦ これはkube-proxyを置き換えるCiliumならでは
◦ これが理由で、CiliumはHAのProduction環境では 基本的に使えないとされていた
1.18 (未リリース) でこれが解決する • 外部からapiserverへの接続 • Worker Nodeからapiserverへの接続 • Ciliumからapiserverへの接続
◦ これはkube-proxyを置き換えるCiliumならでは ◦ これが理由で、CiliumはHAのProduction環境では 基本的に使えないとされていた
kpr: Support kube-apiserver HA
この変更は何? • HA K8s ClusterにおいてCiliumをセットアップする際 ◦ 複数のapiserver URLを指定できるようにする ▪ 以前の単一Address
/ Port指定はDeprecatedに ◦ kube-proxy置き換えのセットアップが完了したら自 動的にInternal API server hostname Serviceに接 続を切り替えてくれる • 3年前くらいに提案されようやく叶った🔥激アツ🔥機能
復習: Internal API server hostname • Kubernetesには、内部にkube-apiserverに繋がる Serviceが存在する ◦ Podからのアクセスは通常これが用いられる
• Serviceなのでkube-proxy相当の物が必要 ◦ Ciliumはデプロイ時、直にapiserverのAddress / Portを一組示してやる必要がある ◦ Cilium内部のapiserverアドレスは勝手に書き換わら ないので、仮想IPを指定したい
これが覆った • Kubernetesには、内部にkube-apiserverに繋がる Serviceが存在する ◦ Podからのアクセスは通常これが用いられる • Serviceなのでkube-proxy相当の物が必要 ◦ Ciliumはデプロイ時、直にapiserverのAddress
/ Portを一組示してやる必要がある ◦ Cilium内部のapiserverアドレスは勝手に書き換わら ないので、仮想IPを指定したい
ロードバランサーが必要な場所 • 外部からapiserverへの接続 • Worker Nodeからapiserverへの接続 • Ciliumからapiserverへの接続 ◦ これはkube-proxyを置き換えるCiliumならでは
◦ これが理由で、CiliumはHAのProduction環境では 基本的に使えないとされていた 上二つはどうなる?
一般的なCNIにおける代替案は存在する • Internal API server hostname Serviceと同じ設定の LoadBalancer Serviceが作れれば外から接続可能 ◦
クラスタの接続先IP設定を後から書き換える必要 • LoadBalancer Serviceを作るためには、外部向けIPアド レスのIPAMをしてくれるコンポーネントが必要 ◦ 現在はほぼMetalLB一択 • ロードバランサー入れるかMetalLB入れるかで、追加の 手間考えたらロードバランサーかな…となるのは自然
Ciliumだからこその強みが出る可能性が • Ciliumは独自に、BGPを用いたIPAM機構がある ◦ Cilium BGP Control Planeと呼ばれている ◦ Cilium単体で、LoadBalancer
Serviceが正常に動く 環境が用意できる! • Cilium単体でのapiserverロードバランシング計画は既 に進みつつある
今後に期待したい
ありがとう ございました Cilium、使ってみて下さい