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

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