k8s拍错思路
检查集群状态
kubectl get nodes
检查组件状态
kkubectl get componentstatuses
kubectl get pod -A running | gerp "组件名称" runnig 就正常
查看所有 Pods
kubectl get pods -o wide # 显示详细信息(包含 IP、Node)
kubectl get pods -n
kubectl get pods --field-selector=status.phase=Running # 筛选特定状态的 Pods
查看 Nodes
bash
kubectl get nodes # 查看所有节点
kubectl describe node
kubectl get nodes -o jsonpath='{.items[*].status.conditions[?(@.type=="Ready")].status}' # 检查节点健康状态
查看 Services、Deployments 等
bash
kubectl get services # 查看所有服务
kubectl get deployments # 查看所有部署
kubectl get replicasets # 查看所有 ReplicaSet
kubectl get daemonsets # 查看所有 DaemonSet
kubectl get jobs,cronjobs # 查看作业和定时任务
查看资源详情
bash
kubectl describe pod
kubectl describe service
kubectl describe node
查看事件日志
bash
kubectl get events # 查看集群事件
kubectl get events --sort-by=.metadata.creationTimestamp # 按时间排序
kubectl get events -n
日志查看
bash
kubectl logs
kubectl logs -f
kubectl logs
kubectl logs
容器内部操作
bash
kubectl exec -it
kubectl exec
kubectl cp
网络测试
DNS 测试
bash
kubectl run dnsutils --image=tutum/dnsutils --restart=Never -- nslookup kubernetes.default
kubectl exec -it dnsutils -- nslookup
连通性测试
bash
kubectl run curl --image=radial/busyboxplus:curl --restart=Never -- curl
kubectl run netshoot --image=nicolaka/netshoot --restart=Never -- sleep infinity # 使用 netshoot 容器进行网络诊断
资源配置查看
bash
kubectl get pod
kubectl get service
kubectl explain pod.spec.containers # 查看 API 对象字段说明
节点和组件状态
节点资源使用 需要提前安装server-metric
bash
kubectl top nodes # 查看节点 CPU/内存使用情况
kubectl top pods # 查看 Pod CPU/内存使用情况
组件状态
bash
kubectl get componentstatuses # 查看控制平面组件状态(旧版)
kubectl get pods -n kube-system # 查看系统组件 Pods
故障模拟和调试
bash
kubectl drain
kubectl cordon
kubectl uncordon
高级筛选和格式化
bash
kubectl get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase # 自定义输出格式
kubectl get pods --field-selector=status.phase!=Running # 筛选非运行状态的 Pods
kubectl get pods -l app=myapp # 按标签筛选
命名空间操作
bash
kubectl get namespaces # 查看所有命名空间
kubectl create namespace
kubectl delete namespace
kubectl config set-context --current --namespace=
配置和上下文管理
bash
kubectl config view # 查看 kubeconfig 配置
kubectl config get-contexts # 查看所有上下文
kubectl config use-context
插件和扩展工具
kubectl 插件
bash
kubectl tree pod
kubectl describe pod
自定义指标
bash
kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods # 获取 Pod 指标(需 metrics-server 支持)
排错流程
Pod 无法启动:
bash
kubectl get pods # 查看 Pod 状态
kubectl describe pod
kubectl logs
服务无法访问:
bash
kubectl get services # 检查 Service 状态
kubectl get endpoints
kubectl exec -it
节点异常:
bash
kubectl get nodes # 检查节点状态
kubectl describe node
kubectl top nodes # 检查资源使用
检查网络问题
使用 kubectl get svc -n
Pod 无法访问外网:
进入 Pod 测试 ping 8.8.8.8。
若失败,在节点上测试 ping 8.8.8.8。
若节点正常,检查 CNI 插件和网络策略。
服务无法访问:
检查 Service 和 Endpoints 是否正常。
使用 curl
检查 kube-proxy 和 iptables 规则。
使用 kubectl exec -it
查看事件和审计日志
使用 kubectl get events -n
回滚部署
如果问题是由最近的部署更改引起的,考虑回滚到之前的版本。使用 kubectl rollout undo deployment/
本文来自博客园,作者:小二jerry,转载请注明原文链接:https://www.cnblogs.com/jassonWang/p/18873302