首页 > 解决方案 > 如何在 Azure Kubernetes 服务上模拟可用区中断?

问题描述

以下是我的查询:

  1. 如何在 Azure Kubernetes 服务上模拟可用区中断以验证传入流量切换到另一个区域?

  2. 有什么方法可以确定哪个区域或哪个节点当前正在接收 Azure Kubernetes 服务上的传入请求?

标签: azurekubernetesazure-aksavailability-zone

解决方案


目前尚不清楚您所说的验证传入流量切换是什么意思。没有流量切换,流量会转到当前可用的 Pod 来响应请求。您负责在集群中的不同可用区分布副本。例如,如果您部署了一个带有两个副本的 Pod,一个在区域 1,另一个在区域 2,流量将流向两个副本,如果区域 1 出现故障,负载均衡器只会将流量发送到区域 2 中的 Pod直到 1 区的 pod 回来。

  1. 一种简单的测试方法是停止或重新启动一个可用区中的虚拟机,并检查您是否遇到停机时间。

  2. 就像我说的那样,一次不是一个区域,如果您想要区域弹性,则需要在所有可用区域中部署副本,而 AKS 不会自动完成此操作。一种方法是在您的 Pod 上配置 podAntiAffinity,以确保副本未部署在同一节点和同一可用区中。在 AKS 中,节点具有topology.kubernetes.io/zone包含区域编号的标签,您可以在 podAntiAffinity 规则中使用该标签。以下命令将为您提供具有不同区域的节点列表:

kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'

NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   eastus-1
aks-nodepool1-34917322-vmss000001   eastus   eastus-2
aks-nodepool1-34917322-vmss000002   eastus   eastus-3

推荐阅读