k8s出问题后 应该查看哪些内容

打印 上一主题 下一主题

主题 1002|帖子 1002|积分 3008

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
要确认 Kubernetes (k8s) 系统是否正常运行,需要检查集群的 核心组件节点状态Pod 运行环境网络通讯。以下是详细步调和下令:

1. 检查集群节点状态

  1. kubectl get nodes
复制代码


  • 盼望输出:所有节点状态为 Ready。
  • 非常环境

    • NotReady:节点大概未启动或组件故障。
    • 节点缺失:节点未参加集群或通讯问题。


2. 检查核心组件 Pod 状态

Kubernetes 控制平面组件(如 kube-apiserver、etcd、kube-scheduler、kube-controller-manager)通常以 Pod 情势运行在 kube-system 定名空间:
  1. kubectl get pods -n kube-system
复制代码


  • 盼望输出:所有 Pod 状态为 Running 且 READY 为 1/1 或雷同。
  • 常见非常

    • CrashLoopBackOff:组件崩溃循环,需检查日志。
    • Pending:资源不足或调度失败。
    • ImagePullBackOff:镜像拉取失败。


3. 查看核心组件日志

如果某个核心 Pod 非常,查看其日志:
  1. kubectl logs <pod-name> -n kube-system
复制代码
例如检查 kube-apiserver:
  1. kubectl logs kube-apiserver-master-node -n kube-system
复制代码

4. 检查 Kubernetes 服务状态



  • 控制平面服务(Master 节点):
    1. # 检查 kube-apiserver 是否监听 6443 端口
    2. curl -k https://localhost:6443/healthz
    3. # 期望输出:ok
    4. # 检查 etcd 健康状态
    5. kubectl get --raw='/readyz?verbose'
    复制代码
  • 工作节点服务(每个 Node):
    1. # 检查 kubelet 状态
    2. systemctl status kubelet
    3. # 检查容器运行时(如 Docker 或 Containerd)
    4. systemctl status docker
    复制代码

5. 验证网络连通性

Kubernetes 网络是否正常:
  1. # 创建一个临时 Pod 测试网络
  2. kubectl run network-test --image=alpine --rm -it --restart=Never -- sh
  3. # 进入 Pod 后测试 DNS 和跨节点通信
  4. ping kubernetes.default.svc.cluster.local  # DNS 解析
  5. ping <其他节点的IP>                          # 跨节点通信
复制代码

6. 检查 Kubernetes 变乱

查看集群中的警告或错误变乱:
  1. kubectl get events --sort-by='.metadata.creationTimestamp' -w
复制代码


  • 关注 Warning 类型的变乱,如调度失败、镜像拉取错误等。

7. 验证集群功能



  • 部署测试应用
    1. kubectl create deployment nginx-test --image=nginx
    2. kubectl expose deployment nginx-test --port=80 --type=NodePort
    3. kubectl get svc nginx-test  # 获取访问端口
    复制代码
  • 访问测试
    1. curl http://<节点IP>:<NodePort>
    复制代码
    若返回 Nginx 欢迎页,说明集群功能正常。

8. 使用集群诊断工具



  • kubeadm 检查(如果使用 kubeadm 部署):
    1. kubeadm alpha certs check-expiration  # 检查证书有效期
    2. kubeadm config check                  # 检查配置
    复制代码
  • 集群状态工具
    1. kubectl cluster-info         # 查看集群基本信息
    2. kubectl get componentstatus  # 检查核心组件状态(已弃用,建议直接检查 Pod)
    复制代码

常见问题排查


  • 节点 NotReady

    • 检查 kubelet 是否运行:systemctl status kubelet
    • 查看节点详情:kubectl describe node <节点名称>

  • Pod 无法调度

    • 检查资源配额:kubectl describe node | grep -A 10 Allocated
    • 查看调度失败原因:kubectl describe pod <pod-name>

  • 服务无法访问

    • 检查防火墙规则是否放行 NodePort 或 LoadBalancer 端口。
    • 验证 Service 和 Endpoints 是否正常:
      1. kubectl get svc <service-name>
      2. kubectl get endpoints <service-name>
      复制代码


总结步调


  • 检查所有节点 Ready。
  • 确认 kube-system 定名空间下的核心 Pod 全部运行正常。
  • 验证网络和 DNS 通讯。
  • 查看变乱和日志定位详细错误。
通过以上步调,可以快速诊断 Kubernetes 集群的健康状态。
解决方案:

最简单 粗暴的一种
  1. systemctl restart docker kubelet     
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表