K8S 的计算资源管理
在 Deployment 中管理了每个容器的 预分配 和 上限计算资源。
制作 gitbook 文档镜像,运行在 K8S 上 中给本文档预分配了 250m(millicores,0.25 核) CPU,256 MB 内存,最大可以使用 0.5 核,1GB 内存。
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
1
2
3
4
5
6
7
2
3
4
5
6
7
CPU 资源的基本单位是 millicores,因为 CPU 资源其实准确来讲,指的是 CPU 时间。
所以它的基本单位为 millicores,1 个核等于 1000 millicores。
也代表了 kubernetes 可以将单位 CPU 时间细分为 1000 份,分配给某个容器。
有时候如果集群资源不够,我们可能遇到如下报错日志。
0/5 nodes are available: 1 Insufficient memory, 1 node(s) didn't match pod affinity/anti-affinity, 1 node(s) didn't satisfy existing pods anti-affinity rules, 4 Insufficient cpu.
1
其含义为:
- 共有 5 个节点,但没一个能用;
- 1 个内存不足;
- 1 个不满足 Pod 的 亲和性(Pod 喜欢运行在某个节点上)和 反亲和性(为了高可用,多个 Pod 副本需要运行在不同的节点上);
- 4 个 节点的可分配 CPU 不足;
这时候,就需要考虑扩容了~
reference
- [1] K8S. 为容器管理计算资源open in new window
- [2] QINIU. 深入解析 kubernetes 资源管理open in new window