本文主要描述如何将节点的 Annotation 或者 Label 注入到业务相关 Pod 中,快速识别业务所在可用区(AZ)信息。
在 Pod 创建完成业务启动时,在 Pod 内部需要获取到对应 AZ 信息,进行 AZ 内各个服务的通信优化。因此 VKE 支持用户在 Pod 中添加一个特定的 Label/Annotation,VKE 会识别这个 Label/Annotation,并将 AZ 信息注入到其中。
注意
仅支持在如下 Kubernetes 版本的集群中使用该功能:
若已创建集群的 Kubernetes 版本不满足要求,请先升级集群控制面版本后,再根据本文指导内容将节点的 Annotation 或者 Label 注入到业务相关 Pod。详细操作,请参见 升级集群。
topology.kubernetes.io/zone
的 Label 为例。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 # 容器端口号。
预期输出结果:kubectl get pod ${pod-name} -n ${pod-namespace} -o yaml