我希望我的EKS节点只有在某个特定的守护程序集pod启动并运行后才能托管新的pod。如果更好的方法是在所有守护程序集启动后才调度pod,我可以接受。我应该如何处理它?
u4dcyp6a1#
您可以在节点上使用污点来防止调度pod,但必须具有相应容差的守护进程集合除外。守护进程集合中的容器(sidecar或init-container)可以调用API来删除节点上的污点,以便从该点开始可以在该节点上调度任何pod。https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
6jjcrrmo2#
选项:1-使用初始化容器
您可以将initcontainer与部署一起使用,以检查Daemon*set**的状态。如果未启动,部署容器将不会启动。
spec: initContainers: - name: wait-for-deployment image: busybox args: - /bin/bash - -c - > set -x; while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://service:8080/)" != "200" ]]; do echo '.' sleep 15; done containers:
您还可以使用init容器内的kubectl检查守护程序集的状态,如果在我们点击HTTP*请求**时没有响应任何响应。
选项:2-使用作业
您可以使用作业检查守护程序集的状态,一旦这些守护程序集启动并运行,作业将扩大部署POD或运行命令以创建部署。
2条答案
按热度按时间u4dcyp6a1#
您可以在节点上使用污点来防止调度pod,但必须具有相应容差的守护进程集合除外。守护进程集合中的容器(sidecar或init-container)可以调用API来删除节点上的污点,以便从该点开始可以在该节点上调度任何pod。
https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
6jjcrrmo2#
选项:1-使用初始化容器
您可以将initcontainer与部署一起使用,以检查Daemon*set**的状态。如果未启动,部署容器将不会启动。
您还可以使用init容器内的kubectl检查守护程序集的状态,如果在我们点击HTTP*请求**时没有响应任何响应。
选项:2-使用作业
您可以使用作业检查守护程序集的状态,一旦这些守护程序集启动并运行,作业将扩大部署POD或运行命令以创建部署。