是否可能知道正在调度Kubernetes吊舱的节点是主节点还是工作节点?
我目前正在使用Kubernetes在主节点和工作节点上调度守护程序 这两种节点类型(相同的映像、相同的卷等)的守护程序定义是相同的,唯一的区别是在执行入口点时,如果节点是主节点或工作节点,我需要编写不同的配置文件(在Python中生成,带有一些动态值) 目前,为了克服这个问题,我使用了两个不同的守护程序定义和一个env值,该值告诉我们节点是否是主节点。以下是yaml文件(仅相关部分): 但是,由于唯一的区别是is_MASTER值,因此我想将这两个定义合并为一个定义,以编程方式理解正在调度pod的当前节点是主节点还是工作节点 是否有任何方法可以通过编程方式了解有关节点的信息(甚至读取节点中的配置文件[例如,只有主节点才有或反之亦然]之类的内容)是否可能知道正在调度Kubernetes吊舱的节点是主节点还是工作节点?,kubernetes,daemonset,Kubernetes,Daemonset,我目前正在使用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