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
同一クラスタ上でのFluxCDとArgoCDのリソース最適化の話
Search
Kumo Ishikawa
December 10, 2024
Technology
0
620
同一クラスタ上でのFluxCDとArgoCDのリソース最適化の話
Kumo Ishikawa
December 10, 2024
Tweet
Share
More Decks by Kumo Ishikawa
See All by Kumo Ishikawa
Efficient EKS Pod Communication: A Practical Implementation Using Cloudflare Zero Trust and CoreDNS
kumorn5s
2
370
Ameba Falco Security
kumorn5s
0
60
PEK2025: Multi-Tenancy Design in Ameba
kumorn5s
1
1.4k
Ameba CI/CD: Terraform and Argo CD Improvements
kumorn5s
9
3k
Amebaにおける Platform Engineeringの実践
kumorn5s
7
1.4k
HA構成のArgoCD パフォーマンス最適化への道
kumorn5s
3
640
Other Decks in Technology
See All in Technology
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
22k
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
200
スクラムマスターが スクラムチームに入って取り組む5つのこと - スクラムガイドには書いてないけど入った当初から取り組んでおきたい大切なこと -
scrummasudar
3
2.2k
【Agentforce Hackathon Tokyo 2025 発表資料】みらいシフト:あなた働き方を、みらいへシフト。
kuratani
0
120
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
11
5.4k
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
1.4k
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.8k
Proxmoxで作る自宅クラウド入門
koinunopochi
0
110
これまでのネットワーク運用を変えるかもしれないアプデをおさらい
hatahata021
3
180
AI時代のアジャイルチームを目指して ー スクラムというコンフォートゾーンからの脱却 ー / Toward Agile Teams in the Age of AI
takaking22
11
6.7k
AI アクセラレータチップ AWS Trainium/Inferentia に 今こそ入門
yoshimi0227
1
240
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
98
Between Models and Reality
mayunak
1
170
How GitHub (no longer) Works
holman
316
140k
A Tale of Four Properties
chriscoyier
162
24k
Become a Pro
speakerdeck
PRO
31
5.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
280
Tell your own story through comics
letsgokoyo
1
780
Navigating Team Friction
lara
191
16k
The Language of Interfaces
destraynor
162
26k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
140
Transcript
同一クラスタ上での FluxCDとArgoCDの リソース最適化の話 石川雲(Kumo Ishikawa) 株式会社サイバーエージェント メディア統括本部 サービスリライアビリティグループ(SRG)
[email protected]
自己紹介 • 石川 雲(いしかわ くも) • 2023年11月サイバーエージェント中途入社 • 全社横断SRE組織に所属 •
現在Ameba Platformチームで活動中 x: @ishikawa_kumo
テーマ: 水平スケーリングと Podの分散
スコープ: AmebaのEKS
1.現状 2.問題 3.解決 4.まとめ
現状 AmebaのEKS運用 ❏ Develop/Staging/Production ❏ AmebaBlogと関連サービス ❏ Shared ❏ CI/CD関連ワークロード
現状 AmebaのCI/CD
現状 AmebaのCI/CD Platform Team Dev Team
現状 AmebaのCI/CD ① ② ③ ④ ⑤
現状 AmebaのArgoCD Applicationの構造 ❏ ArgoCD Applicationの単位: MicroService ❏ MicroService Appsの単位:
KubeVela Application MicroService App 1 App 2
現状 KubeVelaのメリット ❏ Dev Team: 最小の知識でコンテナを管理する ❏ Platform Team: テンプレート管理する
CNDT 2021 シングルクラスターマルチテナン シーを目指しているEKS上で kubevelaの運用をしてみた
現状 KubeVelaのメリット ❏ Dev Team: 最小の知識でコンテナを管理する ❏ Platform Team: テンプレート管理する
KubeVelaのデメリット ❏ ArgoCD Image Updaterが使えない ⇨ 代わりにFluxCD Image Updaterを使った
現状 ArgoCD Image Updaterが使えない ❏ 2021~2022: ArgoCD Image UpdaterはCustomResourceに対応していない ❏
Kustomize/Helmにのみ対応 ❏ 当時は本番で使えないと判断 ❏ 2023~: Kustomize Image Transformerで頑張ればなんとかなりそう ❏ Custom image field type: image=xxx:yy O ❏ Custom image field type: image: xxx, tag: yy X ⇨ 今でもFluxCD Image Updaterを使っている
1.現状 2.問題 3.解決 4.まとめ
問題 Ameba EKS上の変化 ⇨ 処理限界が来ている
問題 問題1: ArgoCD UI上パフォーマンス悪い、同期が遅い ➢ パフォーマンスチューニングが足りない チューニングに関しては以下の記事と動画 CloudNative Days Winter
2024 プレイベント 記事: HA構成のArgoCDパ フォーマンス最適化への道
問題 問題2: FluxCDのコンポーネントがよく落ちる・Image更新されない (本題) ➢ Node メモリ不足でFluxCD Evict ❏ ArgoCD
Application Controller Pod単体のメモリが2~3GB超え ❏ 開発目的でNodeのサイズが小さい(4GB) ❏ FluxCD Pod分散配置がない、ArgoCDと同NodeにスケジュールされるとEvict
1.現状 2.問題 3.解決 4.まとめ
解決 1. 利用可能のメモリを増やす ❏ Nodeサイズアップ ❏ Argo/FluxはNodeAffinityで制限 2. Podのメモリを分散させる ❏
Argo/Flux 水平スケーリング ❏ メモリ消費が多いPodはPodAntiAffinityで制限
解決 1. 利用可能のメモリを増やす ❏ Nodeサイズアップ ❏ Argo/FluxはNodeAffinityで制限 2. Podのメモリを分散させる ⇦
採択 ❏ Argo/Flux 水平スケーリング ❏ メモリ消費が多いPodはPodAntiAffinityで制限
解決 Podのメモリを分散させる3つのステップ 1. Argo 水平スケーリング 2. Flux 水平スケーリング 3. Argo/FluxのPod分散
解決 - ArgoCD水平スケーリング ArgoCD主要コンポーネントの水平スケーリング ❏ Deployment(Repo, Api, ApplicationSet) ❏ Replica数変更+ENV変更(Apiのみ)
❏ StatefulSet(ApplicationController, Redis/Redis HAProxy) Sharding ❏ Replica数+ENV変更 ❏ Redisは変更できない
解決 - ArgoCD水平スケーリング ArgoCDのSharding ❏ Sharding方法: 簡単 ❏ Replica数、ENVなど変更するだけ ❏
Sharding対象: application-controllerのみ ❏ Sharding単位: クラスタ ❏ ShardへResource Assign: 自動・手動
解決 - ArgoCD水平スケーリング Resource Assign: Sharding Algorithmについて ❏ Legacy(v1.8以降): ClusterIDのハッシュでShard決定
❏ シンプルさを優先する場合 ❏ Round-Robin(v2.8以降, Alpha): ClusterIDでソート後、均等にShard決定 ❏ クラスタ数において均等な負荷分散を求める場合 ❏ Consistent-Hash(v2.12以降, Alpha): 特殊ハッシュでShard決定 ❏ クラスタ数の変更に対する耐性と安定性を求める場合 ❏ 手動Sharding指定: shard-num手動指定 ❏ クラスタ間のリソース数・優先度が不均等な場合
解決 - FluxCD水平スケーリング FluxCD主要コンポーネントの水平スケーリング(Sharding) ❏ Sharding方法: かなり複雑 ❏ 公式のbootstrap用kustomize templateあり
❏ Sharding対象: 全てのController ❏ Sharding単位: Flux Custom Resource ❏ ShardへResource Assign: 手動
解決 - FluxCD水平スケーリング 詳細 ❏ 複数deploymentの作成が必要 ❏ 構成: Main Controller
+ Shard Controller ❏ Format: <controller>-<shard-num>
解決 - FluxCD水平スケーリング 詳細 ❏ Command Arguments、matchLabelsなどで調整 ❏ annotationでshard/mainロール区別
解決 - FluxCD水平スケーリング 詳細 ❏ ShardへのResource Assignは手動のみ ❏ Shard指定のないリソースはMain Controllerで管理
解決 - Podの分散 ArgoCDのPodAntiAffinity(デフォルト) 例: application-controller 1. application-controllerのPodをそれぞれ異なる Node に分散配置
2. ArgoCDの全てのPodをそれぞれ異なる Node に分散配置
解決 - Podの分散 FluxCDのPodAntiAffinity デフォルト設定がないので、以下のルールを追加 1. 各Shardは異なるNodeに分散配置 2. argocd-application-controllerとは異なるNodeに分散配置 ただし、ShardとMain
Controllerは別々で設定
解決 - Podの分散 ShardとMain Controllerは別々で設定 main controller shard1
1.現状 2.問題 3.解決 4.まとめ
まとめ ❏ Amebaの特殊ニーズにより、ArgoCD/FluxCDの併用が必要 ❏ FluxCD落ちるの根本原因: Nodeメモリの使い方 ❏ 水平スケーリングでPodごとのメモリ負荷を減らす ❏ PodAntiAffinityの活用で分散配置
ありがとうございました