Kubernetes 为一个节点批量启动 pods

Kubernetes start pods in batches for a node

对于某些应用程序,启动或重启需要比运行更多的资源。例如:es/flink。如果一个节点有网络抖动,所有pods会同时重启在这个节点。当这种情况发生时,cpu在这个节点的使用率变得非常高。它会增加这个节点的资源竞争。

现在想对一个节点批量启动pods。现在功能如何实现?

Kubernetes 具有自动修复功能

您可以让 POD 崩溃,Kubernetes 将在获得足够的内存或资源需求后立即自动重新启动它们

否则,如果您想以某种方式等待,以便部署等待并逐步开始一个一个

你可以使用 sidecar 和 POD 生命周期钩子来启动主容器,这个过程不是最好的但可以解决你的问题。

基本示例:

apiVersion: v1
kind: Pod
metadata:
  name: sidecar-starts-first
spec:
  containers:
  - name: sidecar
    image: my-sidecar
    lifecycle:
      postStart:
        exec:
          command:
          - /bin/wait-until-ready.sh
  - name: application
    image: my-application

您还可以使用 Init 容器 检查另一个容器的健康状况,并在一个 POD 属于另一个服务时启动主容器 POD。

Init container

我还建议检查优先级 class : https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/