Я обновляю несколько кластеров AKS для приложения и тестирую флаг az aks nodepool upgrade
--max-surge
, чтобы ускорить процесс. Наша производственная среда имеет более 50 узлов, и при тактовой скорости на узел, которую я видел на наших низах, я предполагаю, что производство займет более 9 часов. При одном из более низких обновлений я запустил максимальный всплеск на 50%, что немного помогло увеличить скорость, и все развертывания сохраняли минимальное количество доступных модулей на уровне 50%.
Для этого последнего обновления я попробовал максимальный скачок 100%. В результате было создано 6 новых узлов (6 текущих узлов в пуле) в правильной версии... но затем он одновременно перенес каждое развертывание/модуль и сократил все до 0/2 модулей. Прежде чем я начал этот процесс, я удостоверился, что бюджет прерывания работы модуля для каждого отдельного развертывания установлен на минимально доступном уровне 50%. Это работало на всех моих других обновлениях, кроме этого, что для меня означает, что причиной является 100%-ный всплеск.
Я просто не могу понять, почему мой минимальный доступный процент был проигнорирован. Ниже приведены описания примера PDB и соответствующего развертывания.
Бюджет отключения пода:
Name: myapp-admin
Namespace: front-svc
Min available: 50%
Selector: role=admin
Status:
Allowed disruptions: 1
Current: 2
Desired: 1
Total: 2
Events:
Развертывание (фрагмент):
Name: myapp-admin
Namespace: front-svc
CreationTimestamp: Wed, 26 May 2021 16:17:00 -0500
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 104
Selector: agency=myorg,app=myapp,env=uat,organization=myorg,role=admin
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 15
RollingUpdateStrategy: 25% max unavailable, 1 max surge
Pod Template:
Labels: agency=myorg
app=myapp
buildnumber=1234
env=uat
organization=myorg
role=admin
Annotations: kubectl.kubernetes.io/restartedAt: 2022-03-12T09:00:11Z
Containers:
myapp-admin-ctr:
Есть ли что-то очевидное, что я делаю неправильно здесь?
... a max surge value of 100% provides the fastest possible upgrade process (doubling the node count) but also causes all nodes in the node pool to be drained simultaneously.
Из официального документация. Возможно, вы захотите подумать о том, чтобы уменьшить максимальный всплеск.
Пул узлов, вероятно, не заботится о бюджете распределения, поскольку на самом деле это не родная вещь kubernetes. Если узла нет, он находится в принудительном распределении, от которого вас не защитит бюджет на сбои.