【云原生--Kubernetes】Pod资源管理与探针检测

文章目录

  • 一. 资源限制
    • 1.1 概念
    • 1.2 Pod和容器的资源请求和限制
    • 1.3 CPU资源单位
    • 1.4 内存资源单位
    • 1.5 CPU和内存的Requests和Limits的特点
    • 1.6 示例
  • 二. 探针Probe
    • 2.1 探针规则
    • 2.2 Probe支持的三种检查方法
    • 2.3 探测获得的三种结果
    • 2.4 exec
    • 2.5 httpget
    • 2.6 tcpsocket
  • 三. 总结

一. 资源限制

1.1 概念

  • 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。最常见可设定资源是 CPU 和内存大小,以及其他类型的资源
  • 当为 Pod 中的容器指定了 request资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了limit资源时,kubelet 就会确保运行的容器不会使用超出所设的 limit 资源量。kubelet 还会为容器预留所设的 request 资源量,供该容器使用
  • 如果 Pod 运行所在的节点具有足够的可用资源,容器可以使用超出所设置的 request 资源量。不过,容器不可以使用超出所设置的 limit 资源量
  • 如果给容器设置了内存的 limit 值,但未设置内存的 request 值,Kubernetes 会自动为其设置与内存 limit 相匹配的 request值。类似的,如果给容器设置了 CPU 的 limit 值但未设置CPU 的 request 值,则 Kubernetes 自动为其设置 CPU 的 request 值 并使之与CPU 的 limit 值匹配
    官方示例
    https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

1.2 Pod和容器的资源请求和限制

spec.containers[].resources. requests.cpu #定义创建容器时预分配的CPU资源
spec.containers[].resources.requests.memory #定义创建容器时预分配的内存资源
spec.containers[].resources.limits.cpu #定义 cpu 的资源上限
spec.containers[].resources.limits.memory #定义内存的资源上限

1.3 CPU资源单位

  • CPU 资源的 request 和 limit 以 cpu 为单位。Kubernetes 中的一个 cpu 相当于1个 vCPU(1个超线程)
  • Kubernetes 也支持带小数 CPU 的请求。spec.containers[].resources.requests.cpu 为0.5的容器能够获得一个 cpu 的一半 CPU资源(类似于Cgroup对CPU资源的时间分片)。表达式0.1等价于表达式 100m(毫核),表示每1000毫秒内容器可以使用的CPU时间总量为0.1*1000 毫秒

1.4 内存资源单位

  • 内存的 request 和 limit 以字节为单位。 可以以整数表示,或者以10为底数的指数的单位(E、P、T、G、M、K)来表示,或者以2为底数的指数的单位(Ei、Pi、Ti、Gi、Mi、Ki)来表示。如1KB=103=1000,1MB=106=1000000=1000KB,1GB=10^9=1000000000=1000MB 1KiB=2^10=1024, 1MiB=2^20=1048576=1024KiB
  • PS∶在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,,因此检查硬盘容量时是以MiB、GiB为单位,1GB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,0

你可能感兴趣的:(K8s,kubernetes,云原生,docker)