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

devtools/2025/3/1 13:41:05/

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


1. 检查集群节点状态

kubectl get nodes
  • 期望输出:所有节点状态为 Ready
  • 异常情况
    • NotReady:节点可能未启动或组件故障。
    • 节点缺失:节点未加入集群或通信问题。

2. 检查核心组件 Pod 状态

Kubernetes 控制平面组件(如 kube-apiserveretcdkube-schedulerkube-controller-manager)通常以 Pod 形式运行在 kube-system 命名空间:

kubectl get pods -n kube-system
  • 期望输出:所有 Pod 状态为 RunningREADY1/1 或类似。
  • 常见异常
    • CrashLoopBackOff:组件崩溃循环,需检查日志。
    • Pending:资源不足或调度失败。
    • ImagePullBackOff:镜像拉取失败。

3. 查看核心组件日志

如果某个核心 Pod 异常,查看其日志:

kubectl logs <pod-name> -n kube-system

例如检查 kube-apiserver

kubectl logs kube-apiserver-master-node -n kube-system

4. 检查 Kubernetes 服务状态

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

5. 验证网络连通性

Kubernetes 网络是否正常:

# 创建一个临时 Pod 测试网络
kubectl run network-test --image=alpine --rm -it --restart=Never -- sh
# 进入 Pod 后测试 DNS 和跨节点通信
ping kubernetes.default.svc.cluster.local  # DNS 解析
ping <其他节点的IP>                          # 跨节点通信

6. 检查 Kubernetes 事件

查看集群中的警告或错误事件:

kubectl get events --sort-by='.metadata.creationTimestamp' -w
  • 关注 Warning 类型的事件,如调度失败、镜像拉取错误等。

7. 验证集群功能

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

8. 使用集群诊断工具

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

常见问题排查

  1. 节点 NotReady
    • 检查 kubelet 是否运行:systemctl status kubelet
    • 查看节点详情:kubectl describe node <节点名称>
  2. Pod 无法调度
    • 检查资源配额:kubectl describe node | grep -A 10 Allocated
    • 查看调度失败原因:kubectl describe pod <pod-name>
  3. 服务无法访问
    • 检查防火墙规则是否放行 NodePort 或 LoadBalancer 端口。
    • 验证 Service 和 Endpoints 是否正常:
      kubectl get svc <service-name>
      kubectl get endpoints <service-name>
      

总结步骤

  1. 检查所有节点 Ready
  2. 确认 kube-system 命名空间下的核心 Pod 全部运行正常。
  3. 验证网络和 DNS 通信。
  4. 查看事件和日志定位具体错误。

通过以上步骤,可以快速诊断 Kubernetes 集群的健康状态。

解决方案:

最简单 粗暴的一种

systemctl restart docker kubelet     

http://www.ppmy.cn/devtools/163633.html

相关文章

使用Docker Compose部署 MySQL8

MySQL 8 是一个功能强大的关系型数据库管理系统,而 Docker 则是一个流行的容器化平台。结合使用它们可以极大地简化 MySQL 8 的部署过程,并且确保开发环境和生产环境的一致性。 安装 Docker 和 Docker Compose 首先,确保你的机器上已经安装了 Docker 和 Docker Compose。 …

Deepseek的缺陷

Deepseek什么都略懂&#xff0c;但答案很难让人满意。 内容蜻蜓点水&#xff0c;什么都有点&#xff0c;但浅薄的很。让玩家很无语。 一些软件类的答案貌似比较详细&#xff0c;但距离能用还差很远。 ----------------- 一些问题的答案如下&#xff1a; 《b4》是一款经典的生…

Spring报错解决一览

Spring错误持续更新贴… 问题一 springcloud-OAuth2.0配置的时候报错 Method springSecurityFilterChain in org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration required a bean of type ‘org.springframework.boot.autoconfigu…

RabbitMQ 高级配置与优化:从入门到精通

RabbitMQ 高级配置与优化:从入门到精通 引言 在分布式架构中,消息队列(MQ)是必不可少的一环,而 RabbitMQ 作为业界广泛使用的消息中间件,凭借其高吞吐、可扩展、可靠性等特性备受青睐。然而,很多开发者和运维人员在使用 RabbitMQ 时,仅仅停留在"能用"的层面…

DDD 架构之领域驱动设计【通俗易懂】

文章目录 1. 前言2. MVC 对比 DDD3. DDD 分层架构4. 完整业务流程 1. 前言 官方回答&#xff1a;DDD是一种应对复杂业务系统的设计方法&#xff0c;通过将软件设计与业务领域紧密结合&#xff0c;帮助开发人员构建清晰、可维护的领域模型。在复杂的业务系统中&#xff0c;它能…

c++中迭代器和指针有什么区别?

在 C 中&#xff0c;迭代器和指针虽然在某些场景下有相似的行为&#xff0c;但它们在设计目的、功能和使用场景上有本质区别。以下是详细对比和最佳实践&#xff1a; 一、核心区别对比表 特征指针迭代器本质原生数据类型&#xff0c;直接存储内存地址类对象&#xff0c;抽象容…

Android用ExoPlayer获取视频正确的尺寸

最近在实现视频预加载功能&#xff0c;遇到了较多的疑问未解决&#xff0c;但机缘巧合解决了困扰我很久的某些视频 展示异常的问题&#xff08;被压扁&#xff09;&#xff0c;如下图 我的实现方法&#xff1a; Overridepublic void onVideoSizeChanged(VideoSize videoSize)…

nuxt常用组件库html-validator应用解析

html-validator 主要用于自动验证nuxt服务器呈现的HTML(SSR和SSG)&#xff0c;以检测可能导致水合错误的HTML常见问题&#xff0c;有助于减少水合错误&#xff0c;检测常见的可访问性错误。 安装 npx nuxilatest module add html-validator配置 若自动更新nuxt.config.ts配置文…