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。
我还建议检查优先级 class : https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
对于某些应用程序,启动或重启需要比运行更多的资源。例如: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。
我还建议检查优先级 class : https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/