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
KubeConEU 2019 recap - VPA in-place update
Search
Shunya Murata
June 18, 2019
Programming
3
2.3k
KubeConEU 2019 recap - VPA in-place update
Shunya Murata
June 18, 2019
Tweet
Share
More Decks by Shunya Murata
See All by Shunya Murata
Kubernetes v1.19 Updates
shmurata
3
1.2k
プロダクションレディを目指した Kubernetes クラスタのアップグレード戦略/Strategy to upgrade Kubernetes clusters in Production
shmurata
9
4.1k
Kubernetes上でアプリケーションを 運用するまでの道のり/The way to run applications with Kubernetes
shmurata
15
2.7k
Kubernetes Operator で実現する NoOps の世界 / How we accomplish NoOps by Kubernetes Operator.
shmurata
20
3.9k
180715-line-meetup.pdf
shmurata
3
970
ThirdPartyResource を使った Kubernetes as a Service の実装
shmurata
2
3.1k
Other Decks in Programming
See All in Programming
Polarsの成長: v0.14からv1.0までの変遷と今後の展望
zerebom
1
350
Microservices rules (July 2024) : what good looks like
cer
PRO
0
1.6k
Webエディタライブラリ 「CodeMirror」から学ぶ Webアプリ開発のテクニック
ryosukeigarashi
0
250
유연한 Composable 설계
l2hyunwoo
0
380
初心者がおさえておきたいAWS CDKのベストプラクティス 2024
konokenj
15
7.3k
社内 LT 会を発足し、アウトプット文化を醸成させるために考えたこと・やったこと / Starting internal LT meetings and fostering an output culture
mackey0225
3
120
[After Kotlin Fest 2024 LT Night @ Sansan] もっともっとKotlinを好きになる!K2 Compiler Pluginで遊んでみよう!
kitakkun
2
260
CSC307 Lecture 07
javiergs
PRO
0
220
Rustのweb開発を助ける 便利なツール紹介
yuki0418
1
190
Advanced App Shrinking Techniques
cbeyls
2
150
なぜ宣言的 UI は壊れにくいのか / Why declarative UI is less fragile
uenitty
29
13k
Namespace on read
tagomoris
2
370
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
266
20k
Rails Girls Zürich Keynote
gr2m
93
13k
Teambox: Starting and Learning
jrom
130
8.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
Building Applications with DynamoDB
mza
89
5.8k
Principles of Awesome APIs and How to Build Them.
keavy
124
16k
Debugging Ruby Performance
tmm1
71
11k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
Web development in the modern age
philhawksworth
203
10k
Building Flexible Design Systems
yeseniaperezcruz
323
37k
Design by the Numbers
sachag
277
18k
Transcript
KubeConEU 2019 Recap Restart-Free Vertical Scaling for Kubernetes Pods Resize
Your Pods w/o Disruptions aka How to Have a Cake and Eat a Cake Kuberentes Meetup Tokyo #20 / June 18, 2019 Shunya Murata <
[email protected]
> @shmurata_
Shunya Murata/ @shmurata_ ▶ ゼットラボ株式会社 ソフトウェアエンジニア ▶ 対外的な主な取り組み + ThirdPartyResourceを使ったKubernetes
as a Serviceの実装 + Kubernetes Meetup Tokyo#3 + Kubernetes実践⼊⾨ 2
▶ アジェンダ 1. VerticalPodAutoscaler の現状 2. セッションの紹介 3. 弊社でのVPAの利⽤事例 4.
まとめ 3
VerticalPodAutoscalerの現状
▶ pod.spec.resource.requests ▶ Podが使⽤するリソース量を指定して予約 することができる + この値を元にSchedulerがいいかんじ にNodeにPodをスケジュールする ▶ この指定は多くても少なくてもダメ
5 apiVersion: apps/v1 kind: Pod spec: containers: - image: nginx name: nginx resources: requests: cpu: 100m memory: 256Mi
▶ VerticalPodAutoscaler ▶ Podの垂直スケールを⾃動的に⾏う ための仕組み + 実際のリソース利⽤率から値を計 算してresource.requestsを設定す る ▶
現在(2019/6/18時点)は v0.5.1 が最新 + beta フェーズ 6 apiVersion: autoscaling.k8s.io/v1beta2 kind: VerticalPodAutoscaler spec: targetRef: apiVersion: apps/v1 kind: Deployment name: nginx updatePolicy: updateMode: "Auto"
▶ VerticalPodAutoscalerの構成と動き 7 VPA recommender VPA updater VPA Admission Plugin
metrics server 1.collect metrics 2. update VPA status 3. watch VPA status and Pod 4. evict pod 5. update resource.requests
▶ VerticalPodAutoscalerの課題 ▶ resource.requestsの変更をする場合にPodの再起動が必要 + 再起動なしにresource.requestを変更する仕様が検討されている + in-place update 8
KubeConEU2019セッションの紹介
▶ https://static.sched.com/hosted_files/kccnceu19/31/RestartFreeVerticalScaling.pdf 10
▶ https://static.sched.com/hosted_files/kccnceu19/cf/Cake%20presentation.pdf 11
弊社での取り組み
▶ Background ▶ Kubernetes クラスタ: 200+ + クラスタごとにNode flavorや数が異なる ▶
すべてのクラスタに共通でデプロイするアドオンがある + CoreDNS, IngressController, metrics-server, Prometheus,Grafana, 13
▶ Problem ▶ アドオンのresource.requestの設定が難しい + クラスタの規模やユーザの利⽤⽅法によって必要な量が異なる + クラスタの規模についてはaddon-resizerで対応できるが… + https://github.com/kubernetes/autoscaler/tree/master/addon-resizer
14
▶ Try 15 ઃఆมߋ
▶ Feedback ▶ VerticalPodAutoscaler + resource.requests変更時に再起動が必要 + データを保持していないアドオンは問題ないがデータを保持しているアド オンが問題 +
Prometheusはローカルにデータを持っているため再起動するとメトリクス をロスト + PersistentVolumeは様々な事情によってまだ導⼊できていない + UpdateMode: Initial で回避 16
▶ in-place update のその後 ▶ Migrate Karol Golab's KEP for
in-place update of pod resources to k/ enhancements + https://github.com/kubernetes/enhancements/pull/686 17
▶ まとめ ▶ VPAの概要と現状 ▶ in-place updateの対応 ▶ 弊社でVPAを採⽤しようとしている事例 18
Fin.