我们正在使用具有自动缩放功能的Azure AKS v1.17.9,既可以用于Pod(使用HorizontalPodAutoscaler),也可以用于节点。总体而言,它运作良好,但在某些情况下我们发现出现故障。我们有一些部署,其中minReplicas = 1和maxReplicas = 4。在大多数情况下,只有一个Pod可以运行。在某些情况下,自动缩放器决定按比例缩小节点,最后一个剩余的容器被杀死。后来,新的Pod在另一个节点上启动,但这意味着中断。
我希望自动缩放器首先创建一个在另一个节点上运行的新容器(将副本数提高到允许的2个值),然后按比例缩小旧容器。这样就可以在没有停机的情况下工作。因为它先杀死,然后再问问题。
除了设置minReplicas = 2的明显替代方案(由于将所有这些Pod都加倍,需要额外的VM)会增加成本之外,还有其他方法吗?这是预期的,还是一个错误?
答案 0 :(得分:1)
在某些情况下,自动缩放器决定按比例缩小节点,最后一个剩余的pod被杀死。后来,新的Pod在另一个节点上启动,但这意味着中断。
因此,在生产环境中,Deployment
上应始终至少有2个副本。并且您应该使用Pod Anti-Affinity,以使这两个Pod不会安排在同一Availability Zone上。例如。如果一个可用区中存在网络问题,则您的应用仍然可用。
通常至少要有3个副本,每个可用区中都有一个副本,因为云提供商通常在每个Region中都有3个可用区-因此您可以 使用区域间流量通常比跨区域流量便宜。
您总是可以使用更少的副本来节省成本,但这是一个折衷方案,可用性会降低。