2020-01-15
Diary
- None
Note
- Kubernetes ベスト プラクティス 6 選
- Week Ending January 12, 2020 | Last Week in Kubernetes Development
- http://lwkd.info/2020/20200113
- 今週もあんまりないかも
- HPA Autoscaling Algorithm
CPU throttling for Pods
CPU Manager
- Feature Highlight: CPU Manager
- https://kubernetes.io/blog/2018/07/24/feature-highlight-cpu-manager/
- CPU Manager の話,
--cpu-manager-policy
を static にして Guaranteed QoS class の Pod で CPU をコア数で指定すると CPU を専有できる
- Control CPU Management Policies on the Node
- https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/
- CPU Manager の公式ドキュメント
CFS (Completely Fair Scheduler)
- Kubernetesのresource requests, limits
- https://christina04.hatenablog.com/entry/kubernetes-resource-limits
- CPU の制限には kernel の CFS を使用している
- cpu-period の時間中 cpu-quota で指定した時間までがコンテナに CPU を割り当てることが出来る
- Kubernetes では cpu-period が 100ms になっている
- 3.2. cpu Red Hat Enterprise Linux 6 | Red Hat Customer Portal
- Understanding resource limits in kubernetes: cpu time
- https://medium.com/@betz.mark/understanding-resource-limits-in-kubernetes-cpu-time-9eff74d3161b
- 詳しく書いてある
resources.limits: 100m
は CPU core の 100/1000,cpu.cfs_period_us: 100000
のうちの 10000ms だけ CPU を使えますよ, という制限
- Overly aggressive CFS
- https://gist.github.com/bobrik/2030ff040fad360327a5fab7a09c4ff1
- 実際に throttling するとこうなるよ, というやつ
- POD-RESOURCE-MANAGEMENT - KUBELET POD LEVEL RESOURCE MANAGEMENT
- https://stupefied-goodall-e282f7.netlify.com/contributors/design-proposals/node/pod-resource-management/
- Kubernetes ではどうしているのかと言うのが詳しく書いてある
Kubernetes Issues
- Throttling: New Developments in Application Performance with CPU Limits - Dave Chiluk, Indeed
- https://kccncna19.sched.com/event/Uae1
- https://www.youtube.com/watch?v=UE7QX98-kO0
- https://static.sched.com/hosted_files/kccncna19/dd/Kubecon_%20Throttling.pdf
- Kubecon のセッション, CPU の Throttling と Latency にはめちゃくちゃ相関があるのがわかる
- Ensuring Kubernetes Cost Efficiency across (many) Clusters - DevOps Gathering 2019
- https://www.slideshare.net/try_except_/ensuring-kubernetes-cost-efficiency-across-many-clusters-devops-gathering-2019
- zalando の人のセッション, 個人的にはこれが一番わかりやすかった
- CFS quotas can lead to unnecessary throttling · Issue #67577 · kubernetes/kubernetes
- https://github.com/kubernetes/kubernetes/issues/67577
- kernel にバグがあるという話
Twitter thread
- https://twitter.com/tpeitz_dus/status/1133648291332263936
- https://twitter.com/try_except_/status/1131459031376252928
Cat example
$ sudo cat /sys/fs/cgroup/cpu,cpuacct/kubepods/burstable/pod<"metadata.uid" from Pod>/<"status.containerStatuses.containerID" from Pod>/cpu.cfs_quota_us