| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档详细介绍了Kubernetes集群中节点异常时Pod的驱逐机制。默认情况下,节点异常到Pod被驱逐的时间为5分40秒(340秒),由节点被标记为不健康的时间(40秒)和Pod对节点异常的容忍时长(300秒)决定。文档提供了两种调整方法:一是通过修改ControllerManager的--node-monitor-grace-period参数调整节点标记为不健康的容忍时间;二是通过修改APIServer的默认参数或使用kubectl patch命令调整Pod对节点异常的容忍时长。调整操作需谨慎进行,特别是在业务低谷期执行。 | ||
| AI总结 | ||
# 《Pod 容忍节点异常时间调整》
## 1. 背景与原理
Kubernetes 集群中,节点发生异常(如 NotReady 或 Unreachable)后,Pod 的驱逐时间由两个因素决定:
1. 节点实际异常到被标记为不健康的时间(默认 40 秒)。
2. Pod 对节点不健康的容忍时长(默认 300 秒,即 5 分钟)。
默认情况下,节点异常到 Pod 被驱逐的总时间为 340 秒(5 分 40 秒)。
## 2. 调整节点被标记为不健康的时间
通过修改 `ControllerManager` 的参数 `--node-monitor-grace-period`,可以调整节点被标记为不健康的时长。
- 修改 `/etc/kubernetes/controller-manager` 文件,添加或修改参数:
```bash
--node-monitor-grace-period=20s
```
- 重启 `kube-controller-manager` 并确认其状态正常。
## 3. 调整默认容忍时长
通过修改 `kube-apiserver` 的参数,可以调整默认的 Pod 对节点异常的容忍时长。
- 修改 `/etc/kubernetes/apiserver` 文件,添加或修改参数:
```bash
--default-not-ready-toleration-seconds=100
--default-unreachable-toleration-seconds=100
```
- 重启 `kube-apiserver` 并确认其状态正常。
## 4. 调整现有 Pod 的容忍时长
对于已有的 Pod,可以通过 `kubectl patch` 命令修改其容忍时长。
- 创建 `tolerationseconds.yaml` 文件,定义需要调整的容忍时长:
```yaml
spec:
template:
spec:
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 100
- key: "node.kubernetes.io/not-ready"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 100
```
- 执行以下命令:
```bash
kubectl patch deploy your-deployment --patch "$(cat tolerationseconds.yaml)"
```
- 注意:此操作会触发 Deployment 中的所有 Pod 重建,请选择业务低谷期执行。
## 5. 注意事项
- 修改配置文件前,请做好备份。
- 确保 `--node-monitor-grace-period` 大于 `Kubelet` 的 `nodeStatusUpdateFrequency` 的 N 倍(N 为重试次数)。
- 调整 Pod 的容忍时长可能会影响业务,建议在业务低谷期操作。
## 6. 参考文献
1. 污点和容忍度
2. `kube-apiserver`
3. `kube-controller-manager` | ||
P1
P2
P3
P4
下载文档到本地,方便使用
文档评分














Pod 容忍节点异常时间调整