You need to enable JavaScript to run this app.
导航

将节点 Label/Annotation 注入到 Pod

最近更新时间2023.11.22 19:14:01

首次发布时间2023.11.22 19:14:01

本文主要描述如何将节点的 Annotation 或者 Label 注入到业务相关 Pod 中,快速识别业务所在可用区(AZ)信息。

适用场景

在 Pod 创建完成业务启动时,在 Pod 内部需要获取到对应 AZ 信息,进行 AZ 内各个服务的通信优化。因此 VKE 支持用户在 Pod 中添加一个特定的 Label/Annotation,VKE 会识别这个 Label/Annotation,并将 AZ 信息注入到其中。

前提条件

  • 已创建集群。详细操作,请参见 创建集群

    注意

    仅支持在如下 Kubernetes 版本的集群中使用该功能:

    • v1.26.6-vke.2 及以上版本
    • v1.24.15-vke.12 及以上版本
    • v1.20.15-vke.18 及以上版本

    若已创建集群的 Kubernetes 版本不满足要求,请先升级集群控制面版本后,再根据本文指导内容将节点的 Annotation 或者 Label 注入到业务相关 Pod。详细操作,请参见 升级集群

  • 集群中已安装 scheduler-plugin 组件。详细操作,请参见 scheduler-plugin 组件
  • 集群中已有节点。详细操作,请参见 新增节点

操作步骤

  1. 创建集群后,查看集群节点上的 Annotation 或者 Label。下图以 Key 为topology.kubernetes.io/zone的 Label 为例。
    容器服务控制台 目标集群的 节点 页面,找到目标节点,查看 节点详情页 中的 标签
    alt
  2. 在集群中创建一个 Pod,在 Annotation 或者 Label 中填写需要注入的 Key。Key 必须与节点上的 Annotation 或 Label 相匹配。Value 支持以下两种模式:
    • required-injection_from-annotation:表示将节点 Annotation 中key=topology.kubernetes.io/zone的 Value 注入到 Pod 对应的位置。
    • required-injection_from-label:表示将节点 Label 中key=topology.kubernetes.io/zone的 Value 注入到 Pod 对应的位置。
    apiVersion:	v1
    kind: Pod
    metadata:
      name: hello-pod # Pod 名称。
      namespace: default # Pod 所属命名空间名称。
      annotations:
        topology.kubernetes.io/zone: "required-injection_from-label" #表示将节点上 Key 为 topology.kubernetes.io/zone 的 Label Value 注入到此 Pod Annotation。
      labels:
        topology.kubernetes.io/zone: "required-injection_from-label" #表示将节点上 Key 为 topology.kubernetes.io/zone 的 Label Value 注入到此 Pod Label。
    spec:
      containers:
        - name:	hello-pod # Pod 的容器(Container)名称。
          image: nginx # Pod 的容器镜像地址和 Tag。
          ports:
            - containerPort: 8080 # 容器端口号。
    
  3. Pod 完成创建后,通过 kubectl 或者 VKE 控制台查看 Pod 信息,可以发现对应的 Value 已经被注入到 Label 或 Annotation 中。
    • 通过 kubectl 查看:
      执行如下命令查看。
      kubectl get pod ${pod-name} -n ${pod-namespace} -o yaml
      
      预期输出结果:
      alt
    • 通过控制台查看:
      容器服务控制台 目标集群的 工作负载 > 容器组 页面找到目标 Pod,查看 容器组详情页 信息。
      alt