dan*_*man 9 kubernetes horizontal-pod-autoscaling
如果您的 PDB 指定的值高于HPA 的minAvailable值minReplicas,那么 pod 的数量是否会达到较低的值minReplicas?
配置示例:
PDB
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: frontend-pdb
spec:
minAvailable: 3 # HERE
selector:
matchLabels:
app: frontend
Run Code Online (Sandbox Code Playgroud)
羟丙酸
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
Run Code Online (Sandbox Code Playgroud)
我想象将 PDB 设置为 % 而不是绝对值可以解决这种潜在的冲突,但我很好奇两者如何相互作用。
在您的情况下,将创建两个对象,并且
minAvailable: 3PodDisruptionBudget 中定义的值将具有比minReplicas: 2Deployment 中定义的更高的优先级。PDB 中定义的条件更为重要。在这种情况下,满足 PDB 的条件,但如果自动缩放程序尝试减少副本数量,它将被阻止,因为不满足 PDB 中 minAvailable 值的条件。您曾写道,您注意到,当您更新部署时,并且 PDBminAvailable小于minReplicasHPA 中的数量,可用 pod 的数量永远不会低于 HPA。这是正常的,因为自动缩放器考虑了 PDB 并且如果
minReplicas > minAvailable
Run Code Online (Sandbox Code Playgroud)
因此满足 PDB 的条件(minAvailable 是关键线,因此较高的值也是合适的),因此 HPA 可以考虑他的条件并最多达到 minReplicas。
定义Pod 中断预算的总体思路是确保最少的副本始终正常工作。
在节点操作时,drain 将停止并等待在执行 pod 驱逐时遵守所有 PDB 条件。如果被驱逐的 Pod 会导致 PDB 无效,则将等到条件有效为止。
笔记:
用于具有单个副本的部署的 PDB 很可能会导致节点操作永远不会成功。
了解更多:downscaling-kubernetes、hpa-pdb-kubernetes。
| 归档时间: |
|
| 查看次数: |
3106 次 |
| 最近记录: |