是否可能知道正在调度Kubernetes吊舱的节点是主节点还是工作节点?

是否可能知道正在调度Kubernetes吊舱的节点是主节点还是工作节点?,kubernetes,daemonset,Kubernetes,Daemonset,我目前正在使用Kubernetes在主节点和工作节点上调度守护程序 这两种节点类型(相同的映像、相同的卷等)的守护程序定义是相同的,唯一的区别是在执行入口点时,如果节点是主节点或工作节点,我需要编写不同的配置文件(在Python中生成,带有一些动态值) 目前,为了克服这个问题,我使用了两个不同的守护程序定义和一个env值,该值告诉我们节点是否是主节点。以下是yaml文件(仅相关部分): 但是,由于唯一的区别是is_MASTER值,因此我想将这两个定义合并为一个定义,以编程方式理解正在调度pod的

我目前正在使用Kubernetes在主节点和工作节点上调度守护程序

这两种节点类型(相同的映像、相同的卷等)的守护程序定义是相同的,唯一的区别是在执行入口点时,如果节点是主节点或工作节点,我需要编写不同的配置文件(在Python中生成,带有一些动态值)

目前,为了克服这个问题,我使用了两个不同的守护程序定义和一个env值,该值告诉我们节点是否是主节点。以下是yaml文件(仅相关部分):

但是,由于唯一的区别是is_MASTER值,因此我想将这两个定义合并为一个定义,以编程方式理解正在调度pod的当前节点是主节点还是工作节点

是否有任何方法可以通过编程方式了解有关节点的信息(甚至读取节点中的配置文件[例如,只有主节点才有或反之亦然]之类的内容)


提前感谢。

如果节点具有标签
node-role.kubernetes.io/master:“
,则可以判断节点是主节点。 您需要做的是从容器中访问该标签,这可以通过(编辑:错误,只能从向下Api访问Pod信息)。您可以使用以下方法将标签装入容器中:

volumes:
    - name: podinfo
      downwardAPI:
        items:
          - path: "labels"
            fieldRef:
              fieldPath: metadata.labels

然后,您可以从容器中搜索该文件的内容。

不幸的是,没有一种方便的方法来访问pod中的节点信息

如果您只需要一个
守护进程集
定义,可以将
侧车
容器添加到pod中,
侧车
容器可以,那么您的主容器可以从
侧车
中获得有用的内容


顺便说一下,我认为您当前的解决方案是正确的:)

我认为
向下API
可以允许访问pod信息,而不是节点信息是的,我同意@menya,向下API允许访问pod信息不幸的是:(无论如何感谢您的回复!:)我很抱歉,这是我的疏忽。我明白了。。。是的,我认为sidecar容器解决方案有点太多了,因为我只在运行entrypoint脚本时需要这些信息。如果没有其他选择,我想我现在会继续使用我目前的解决方案。谢谢你的回复!
volumes:
    - name: podinfo
      downwardAPI:
        items:
          - path: "labels"
            fieldRef:
              fieldPath: metadata.labels