如果您在部署Pod时指定了 CPU 和内存资源,更改资源大小需要重新启动 Pod。到目前为止,重启对于正在运行工的作负载是一种破坏性操作。
Kubernetes 1.27 中的 alpha 功能发布。其中一项能够自动调整 Pod 的 CPU 和内存限制的大小,只需修补正在运行的 Pod 定义即可更改它们,而无需重新启动它。
这也意味着 resources 规范中的字段不能再作为 Pod 实际资源的指示符。监控工具和其他此类应用程序现在必须查看 Pod 状态中的新字段,这对我们的现有监控告警也是一项比较大的挑战。Kubernetes 通过对运行时(例如负责运行容器的 containerd)的 CRI(容器运行时接口)API 调用来查询实际的 CPU 和内存请求以及对正在运行的容器强制执行的限制。容器运行时的资源占用反映在 Pod 的状态中,这块后面会举例说明。
Kubernetes v1.27 有哪些新功能?
除了在 pod 规范中添加用于调整大小的重启策略之外,pod 的状态中还添加了三个新字段。
-
allocatedResources容器状态中的字段反映了分配给 pod 容器的节点资源。
-
resources容器状态中的字段反映了容器运行时报告的正在运行的容器上配置的实际资源(请求和限制)。
-
resizePod 的值Proposed是对请求的调整大小的确认,并指示请求已验证并记录。
-
resizePod 的值InProgress表示节点已接受调整大小请求,并且正在将调整大小请求应用到 Pod 的容器。
-
resizePod 的值Deferred表示此时无法授予请求的调整大小,节点将继续重试。当其他 Pod 离开并释放节点资源时,