如何创建跨双区域的GCP Kubernetes Engine集群并验证拓扑键?
创建跨区域GKE集群以验证区域拓扑键
嘿,刚好你要验证failure-domain.beta.kubernetes.io/region这个拓扑键,其实GKE可以通过跨区域节点池的方式实现单集群跨两个区域部署节点,完全满足你的需求,下面一步步来:
1. 创建初始区域集群
首先选其中一个区域作为集群控制平面的所在地,比如先以us-west1为例创建集群,初始节点池先指定一个可用区:
gcloud container clusters create multi-region-cluster \ --region us-west1 \ --node-locations us-west1-a \ --machine-type e2-medium \ --num-nodes 1
这里的--region指定了集群控制平面的区域,--node-locations是初始节点的可用区,你可以根据需求调整机器类型和节点数量。
2. 添加另一个区域的节点池
接下来给集群添加位于us-central1区域的节点池,这样集群就会有跨两个区域的节点了:
gcloud container node-pools create us-central-pool \ --cluster multi-region-cluster \ --region us-west1 \ --node-locations us-central1-a,us-central1-b \ --machine-type e2-medium \ --num-nodes 2
注意这里的--region还是用集群控制平面所在的us-west1,但--node-locations可以直接指定其他区域的可用区,GKE会自动在目标区域创建节点并加入集群。
3. 验证节点的区域拓扑标签
部署完节点池后,用下面的命令查看所有节点的区域标签,确认failure-domain.beta.kubernetes.io/region是否正确设置:
kubectl get nodes -o custom-columns=NAME:.metadata.name,REGION:.metadata.labels.failure-domain\\.beta\\.kubernetes\\.io/region
输出应该会显示部分节点的REGION是us-west1,另一部分是us-central1,说明拓扑标签已经正确生效。
4. 测试拓扑键的实际作用
为了验证拓扑键能被调度器识别,可以创建一个带有节点亲和性的Pod,指定只调度到us-central1区域的节点:
apiVersion: v1 kind: Pod metadata: name: region-affinity-test spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: failure-domain.beta.kubernetes.io/region operator: In values: - us-central1 containers: - name: nginx image: nginx:alpine
部署这个Pod后,用kubectl describe pod region-affinity-test查看调度结果,确认它确实被分配到了us-central1区域的节点上,这就证明拓扑键正常工作了。
注意事项
- 集群的控制平面仍然位于初始区域(
us-west1),跨区域节点与控制平面之间会有一定网络延迟,但对于验证拓扑键的场景完全不影响。 - 你可以根据需要调整两个节点池的机器类型、节点数量、可用区数量等参数。
内容的提问来源于stack exchange,提问作者jtee
相关产品推荐
相关产品推荐

