首页主机资讯如何在 Ubuntu 上进行 Kubernetes 调试

如何在 Ubuntu 上进行 Kubernetes 调试

时间2025-11-19 13:32:03发布访客分类主机资讯浏览658
导读:Ubuntu 上调试 Kubernetes 的实用流程 一 快速定位流程 集群与节点健康 查看节点状态:kubectl get nodes -o wide;异常节点用 kubectl describe node 检查 Conditio...

Ubuntu 上调试 Kubernetes 的实用流程

一 快速定位流程

  • 集群与节点健康
    • 查看节点状态:kubectl get nodes -o wide;异常节点用 kubectl describe node 检查 Conditions(如 Ready、DiskPressure、MemoryPressure)。
    • 查看系统组件:kubectl get pods -n kube-system,确认 kube-apiserver、etcd、kube-controller-manager、kube-scheduler、coredns 等处于 Running
  • 工作负载状态
    • 全局视角:kubectl get pods --all-namespaces -o wide;异常 Pod 用 kubectl describe pod -n Events,用 kubectl logs -n [-c ] 查日志;资源用 kubectl top nodes / pods
  • 节点级故障
    • 服务与日志:systemctl status kubeletjournalctl -u kubelet -f(关注证书过期、容器运行时异常)。
    • 资源与磁盘:df -h /var/lib/kubeletfree -mtop -p $(pgrep kubelet)
    • 容器运行时:systemctl status containerdctr containers list(或 crictl ps -a)。
  • 网络连通
    • 到 API Server:ping ;端口:nc -zv 6443
    • CNI 插件:kubectl get pods -n kube-system -l k8s-app=calico-node(或对应插件);查看插件日志。
    • 策略与 DNS:检查 NetworkPolicy 限制;容器内 cat /etc/resolv.conf 确认 DNS。

二 深入排障与临时调试

  • 临时容器 Ephemeral Containers(推荐)
    • 适用:容器 CrashLoopBackOff、镜像无调试工具、无法 exec
    • 前提:集群版本 ≥ v1.23(特性默认启用)。
    • 示例:注入调试容器并进入
      • kubectl debug -it -n --image=nicolaka/netshoot --target= – sh
      • 或 kubectl debug -it -n --image=busybox – sh
    • 常用工具镜像:nicolaka/netshoot(网络诊断)、curlimages/curl(HTTP 测试)、container-trouble-shooting(综合诊断)。
  • 节点级调试
    • 无法 SSH 时:kubectl debug node/ -it --image=ubuntu,在节点上打开交互式 Shell 做系统级排查。
  • 抓包与流量分析
    • 在目标 Pod 内抓包:kubectl sniff -n (需 krew 安装 sniff 插件,宿主机装 Wireshark/tcpdump),可在 Wireshark 中分析 TCP/UDP 会话细节。
  • 远程本地联调
    • 使用 mirrord:将集群流量/环境变量/文件操作桥接到本地进程,配合 IDE 断点调试,无需反复部署。

三 常见故障速解

  • 节点 NotReady
    • 检查 kubelet 是否运行与证书是否过期(如 /var/lib/kubelet/pki/kubelet-client-current.pem);查看 kubeletcontainerd 日志;确认 CNI 插件 Pod 就绪;排查 磁盘/内存 压力与 防火墙 端口(如 6443)。
  • Pod 无法启动或 CrashLoopBackOff
    • kubectl describe podEvents(镜像拉取失败、启动命令错误、挂载失败、资源配额不足等);用 kubectl logs 查看容器日志;必要时注入 临时容器 进入现场排查。
  • 服务网络不通
    • 节点到 API Server 6443 连通性;CNI 插件状态与日志;是否存在 NetworkPolicy 拦截;检查 DNS 解析(容器内 /etc/resolv.conf);排查 ufw/iptables 规则。

四 权限与安全建议

  • 最小权限的临时容器调试
    • 为调试账号授予仅操作 pods/ephemeralcontainers 的权限:
      • apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ephemeral-debugger rules:
        • apiGroups: [“”] resources: [“pods/ephemeralcontainers”] verbs: [“update”,“patch”]
      • apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: debugger-binding subjects:
        • kind: User name: “” apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: ephemeral-debugger apiGroup: rbac.authorization.k8s.io
    • 应用:kubectl create -f role-test.yaml
  • 合规与风险控制
    • 调试完成后删除临时容器;避免在调试镜像中引入不必要软件;生产环境建议通过 RBAC 严格控制调试权限与审计。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在 Ubuntu 上进行 Kubernetes 调试
本文地址: https://pptw.com/jishu/751119.html
如何在 Ubuntu 上实现 Kubernetes 自动化运维 Ubuntu MariaDB存储引擎有哪些选择

游客 回复需填写必要信息