从属于 DaemonSet 的容器中,如何查找 "the node on which I am running" 上的标签?
From a container that is part of a DaemonSet, how can I look up the labels on "the node on which I am running"?
我有一项服务 运行 作为 DaemonSet
跨多个 kubernetes 节点。我想根据每个 DaemonSet
pod 所在节点的标签做出一些策略决策 运行。在容器中,我如何知道此 pod 在哪个节点上 运行?有了这些信息,通过 API 查找节点标签应该相对容易。
我现在正在做的是将节点名称作为环境变量传入,如下所示:
env:
- name: NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
这是获取此信息的正确方法吗?更具体地说,是否有任何类型的 API 电话可以回答“我在哪里?”这个问题?
回答您的问题“我怎么知道我在哪个节点上?”:
您的方法似乎是最好的方法 - 使用 the DownWard API 允许我们访问某些 pod 或容器的字段。在我们的例子中,它是可访问的 pod 字段 spec.nodeName
。
您可以使用两个选项来使用此 API:
公开 pod 信息
您也可以访问 Kubernetes API from a pod 并从此处获取此信息,但这是一种解决方法。最好利用节点的名称是 pod 的字段之一这一事实,并使用之前描述的 DownWard API,它是为此目的而制作的,在 Kubernetes 文档中有官方描述。
我有一项服务 运行 作为 DaemonSet
跨多个 kubernetes 节点。我想根据每个 DaemonSet
pod 所在节点的标签做出一些策略决策 运行。在容器中,我如何知道此 pod 在哪个节点上 运行?有了这些信息,通过 API 查找节点标签应该相对容易。
我现在正在做的是将节点名称作为环境变量传入,如下所示:
env:
- name: NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
这是获取此信息的正确方法吗?更具体地说,是否有任何类型的 API 电话可以回答“我在哪里?”这个问题?
回答您的问题“我怎么知道我在哪个节点上?”:
您的方法似乎是最好的方法 - 使用 the DownWard API 允许我们访问某些 pod 或容器的字段。在我们的例子中,它是可访问的 pod 字段 spec.nodeName
。
您可以使用两个选项来使用此 API:
公开 pod 信息您也可以访问 Kubernetes API from a pod 并从此处获取此信息,但这是一种解决方法。最好利用节点的名称是 pod 的字段之一这一事实,并使用之前描述的 DownWard API,它是为此目的而制作的,在 Kubernetes 文档中有官方描述。