KubeConEU 2019 recap - VPA in-place update

KubeConEU 2019 recap - VPA in-place update

6ee833afddca37209631fb25a0cec547?s=128

Shunya Murata

June 18, 2019
Tweet

Transcript

  1. 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 <shmurata@zlab.co.jp> @shmurata_
  2. Shunya Murata/ @shmurata_ ▶ ゼットラボ株式会社 ソフトウェアエンジニア ▶ 対外的な主な取り組み + ThirdPartyResourceを使ったKubernetes

    as a Serviceの実装 + Kubernetes Meetup Tokyo#3 + Kubernetes実践⼊⾨ 2
  3. ▶ アジェンダ 1. VerticalPodAutoscaler の現状  2. セッションの紹介 3. 弊社でのVPAの利⽤事例 4.

    まとめ 3
  4. VerticalPodAutoscalerの現状

  5. ▶ 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
  6. ▶ 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"
  7. ▶ 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
  8. ▶ VerticalPodAutoscalerの課題 ▶ resource.requestsの変更をする場合にPodの再起動が必要 + 再起動なしにresource.requestを変更する仕様が検討されている + in-place update 8

  9. KubeConEU2019セッションの紹介

  10. ▶ https://static.sched.com/hosted_files/kccnceu19/31/RestartFreeVerticalScaling.pdf 10

  11. ▶ https://static.sched.com/hosted_files/kccnceu19/cf/Cake%20presentation.pdf 11

  12. 弊社での取り組み

  13. ▶ Background ▶ Kubernetes クラスタ: 200+ + クラスタごとにNode flavorや数が異なる ▶

    すべてのクラスタに共通でデプロイするアドオンがある + CoreDNS, IngressController, metrics-server, Prometheus,Grafana, 13
  14. ▶ Problem ▶ アドオンのresource.requestの設定が難しい + クラスタの規模やユーザの利⽤⽅法によって必要な量が異なる + クラスタの規模についてはaddon-resizerで対応できるが… + https://github.com/kubernetes/autoscaler/tree/master/addon-resizer

    14
  15. ▶ Try 15 ઃఆมߋ

  16. ▶ Feedback ▶ VerticalPodAutoscaler + resource.requests変更時に再起動が必要 + データを保持していないアドオンは問題ないがデータを保持しているアド オンが問題 +

    Prometheusはローカルにデータを持っているため再起動するとメトリクス をロスト + PersistentVolumeは様々な事情によってまだ導⼊できていない + UpdateMode: Initial で回避 16
  17. ▶ 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
  18. ▶ まとめ ▶ VPAの概要と現状 ▶ in-place updateの対応 ▶ 弊社でVPAを採⽤しようとしている事例 18

  19. Fin.