PodDisruptionBudgets 是否优先于 HorizontalPodAutoscalers?
Do PodDisruptionBudgets take priority over HorizontalPodAutoscalers?
如果您的 PDB 指定的 minAvailable
高于 HPA 的 minReplicas
,pods 的数量是否会达到较低的 minReplicas
?
示例配置:
PDB
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: frontend-pdb
spec:
minAvailable: 3 # HERE
selector:
matchLabels:
app: frontend
HPA
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: frontend-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: frontend-deployment
minReplicas: 2 # AND HERE
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 65
我认为将 PDB 设置为 % 而不是绝对会解决这个潜在的冲突,但我很好奇这两者如何相互配合。
在您的情况下,将创建两个对象并赋值
PodDisruptionBudget 中定义的 minAvailable: 3
将比 Deployment 中定义的 minReplicas: 2
具有更高的优先级。
PDB 中定义的条件更为重要。在这种情况下,PDB 的条件得到满足,但如果自动缩放器将尝试减少副本数量,它将被阻止,因为 minAvailable 值的 PDB 条件将不满足。
您已经写道,您注意到当您更新部署时,您的 PDB minAvailable
小于 HPA 中的 minReplicas
,可用量 pods 永远不会低于 HPA。这是正常的,因为自动缩放器考虑了 PDB 和 if
minReplicas > minAvailable
因此满足 PDB 的条件(minAvailable 是临界线,因此更高的值也是合适的)因此 HPA 可以考虑他的条件并且最多会命中 minReplicas。
定义 Pod Disruption Budget 的总体思路是确保最少的副本始终有效。
在节点操作时,drain 将停止并等待在执行 pod 驱逐时满足所有 PDB 条件。如果 pods 被逐出会导致 PDB 无效,则将等到条件有效。
注意:
具有单个副本的部署的 PDB 很可能会导致节点操作永远不会成功。
阅读更多:, .
如果您的 PDB 指定的 minAvailable
高于 HPA 的 minReplicas
,pods 的数量是否会达到较低的 minReplicas
?
示例配置:
PDB
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: frontend-pdb
spec:
minAvailable: 3 # HERE
selector:
matchLabels:
app: frontend
HPA
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: frontend-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: frontend-deployment
minReplicas: 2 # AND HERE
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 65
我认为将 PDB 设置为 % 而不是绝对会解决这个潜在的冲突,但我很好奇这两者如何相互配合。
在您的情况下,将创建两个对象并赋值
PodDisruptionBudget 中定义的 minAvailable: 3
将比 Deployment 中定义的 minReplicas: 2
具有更高的优先级。
PDB 中定义的条件更为重要。在这种情况下,PDB 的条件得到满足,但如果自动缩放器将尝试减少副本数量,它将被阻止,因为 minAvailable 值的 PDB 条件将不满足。
您已经写道,您注意到当您更新部署时,您的 PDB minAvailable
小于 HPA 中的 minReplicas
,可用量 pods 永远不会低于 HPA。这是正常的,因为自动缩放器考虑了 PDB 和 if
minReplicas > minAvailable
因此满足 PDB 的条件(minAvailable 是临界线,因此更高的值也是合适的)因此 HPA 可以考虑他的条件并且最多会命中 minReplicas。
定义 Pod Disruption Budget 的总体思路是确保最少的副本始终有效。
在节点操作时,drain 将停止并等待在执行 pod 驱逐时满足所有 PDB 条件。如果 pods 被逐出会导致 PDB 无效,则将等到条件有效。
注意:
具有单个副本的部署的 PDB 很可能会导致节点操作永远不会成功。
阅读更多: