我正在尝试为我的部署部署PodDisruptionBudget,但是当我部署此示例时
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: example-pdb
spec:
minAvailable: 1
selector:
matchLabels:
app: example-deployment
Run Code Online (Sandbox Code Playgroud)
通过此部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 1
selector:
matchLabels:
app: example-deployment-app
template:
metadata:
labels:
app: example-deployment-app
spec:
...
Run Code Online (Sandbox Code Playgroud)
我得到回应
$ kubectl get pdb
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
example-pdb 1 N/A 0 7s
Run Code Online (Sandbox Code Playgroud)
“允许中断”为 0 意味着什么?
正如指定 PodDisruptionBudget中提到的:
\n\n\nA
\nPodDisruptionBudget有三个字段:\n
\n- \n
一个标签选择器
\n.spec.selector,用于指定它所应用的 pod 集。此字段是必需的。- \n
\n
.spec.minAvailable这是对该集合中 pod 数量的描述,这些 pod 在驱逐后仍然可用,即使\n不存在被驱逐的 pod。minAvailable可以是绝对数字或百分比。- \n
\n
.spec.maxUnavailable(在 Kubernetes 1.7 及更高版本中可用)这是对该组中驱逐后\n不可用的 pod 数量的描述。它可以是绝对数字或百分比。
在您的情况下,它.spec.minAvailable设置为1,因此1Pod 必须始终可用,即使在中断期间也是如此。
现在查看您的部署设置,.spec.replicas这1意味着.spec.minAvailable: 1该配置不允许中断。
看一下官方的例子:
\n\n\n用于
\nkubectl检查您的 PDB 是否已创建。\n
app: zookeeper假设您的命名空间中实际上没有匹配的 Pod ,那么您将看到如下内容:Run Code Online (Sandbox Code Playgroud)\nkubectl get poddisruptionbudgets\nNAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE\nzk-pdb 2 N/A 0 7s\n如果有匹配的 Pod(例如 3 个),那么您会看到类似\n的内容:
\nRun Code Online (Sandbox Code Playgroud)\nkubectl get poddisruptionbudgets\nNAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE\nzk-pdb 2 N/A 1 7s\n非零值表示
\nALLOWED DISRUPTIONS中断控制器已发现 Pod、计算匹配的 Pod 并更新 PDB 的状态。您可以使用此命令获取有关 PDB 状态的更多信息\n:
\nRun Code Online (Sandbox Code Playgroud)\nkubectl get poddisruptionbudgets zk-pdb -o yaml\n\napiVersion: policy/v1\nkind: PodDisruptionBudget\nmetadata:\n annotations:\n\xe2\x80\xa6\n creationTimestamp: "2020-03-04T04:22:56Z"\n generation: 1\n name: zk-pdb\n\xe2\x80\xa6\nstatus:\n currentHealthy: 3\n desiredHealthy: 2\n disruptionsAllowed: 1\n expectedPods: 3\n observedGeneration: 1\n
您可以看到,如果 被.spec.minAvailable设置为 2 并且有 3 个正在运行的 Pod,则比disruptionsAllowed实际情况要多1。您可以根据您的用例进行检查。
| 归档时间: |
|
| 查看次数: |
9730 次 |
| 最近记录: |