本文主要描述如何将节点的 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