Kubernetes系列(一六六)Kubernetes 的 10 大错误&如何专业地排除它们?

文摘   2024-07-26 16:35   北京  

Kubernetes 的 10 大错误&如何专业地排除它们?

Kubernetes(k8s) 是强大的容器编排平台,已成为许多现代云原生应用程序的支柱。然而,由于其复杂性,出现了一系列常见错误,即使是经验丰富的开发人员也可能会犯错。在这个故事中,我们将探讨最常见的 10 个 k8s 错误,并提供解决这些问题的故障排除技术。无论您遇到神秘的 Pod 故障还是令人困惑的网络问题。这个故事将有助于有效地导航和解决最常见的 k8s 挑战。

1.CreateContainerConfigError

当k8s无法生成容器的配置时出现的错误。故障排除:

  • Pod 配置引用的 configMap 不存在或 Pod 无法访问。
  • Pod 配置引用的 Secret 不存在或 Pod 无法访问。
  • Pod 配置引用的 PVC 不存在或 Pod 无法访问。
  • 运行 kubectl describe pod <pod-name> -n <namespace> ,我们可能会看到失败的原因。如果 pod 未启动,那么我们无法 exec pod,在这种情况下运行 kubectl get pods -o wide 并检查 pod 被调度到哪个节点。在该节点中 ssh 并运行 docker ps -a 并获取所需容器的容器 id,然后检查 docker logs -f <container id>

2. CrashLoopBackOff

Pod 反复崩溃并重新启动。故障排除:

  • 检查 Pod 日志:kubectl logs <pod-name>
  • 描述 Pod 以了解更多详细信息: kubectl describe pod <pod-name> -n <namespace>
  • 研究应用程序的启动和初始化代码。
  • 调查探针(liveness和readiness)

3. ImagePullBackOff

Kubernetes(k8s)无法从仓库中拉取容器镜像。故障排除:

  • 验证镜像名称和标签。
  • 检查镜像仓库凭据。
  • 确保镜像存在于指定的仓库中。

4. Pending Pod

Pod 保持 Pending 状态,未调度。故障处理:

  • 检查节点资源(CPU、内存),确保有足够的容量。
  • 如果使用节点选择器或关联性,请确保节点被正确标记。
  • 验证节点上不存在会妨碍调度的污点。

5. 节点未就绪

一个或多个节点处于“NotReady”状态。故障排除:

  • 检查节点状态:kubectl describe node<node-name>
  • 查看受影响节点上的 kubelet 日志。
  • 确保节点具有网络连接。

6. Service 不工作

服务无法访问或无法正确路由流量。故障排除:

  • 检查服务和端点:kubectl get svckubectl get endpoints
  • 验证网络策略和防火墙规则。
  • 确保支持服务的 Pod 健康且正在运行。

7. 资源不足

Pod因资源不足而无法调度。故障排除:

  • 检查 Pod 规范中的资源请求和限制。
  • 通过添加更多节点来扩展集群。

8. PersistentVolumeClaims(PVC) Pending

PVC 保持 Pending 状态。故障排除:

  • 检查是否有符合 PVC 规格的可用 PV(持久卷)。
  • 确保存储类别存在并且配置正确。
  • 验证底层存储后端是否正常。

9. Pod 卡在终止状态

Pod 卡在终止状态。故障排除:

  • 检查可能阻止 Pod 删除的终结器。
  • 查看日志以了解关闭挂钩或长时间运行的进程。
  • 如有必要,强制删除 Pod:kubectl delete pod <pod-name> -n <namespace> --force

10. DNS 解析问题

集群内的 DNS 查找失败。故障排除:

  • 检查 DNS Pod 日志(例如 CoreDNS): kubectl logs <coredns-pod>
  • 确保 DNS 服务正在运行:kubectl get svc -kube-system.
  • 验证网络策略和防火墙规则不会阻止 DNS 流量。

结论

通过掌握这些故障排除技术,我们可以维护一个健壮且有弹性的 Kubernetes 环境。保持积极主动,并通过这些基本技巧保持 kubernetes 集群平稳运行。


云原生SRE
懂点K8S的SRE,关注云原生、DevOps、AI&ChatGPT等技术热点
 最新文章