当K8S发生故障时,可以从哪几个方面入手排查问题?

标签: k8s 手排 问题 | 发表时间:2023-06-25 17:12 | 作者:不背锅运维
出处:https://juejin.cn/backend

当K8S发生故障时,往往需要迅速而精确地定位问题,并及时采取行动。那么,当遇到K8S故障时,应该从哪几个方面入手排查问题呢?本篇就来聊聊这个话题,让我们一起来探寻关键的排查方向。

第一方面:审视集群状态

K8S的集群状态是排查故障的关键起点。使用kubectl get nodes命令来检查节点状态。如果有节点未能就绪或出现异常状态,可能会对应用程序造成故障。确保基本组件,如etcd、kubelet和kube-proxy等,正常运行。

第二方面:追踪事件日志

深入了解集群中发生的事件是解决K8S故障的重要环节。通过kubectl get events命令查看事件日志。事件日志记录了与集群中重要事件和错误相关的信息。透过事件日志的检查,能够了解K8S组件或应用程序中存在的潜在故障,并准确定位问题。

第三方面:聚焦Pod状态

通过运行kubectl get pods --all-namespaces命令,获取集群中所有Pod的状态。若有Pod未处于运行状态(例如挂起、错误或未就绪等),很可能与容器或应用程序相关的问题有关。借助kubectl describe pod命令,获取特定Pod的详细信息,以便深入排查。

第四方面:检查网络连通性

确保网络连接正常。审查服务、Pod和节点之间的网络通信是否存在问题。运行kubectl get services命令查看服务状态,使用kubectl describe service获取相关服务的详细信息。同时,验证网络策略和防火墙规则的正确配置。

第五方面:审视存储配置

如果你的应用程序使用持久性存储(例如Persistent Volumes和Storage Classes),务必确保存储配置正确。检查存储卷声明、存储类和持久卷的状态。通过kubectl get pv、kubectl get pvc和kubectl get storageclass命令,获取与存储相关的信息。

第六方面:研究容器日志

深入容器的日志能够提供关于应用程序故障的重要线索。使用kubectl logs命令查看特定Pod中容器的日志输出。如果Pod内含多个容器,你可以使用kubectl logs-c来查看特定容器的日志。

最后

以上就是排查K8S故障时的关键方向。当然,具体的排查方法还取决于你的集群配置、应用程序部署方式以及故障的具体现象。根据实际情况,可能需要进一步调查或采取其他排查措施。立足于这些方向,你将更有把握解决K8S故障,并确保应用程序持续稳定运行。

点击链接,畅读精彩文章,从中获取洞见,为自己的技术之旅注入新的动力!关注我的微信公众号,不错过更多精彩内容。

【K8S(专注于深入研究K8S相关的各种技术和知识分享。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2474851867500544003&count=3#wechat_redirect

【Go&Py(涵盖了Go和Python两种流行的编程语言。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869340550028771330&count=3#wechat_redirect

【Ops(运维领域的讨论和交流。)】:https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&__biz=MzUzMTkyODc4NQ==&scene=1&album_id=2869345486221262853&count=3#wechat_redirect

相关 [k8s 手排 问题] 推荐:

当K8S发生故障时,可以从哪几个方面入手排查问题?

- - 掘金 后端
当K8S发生故障时,往往需要迅速而精确地定位问题,并及时采取行动. 那么,当遇到K8S故障时,应该从哪几个方面入手排查问题呢. 本篇就来聊聊这个话题,让我们一起来探寻关键的排查方向. K8S的集群状态是排查故障的关键起点. 使用kubectl get nodes命令来检查节点状态. 如果有节点未能就绪或出现异常状态,可能会对应用程序造成故障.

9 个技巧,解决 K8s 中的日志输出问题

- - DockOne.io
作者 | 元乙  阿里云存储服务技术专家. 导读:近年来,越来越多的同学咨询如何为 Kubernetes 构建一个日志系统,或者是来求助在此过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是作者想把这些年积累的经验以文章的形式发出来,让看到文章的同学少走弯路. K8s 日志系列文章内容偏向落地实操以及经验分享,且内容会随着技术的迭代而不定期更新,本文为该系列文章的第 3 篇.

grpc在k8s中的负载均衡问题

- - holmofy
两台skywalking-oap接受并分析由agent采集的trace数据,但是问题是两台oap服务负载不均衡. #k8s的service四层负载均衡. 为了排除k8s的service负载均衡的问题,在线下环境还原了请求的过程. skywalking提供了grpc(11800端口)和rest(12800端口)两种协议的服务.

记 K8s 集群中 Flannel 遇到的两个问题

- - IT瘾-dev
自建的 K8s 集群的坑不少, 尤其是到了 Node 数量越来越多之后, 问题也逐渐显露了出来, 博客主要介绍我们使用 flannel之后遇到的两个问题以及解决方案, 问题其实不严重, 只是涉及到了底层的结构, 改动时候要小心.. 问题 1 flannel 的 OOM 问题. 下面这张图是官方的配置, 可以看到, 默认的资源设置仅给定了 50M 内存.

CentOS7 安装 K8S

- - 企业架构 - ITeye博客
前提:VirtualBox CentOS7. 物理机IP   192.168.18.8. 虚拟机1IP:192.168.18.100(VMaster master). 虚拟机2IP:192.168.18.101(VServer1 node1). 虚拟机3IP:192.168.18.102(VServer2 node2).

k8s水平扩容

- - Bboysoul's Blog
k8s 的好处就是可以弹性水平扩容和纵向扩容,平时纵向扩容用的不太多,所以今天说说水平扩容,在创建hpa之前你要确定集群中已经安装了metrics-server,我使用的是k3s,直接自带. 首先创建需要的容器,下面是dockerfile. 原理就是当你访问index.php的时候会进行一个循环计算来提高cpu的使用率.

# [k8s] HPA: Horizontal Pod Autoscaling

- - V2EX - 技术
HPA 是 K8S 的一大利器. 通过 HPA, 我们可以让服务的 pod 数量根据特定指标自动增加或减少, 使得在高峰期有足够的资源服务请求, 在低峰期又可以避免占用过多的资源. 同时, 在 SOA 架构下, 我们也习惯通过 HPA 来避免劳心劳力的为每个微服务计算所需的资源.. minReplicas: 允许的最小 pod 数量.

K8S 1.24.0 安装部署

- - Share
在 v1.2x 版本中, Kubernetes 支持的最大节点数为 5000. 更具体地说,我们支持满足以下所有条件的配置:. 每个节点的 pod 数量不超过. Kubernetes v1.20 开始,默认移除 docker 的依赖,如果宿主机上安装了 docker 和 containerd,将优先使用 docker 作为容器运行引擎,如果宿主机上未安装 docker 只安装了 containerd,将使用 containerd 作为容器运行引擎;.

k8s docker集群搭建 - CSDN博客

- -
一、Kubernetes系列之介绍篇.     - 一次构建,到处运行. 2.什么是kubernetes.   首先,他是一个全新的基于容器技术的分布式架构领先方案. Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg). 在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性.

深入掌握K8S Pod - Yabea - 博客园

- -
K8S configmap介绍. Pod是k8s中最小的调度单元,包含了一个“根容器”和其它用户业务容器. 如果你使用过k8s的话,当然会了解pod的基本使用,但是为了更好的应用,你需要深入了解pod的配置、调度、升级和扩缩容等. pod包含一个或多个相对紧密耦合的容器,处于同一个pod中的容器共享同样的存储空间、IP地址和Port端口.