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
logica / Takuto Nagami
May 23, 2025
Technology
0
78
HA K8s Clusterのスタンダードが覆る!? Cilium 1.18の🔥激アツ🔥新機能
2024/5/23 CloudNative Days Summer 2025にて登壇した際の資料です。
logica / Takuto Nagami
May 23, 2025
Tweet
Share
More Decks by logica / Takuto Nagami
See All by logica / Takuto Nagami
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
65
え!! 日本国内でGo言語のバイリンガル勉強会を!?
logica0419
2
110
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
300
プロポーザル一次〆切に向けて
logica0419
1
58
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
1
2.6k
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
3.2k
Proposal Challengers 2025 募集説明会
logica0419
1
31
Kubernetesを知る
logica0419
21
6.6k
Resizing Animated GIFs Without CGO or Third-Party Libraries
logica0419
2
49
Other Decks in Technology
See All in Technology
KubeCon EU 2025 Recap - Kubernetes CRD Design for the Long Haul: Tips, Tricks, and Lessons Learned / Kubernetes Meetup Tokyo #70 / k8sjp70-crd-long-haul-recap
everpeace
0
110
Why every SwiftUI developer should care about the Environment - iOSKonf25
peterfriese
0
160
さくらのクラウド 開発の挑戦とその舞台裏
kazeburo
0
170
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
630
PythonツールであるpygnmiをSONiCのgNMIに対して使ってみた
sonic
0
340
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
1
220
Software Delivery Observability CI・CD , DORA metrics も Datadog で可視化しよう / datadog-ci-cd-observability
parupappa2929
0
190
GrafanaをClaude DesktopからMCPで触ってみた
hamadakoji
0
1.3k
スプリントゴールで価値を駆動しよう
takufujii
3
1.4k
Software Architecture in an AI-Driven World
atty303
64
27k
テスト設計、逆から読むとおもしろい──仕様にない“望ましさ”の逆設計
mhlyc
0
200
(なるべく)無料で始めるTerraformのインフラ構築体験
sakamossaaaan
1
110
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How GitHub (no longer) Works
holman
314
140k
Typedesign – Prime Four
hannesfritz
41
2.6k
A designer walks into a library…
pauljervisheath
205
24k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
24
2.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.2k
The Pragmatic Product Professional
lauravandoore
33
6.6k
Bash Introduction
62gerente
613
210k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
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、使ってみて下さい