Kubernetes pods 在节点池升级期间变为 0/2,即使中断预算设置为 50% 的最小值。为什么?
Kubernetes pods went to 0/2 during a node pool upgrade even though disruption budgets were set to min of 50%. Why?
我正在为一个应用程序升级一些 AKS 集群,并且一直在测试 az aks nodepool upgrade
--max-surge
标志以加快该过程。我们的生产环境有 50 多个节点,按照我在低端看到的每个节点的时钟速度,我估计生产需要 9 个多小时才能完成。在一个较低的升级中,我 运行 最大激增 50%,这确实对速度有一点帮助,并且所有部署都保持最小可用 pods 的 50%。
对于这次最新升级,我尝试了 100% 的最大激增。它在正确的版本上启动了 6 个新节点(池中的 6 个当前节点)....但随后它同时迁移了每个 deployment/pod 并将所有内容降低到 0/2 pods。在我开始这个过程之前,我确保为每个单独的部署设置一个 pod 中断预算,最小可用率为 50%。这对我所有的其他升级都有效,除了这个,对我来说这意味着 100% 的激增是原因。
我只是想不通为什么我的最低可用百分比被忽略了。以下是示例 PDB 和相应部署的描述。
Pod 中断预算:
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.
来自官方documentation。您可能需要考虑降低最大激增。
我正在为一个应用程序升级一些 AKS 集群,并且一直在测试 az aks nodepool upgrade
--max-surge
标志以加快该过程。我们的生产环境有 50 多个节点,按照我在低端看到的每个节点的时钟速度,我估计生产需要 9 个多小时才能完成。在一个较低的升级中,我 运行 最大激增 50%,这确实对速度有一点帮助,并且所有部署都保持最小可用 pods 的 50%。
对于这次最新升级,我尝试了 100% 的最大激增。它在正确的版本上启动了 6 个新节点(池中的 6 个当前节点)....但随后它同时迁移了每个 deployment/pod 并将所有内容降低到 0/2 pods。在我开始这个过程之前,我确保为每个单独的部署设置一个 pod 中断预算,最小可用率为 50%。这对我所有的其他升级都有效,除了这个,对我来说这意味着 100% 的激增是原因。
我只是想不通为什么我的最低可用百分比被忽略了。以下是示例 PDB 和相应部署的描述。
Pod 中断预算:
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.
来自官方documentation。您可能需要考虑降低最大激增。