azure - 如何在 Azure Kubernetes 服务上模拟可用区中断?
问题描述
以下是我的查询:
如何在 Azure Kubernetes 服务上模拟可用区中断以验证传入流量切换到另一个区域?
有什么方法可以确定哪个区域或哪个节点当前正在接收 Azure Kubernetes 服务上的传入请求?
解决方案
目前尚不清楚您所说的验证传入流量切换是什么意思。没有流量切换,流量会转到当前可用的 Pod 来响应请求。您负责在集群中的不同可用区分布副本。例如,如果您部署了一个带有两个副本的 Pod,一个在区域 1,另一个在区域 2,流量将流向两个副本,如果区域 1 出现故障,负载均衡器只会将流量发送到区域 2 中的 Pod直到 1 区的 pod 回来。
一种简单的测试方法是停止或重新启动一个可用区中的虚拟机,并检查您是否遇到停机时间。
就像我说的那样,一次不是一个区域,如果您想要区域弹性,则需要在所有可用区域中部署副本,而 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
推荐阅读
- json.net - [A]Newtonsoft.Json.Linq.JObject 无法转换为 [B]Newtonsoft.Json.Linq.JObject。A 型源自 'Newtonsoft.Json, Version=9.0.0.0
- mobile - Appium:点击复选框时显示元素不可交互错误
- dart - 如何让四个相同的自定义小部件分别更改文本?
- apache-spark - 我使用 SQL 查询得到结果,但使用 spark.Sql 得到错误
- ios - 删除单元格后进行条件检查的 Swift heightForRow
- java - 无法为事务打开 Hibernate Session;嵌套异常是 org.hibernate.exception
- hibernate - 在@Transactional注解方法下获取当前事务
- processing - 在处理中使用光线进行碰撞检测的最佳方法是什么?
- regex - 如何查找所有 *=* 并将其替换为 * = *
- r - 如何调整随机森林代码以进行质量预测