kubernetes K8S仅在DaemonSet启动后调度pod

2cmtqfgy  于 2022-12-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(164)

我希望我的EKS节点只有在某个特定的守护程序集pod启动并运行后才能托管新的pod。如果更好的方法是在所有守护程序集启动后才调度pod,我可以接受。
我应该如何处理它?

u4dcyp6a

u4dcyp6a1#

您可以在节点上使用污点来防止调度pod,但必须具有相应容差的守护进程集合除外。守护进程集合中的容器(sidecar或init-container)可以调用API来删除节点上的污点,以便从该点开始可以在该节点上调度任何pod。
https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/

6jjcrrmo

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或运行命令以创建部署。

相关问题