Kubernetes的OOM和CPU限制
这篇文章是基于Javier Martinez于2023年1月25日在博客(https://sysdig.com/blog/troubleshoot-kubernetes-oom)上发布的内容进行翻译和重构后形成的日语版本。
首先
Kubernetes 内存溢出
被OOM杀掉
State: Running Started: Thu, 10 Oct 2019 11:14:13 +0200 Last State: Terminated Reason: OOMKilled Exit Code: 137 Started: Thu, 10 Oct 2019 11:04:03 +0200 Finished: Thu, 10 Oct 2019 11:14:11 +0200
oom分数
oom_score_adj is a native Chinese phrase.
OOM Killer
内存杀手
-
- コンテナに設定されたKubernetes Limit
-
- ネームスペースに設定されたKubernetes ResourceQuota
- ノードの実際のMemoryサイズ
内存过度承诺
监控Kubernetes中的OOM错误
node_vmstat_oom_kill 节点_虚拟内存统计_内存溢出杀进程
(sum by (namespace,pod,container)(rate(container_cpu_usage_seconds_total{container!=""}[5m])) / sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="cpu"})) > 0.8
Kubernetes CPU限制调整
CPU限频
-
- コンテナに設定されたKubernetes Limit
-
- ネームスペースに設定されたKubernetes ResourceQuota
- ノードの実際のメモリサイズ
-
- CPUは道路です。
-
- 車両はプロセスを表し、それぞれが異なるサイズを持っています。
-
- 複数の車線は、複数のコアを持つことを表します。
- リクエストは自転車レーンのような専用道路になります。
Kubernetes中的CPU处理
分享
您可以通过`/sys/fs/cgroup/cpu/cpu.stat`来查看CPU的统计信息。
CPU 的过度承诺
监控 Kubernetes CPU 限制
(sum by (namespace,pod,container)(rate(container_cpu_usage_seconds_total{container!=""}[5m])) / sum by (namespace,pod,container)(kube_pod_container_resource_limits{resource="cpu"})) > 0.8
容器的 CPU CFS 节流周期总数。
容器 CPU CFS 周期总数
最佳实践
注意限制和请求
应对驱逐准备
kubelet:键盘守护进程
调度器
限制流量是一位沉默的敵人。
Throttling is a silent enemy.
总结
https://sysdig.jp/blog/kubernetes-pod-evicted/
https://sysdig.jp/blog/kubernetes-limits-requests/
用Sysdig Monitor来调整Kubernetes资源的适当大小。
-
- メモリリクエスト
- CPUリクエスト