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
今年1年のEKS運用振り返り/3-shake SRE Tech Talk
Search
Isao Shimizu
December 18, 2023
Technology
2
200
今年1年のEKS運用振り返り/3-shake SRE Tech Talk
2023年12月18日(月)
3-shake SRE Tech Talk #8 LT
https://3-shake.connpass.com/event/302755/
Isao Shimizu
December 18, 2023
Tweet
Share
More Decks by Isao Shimizu
See All by Isao Shimizu
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
850
家族アルバム みてねで直面してきた技術的負債 / MIXI KAG 2024
isaoshimizu
18
8.3k
ポストモーテムの基礎知識と最新事例 / Fundamentals of Postmortem
isaoshimizu
11
2.1k
全世界1,800万人が利用する「家族アルバム みてね」におけるNew Relic活用法 / FutureStack Tokyo 2023
isaoshimizu
1
310
『家族アルバム みてね』で計測しているSLIの事例 / SLI as measured in FamilyAlbum
isaoshimizu
3
640
4年間の取り組みで実現したコンテナ技術を活用したスケーラブルなインフラ構築とコスト削減 / Container Summit 2023
isaoshimizu
1
150
全世界のユーザー体験の改善にNew Relic Mobileをどのように活用したか/How New Relic Mobile was used to improve the global user experience
isaoshimizu
2
700
オブザーバビリティの始め方 / How to start Observability
isaoshimizu
4
950
全世界で成長し続けるサービスのインフラと開発の裏側 / MIXI TECH CONFERENCE 2023
isaoshimizu
1
1.4k
Other Decks in Technology
See All in Technology
本当のAWS基礎
toru_kubota
0
540
Cypress or Playwright?
rainerhahnekamp
0
150
Microsoft Intune 勉強会 第 2 回目
tamaiyutaro
1
250
require(ESM)とECMAScript仕様
uhyo
4
860
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping
ohbarye
5
390
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
150
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
MapLibreとAmazon Location Service
dayjournal
1
160
2024春 注目のWeb系 OSS & SaaS 3選
makies
0
110
【SORACOM UG 東海】あらゆるモノがつながる社会へ、IoT と SORACOM
soracom
PRO
1
100
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
210
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Agile that works and the tools we love
rasmusluckow
325
20k
Fantastic passwords and where to find them - at NoRuKo
philnash
37
2.5k
A designer walks into a library…
pauljervisheath
200
23k
The Pragmatic Product Professional
lauravandoore
25
5.8k
Stop Working from a Prison Cell
hatefulcrawdad
266
19k
For a Future-Friendly Web
brad_frost
172
9k
YesSQL, Process and Tooling at Scale
rocio
164
13k
Rails Girls Zürich Keynote
gr2m
91
13k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
Writing Fast Ruby
sferik
621
60k
Transcript
©MIXI ©MIXI 今年1年のEKS運用振り返り 株式会社MIXI Vantageスタジオ みてねプロダクト開発部 基盤開発G 清水 勲 @isaoshimizu
3-shake SRE Tech Talk #8 Lightning Talk
2 ©MIXI About me 週末は社会人吹奏楽団での活動(楽団長、トロンボーン約30年、たまに指揮者)。 キャンプとクラフトビールが好き。 New Relic User Group
運営 清水 勲 @isaoshimizu 家族アルバム みてね Engineering Manager(SRE/CXE/Security) SIer時代(受託・自社開発) SNS「mixi」 モンストなど みてね 2003年 2011年 2014年 2018年 2024年 新卒入社 ミクシィ(現MIXI)入社 C/C++/C#/PHP/Python/iOS/AWS Fedora/MySQL/LXC /OpenStack Linux/MySQL/Ruby AWS/MySQL/Ruby 2022年1月〜EM
©MIXI みてねでは2021年からAmazon EKSを 運用してます (参考) 4年間のEKS移行の取り組みを振り返って https://gihyo.jp/article/2022/11/mitene-02eks
©MIXI EKSに移行して2年ほど。 2023年はどんな運用をしてきたのか。
©MIXI これからKubernetesやEKSの運用に関わる方 すでに運用している方 の参考になれば幸いです
©MIXI みてねのKubernetes構成
7 ©MIXI 現在のみてねのKubernetes構成 • Amazon EKS v1.27 (リリース⽇: May 24,
2023、標準サポート: July 2024、延⻑サポート: July 2025) • Helm Chart ◦ EKSクラスタ内のリソースはTerraformでは管理しないルール ◦ EKSクラスタ⾃体はTerraformで管理 • Argo CD • Argo Workflows • KEDA (SQSのキュー⻑ベースのオートスケール⽤) • Prometheus (In-Cluster, Short Term) • Amazon Managed Service for Prometheus (Long Term) • Grafana Loki • Grafana • みてねでの規模感(2023/12時点) ◦ 多い時で18,000Pods、少ない時で2,000Pods
©MIXI 2023年にやってきたこと 7つの事例
©MIXI ちなみに... 1年間でHelm ChartのPull Request数 600強くらいでした
©MIXI 1.リソース調整
11 ©MIXI 1.リソース調整 • CPU、メモリの調整 • それなりの頻度でさまざまなDeploymentのリソースを調整をしている • 調整のきっかけ ◦
OOMKilled ▪ 例) Cluster AutoscalerでOOMKilledの発⽣(つらい) • limitsの調整、CPU: 500m -> 2000m、Memory: 1000Mi -> 4000Mi ◦ オートスケールされにくいとき ▪ CPU利⽤率が低すぎてHPAが機能しないなど ◦ CPUの割り当てが⾜りなくて性能が出ていないとき ▪ Prometheusのメトリクスを⾒ながら最適値を探す
©MIXI 2.deschedulerの導入
13 ©MIXI 2.deschedulerの導入 • 導⼊のきっかけ ◦ Railsアプリのメモリリーク。デプロイされない期間(例えば週末や連休)など、ある程度の⽇数再 起動がかからないと、メモリ使⽤率が⾼まっていき、502エラーが少し⽬⽴つようになってきた。 • deschedulerを利⽤してPodの最⼤起動時間(PodLifeTime)をコントロールして、定期的に再起動がかか
るようにし、メモリを解放できるように。 PodLifeTime: enabled: true params: podLifeTime: maxPodLifeTimeSeconds: 28800 namespaces: include: - "NAMESPACE" labelSelector: matchLabels: app: APPNAME
©MIXI 3.CronJobの追加
15 ©MIXI 3.CronJobの追加 • 機能開発の中で定時バッチ処理が必要になるケースがある • 開発者にHelm ChartのPull Requestを作ってもらう •
Templateが⽤意されているのでValuesとして3⾏くらい追加するだけ
©MIXI 4.DCGM Exporterの導入
17 ©MIXI 4.DCGM Exporterの導入 • https://github.com/NVIDIA/dcgm-exporter • ⼀部の機能においてGPUを必要としている • GPUの各種メトリクスをPrometheusで取得できるように
• 細かく数値を⾒るというよりは傾向の変化をモニタリングしている
©MIXI 5.Helm Chartのアップデート
19 ©MIXI 5.Helm Chartのアップデート • CommunityのHelm Chartをアップデート ◦ たとえば、Prometheus、Cluster Autoscaler、kube-state-metricsなど
• アップデートによるメリット ◦ 新しいKubernetesバージョンへの対応 ◦ 新機能の利⽤ ◦ 各種脆弱性対応 • 現在は⼿動運⽤ということもあって、アップデートが放置されがち ◦ Renovateなどによる⾃動アップデート(⾃動Pull Request作成)を実現したい ▪ まもなくできそう
©MIXI 6.Opsクラスタ導入& Kubernetesアップデート
21 ©MIXI 6.Opsクラスタ導入&Kubernetesアップデート(1) https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure • SRE NEXT 2023で弊チームメンバーの杉本が登壇した際の内容
22 ©MIXI 6.Opsクラスタ導入&Kubernetesアップデート(2) https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure?slide=27
23 ©MIXI 6.Opsクラスタ導入&Kubernetesアップデート(3) https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure?slide=12
©MIXI 7.kubectlでPod作業するのを禁止
25 ©MIXI 7.kubectlでPod作業するのを禁止 • kubectl execでPodのシェルを起動して作業するのを禁⽌しました ◦ 作業のログが残らないため ◦ 開発者の
pods/exec などの権限を剥奪 • 代替⼿段として、ローカルPCからSession Managerを使って踏み台サーバーを経由してkubectl execを実 ⾏する仕組みを構築 • これによってSession ManagerのログがS3に保存され、すべてのPod内での作業が記録がされるように
©MIXI まとめ
27 ©MIXI まとめ • Kubernetes(EKS)運⽤3年⽬の実態についてお話ししました • コストパフォーマンスや安定性のためにリソース量の調整はいつまでも続いていく • 開発者が直接運⽤できる箇所は今後も増やしていきたい •
Kubernetesのアップグレード運⽤はだいぶこなれてきていますが、まだまだ改善の余地はあります • クラスタのアップグレードよりもHelm Chartのアップデート運⽤のほうが課題 ◦ アプリケーションのライブラリアップデート運⽤と同じような課題だが、⾃動化のツール整備がま だ追いついていなかった(Renovateで解決しそう) • Kubernetesにまつわる様々なツール群(OSS)に⽀えられています
©MIXI