正规绍兴网站建设公司,百讯网站建设,北京商场购物中心排名,网络正常但网页打不开概述
在 Kubernetes 中创建工作负载时#xff0c;您可以为 Pod 中的每一个容器指定其所需要的内存#xff08;RAM#xff09;大小和 CPU 数量。如果这些信息被指定了#xff0c;Kubernetes 调度器可以更好的决定将 Pod 调度到哪一个节点。对于容器来说#xff0c;其所需要…概述
在 Kubernetes 中创建工作负载时您可以为 Pod 中的每一个容器指定其所需要的内存RAM大小和 CPU 数量。如果这些信息被指定了Kubernetes 调度器可以更好的决定将 Pod 调度到哪一个节点。对于容器来说其所需要的资源也将依据其指定的数值得到保证。
资源类型及计量
当我们讨论计算资源的时候主要是指 CPU 和 内存。CPU 的计量单位是内核的单元数内存的计量单位是 byte 字节数。应用程序可以按量请求、分配、消耗计算资源。
CPU 的计量
在 Kubernetes 中1 个 CPU 代表
1 AWS vCPU1 GCP Core1 Azure vCore物理机上 Intel 超线程 CPU 的 1 个超线程Hyperthread
Kubernetes 中0.5 代表请求半个 CPU 资源。表达式 0.1 等价于 表达式 100m 英文读作 one hundred millicpu 或 one hundred millicores。在 API Server 中表达式 0.1 将被转换成 100m精度低于 1m 的请求是不受支持的。 CPU 的计量代表的是绝对值而非相对值例如您请求了 0.1 个 CPU无论您的节点是 单核、双核、48核您得到的 CPU 资源都是 0.1 核。 在 top 命令查看CPU消耗100% 代表 1核4核为 400%10% 代表 0.1 核 或者 100m 内存的计量
内存的计量单位是 byte 字节。您可以使用一个整数来表达内存的大小也可以使用后缀来表示E、P、T、G、M、K。您也可以使用 2 的幂数来表示内存大小其后缀为Ei、Pi、Ti、Gi、Mi、Ki。例如下面的几个表达方式所表示的内存大小大致相等128974848, 129e6, 129M, 123Mi
容器组及容器的计算资源请求及限制
Kubernetes 中可以为容器指定计算资源的请求数量 request 和限制数量 limit。尽管资源的请求/限制数量只能在容器上指定我们仍然经常讨论容器组的资源请求/限制数量。容器组对某一个类型的资源请求/限制数量是该容器组中所有工作容器对该资源请求/限制数量的求和。
带有资源请求的容器组是如何调度的
尽管某个节点实际使用的CPU、内存数量非常低如果新加入一个 Pod 使得该节点上对 CPU 或内存请求的数量之和大于了该节点最大可供使用 CPU 或内存数量则调度程序不会将该 Pod 分配到该节点。Kubernetes 这样做可以避免在日常的流量高峰时段节点上出现资源短缺的情况。
带有资源限制的容器组是如何运行的
Kubelet 启动容器组的容器时将 CPU、内存的最大使用限制作为参数传递给容器引擎。
以 Docker 容器引擎为例
容器的 cpu 请求将转换成 docker 要求的格式并以 --cpu-shares 标志传递到 docker run 命令容器的 cpu 限制将也将转换成 millicore 表达式并乘以 100。结果数字是每 100ms 的周期内该容器可以使用的 CPU 份额容器的内存限制将转换成一个整数并使用 --memory 标志传递到 docker run 命令
如下情况可能会发生
如果某个容器超出了其内存限制它可能将被终止。如果 restartPolicy 为 Always 或 OnFailurekubelet 将重启该容器如果某个容器超出了其内存申请仍低于其内存限制当节点超出内存使用时该容器仍然存在从节点驱逐的可能性短时间内容器有可能能够超出其 CPU 使用限制运行。kubernetes 并不会终止这些超出 CPU 使用限制的容器