如何增加 AKS 节点升级部署的节点耗尽超时

问题描述 投票:0回答:2

问题:

  • maxUnavailable 为 1 的 PDB
  • Pod 有 15 小时的长宽限期(处理有状态连接的业务案例的技术要求。也是由外部依赖性引起的,所以我无法更改这一点)
  • 节点 Drain 超时只有 1 小时?

在升级期间,需要从节点驱逐的 pod 可能需要比节点耗尽超时更长的时间,并产生以下错误:

(UpgradeFailed) Drain of NODE_NAME did not complete pods [STS_NAME:POD_NAME]: Pod
 POD_NAME still in state Running on node NODE_NAME, pod termination grace period 15h0m0s was
 greater than remaining per node drain timeout. See http://aka.ms/aks/debugdrainfailures
Code: UpgradeFailed

此后集群处于故障状态。

由于 pod 的宽限期不在我的控制范围内,我想将节点耗尽超时增加到 31 小时,因为单个节点上可以有 2 个长宽限期 pod。不过,我还没有找到有关节点耗尽超时的任何信息。 我什至不知道它是 K8s 还是 AKS 的一部分。

如何增加每个节点的耗尽超时,以便我的长宽限期 Pod 不会中断我的节点升级操作?

编辑: 在 kubectl cli 参考 中,drain 命令采用超时参数。由于我自己不调用排水管,所以我不知道这对我有什么帮助。这让我相信,如果有的话,这需要在 AKS 方面进行处理。

azure-aks azure-cli
2个回答
0
投票

不是实际问题的答案,而是可能的解决方法:

  1. 将运行工作负载所需的节点数量扩大一倍
  2. 手动驱逐前半部分需要升级的节点
  3. 开始升级
  4. 下半场某处升级失败
  5. 手动驱逐后半个节点
  6. 开始升级
  7. 升级完成
  8. 再次缩小到所需的节点数量

缺点:

  • 升级期间基础设施成本翻倍
  • 大量手动步骤用于升级、驱逐、升级、再次驱逐、再次升级、缩小规模
  • 由于可能的 vCore 配额限制,可能需要额外的配额请求才能实际执行
  • 此升级的手动性质将阻止成功自动升级集群
  • 整个操作的时间至少加倍,因为整个工作负载需要完全驱逐两次,而不是一次

这是一个糟糕的解决方法,但却是一个解决方法。


0
投票

Drain 超时可以在 aks 的 august api 中配置。文件仍在等待中。

© www.soinside.com 2019 - 2024. All rights reserved.