K8s出现问题时,如何排查解决!

K8s问题的排查

1. POD启动异常、部分节点无法启动pod``2. 审视集群状态``3. 追踪事件日志``4. 聚焦Pod状态``5. 检查网络连通性``6. 审视存储配置``7. 研究容器日志``8. K8S集群网络通信``9. 问题:Service 是否通过 DNS 工作?``10. 总结

1、POD启动异常、部分节点无法启动pod

在这里插入图片描述

容器里管理应用

pod是k8S中最小调度单元,POD里面的容器共享pod的空间、资源、网络、存储等。``pod管理一个容器。``pod管理多个容器。

pod出现异常的原因:

1、资源过剩:大量POD在同一个物理节点,出现资源占用太多导致物理节点宕机。``2、内存和CPU超标:pod中的应用出现内存泄露,导致pod内存迅速增多,pod kill 了影响节点正常提供服务。(解决办法:压测占用多少内存和CPU,做资源限制;)``3、网络问题:导致POD无法通信(解决办法:检查calico网络插件情况)``4、存储问题:pod挂载的共享存储连接不上导致pod启动异常(解决办法:查看共享存储是否正常,存储卷是否正常)``5、代码问题:应用程序代码在容器启动后失败(解决办法:排查应用程序代码)``6、配置问题:在部署deployment和statefulset时,资源清单编写有问题,导致pod无法正常创建(解决办法:查看资源配置的清单)``7、借助监控系统排查以上问题。

2. 审视集群状态

审视集群状态

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

3. 追踪事件日志

追踪事件日志

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

4. 聚焦Pod状态

第三方面:聚焦Pod状态

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

5. 检查网络连通性

检查网络连通性

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

6. 审视存储配置

审视存储配置

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

7. 研究容器日志

研究容器日志

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

8. K8S集群网络通信

在这里插入图片描述

K8S集群有自己独立的内部网络,整个集群的通信都需要依赖网络插件,常见的网络插件有Calico、Flannel、Canel等等。

  • Calico网络插件支持IP地址的分配以及网络策略的调整,性能和Flannel不相上下。

  • Flannel网络插件只支持IP地址分配。

  • Canel是Calico和Flannel网络插件的结合体。

K8S集群中的网络通信主要有以下几种:

  1. 同一个Pod内多个容器之间的网络通信。

  2. Pod与Pod之间的网络通信。

  3. Pod与Service的通信。

  4. Service资源与集群外部的通信

9. 问题:Service 是否通过 DNS 工作?

在这里插入图片描述

从相同 Namespace 下的 Pod 中运行:

u@pod$ nslookup hostnames``Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local``   ``Name:      hostnames``Address 1: 10.0.1.175 hostnames.default.svc.cluster.local

如果失败,那么您的 Pod 和 Service 可能位于不同的 Namespace 中,请尝试使用限定命名空间的名称:

u@pod$ nslookup hostnames.default``Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local``Name:      hostnames.default``Address 1: 10.0.1.175 hostnames.default.svc.cluster.local``   

如果成功,那么需要调整您的应用,使用跨命名空间的名称去访问服务,或者,在相同的 Namespace 中运行应用和 Service。如果仍然失败,请尝试一个完全限定的名称:

u@pod$ nslookup hostnames.default.svc.cluster.local``Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local``   ``Name:      hostnames.default.svc.cluster.local``Address 1: 10.0.1.175 hostnames.default.svc.cluster.local

注意这里的后缀:”default.svc.cluster.local”。”default” 是我们正在操作的 Namespace。”svc” 表示这是一个 Service。”cluster.local” 是您的集群域,在您自己的集群中可能会有所不同。微信搜索公众号:架构师指南,回复:架构师 领取资料 。

您也可以在集群中的 Node 上尝试此操作:

注意:10.0.0.10 是我的 DNS Service,您的可能不同)

u@node$ nslookup hostnames.default.svc.cluster.local 10.0.0.10``Server:         10.0.0.10``Address:        10.0.0.10#53``Name:   hostnames.default.svc.cluster.local``Address: 10.0.1.175

如果您能够使用完全限定的名称查找,但不能使用相对名称,则需要检查 /etc/resolv.conf 文件是否正确。

u@pod$ cat /etc/resolv.conf``nameserver 10.0.0.10``search default.svc.cluster.local svc.cluster.local cluster.local example.com``options ndots:5

nameserver 行必须指示您的集群的 DNS Service,它通过 --cluster-dns 标志传递到 kubelet。

search 行必须包含一个适当的后缀,以便查找 Service 名称。在本例中,它在本地 Namespace(default.svc.cluster.local)、所有 Namespace 中的 Service(svc.cluster.local)以及集群(cluster.local)中查找服务。根据您自己的安装情况,可能会有额外的记录(最多 6 条)。集群后缀通过 --cluster-domain 标志传递给 kubelet。本文档中,我们假定它是 “cluster.local”,但是您的可能不同,这种情况下,您应该在上面的所有命令中更改它。

options 行必须设置足够高的 ndots,以便 DNS 客户端库考虑搜索路径。在默认情况下,Kubernetes 将这个值设置为 5,这个值足够高,足以覆盖它生成的所有 DNS 名称。

10. 总结

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

链接:https://blog.csdn.net/2201_75366661/article/details/133522298?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2-133522298-null-null.nonecase&depth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-2-133522298-null-null.nonecase

![](https://img-blog.csdnimg.cn/img_convert/67a710068027a9239b591bd0ad655998.gif)  最后给大家附上我自己整理的网安最新最全的学习路线图,具体细分的技术都已明确写出:
![在这里插入图片描述](https://img-blog.csdnimg.cn/31a1b380cc064e42baca713f0fa6b6de.png#pic_center)2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ef34e08c4ed54089bcb71b51cb499cff.png#pic_center)(都打包成一块的了,不能一一展开,总共300多集)🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:<a href="https://mp.weixin.qq.com/s?__biz=Mzg2OTEzNTk3Nw==&mid=2247484134&idx=1&sn=8e049f404b6d86d18ecde454df210423&chksm=cea0e1e0f9d768f6482d98a0193118f4d5363ec23a1a0e0c3d0520931d0b3b72beb37e6053de&token=208322126&lang=zh_CN#rd">网安入门到进阶资源</a>3.工具包、面试题和源码
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。![在这里插入图片描述](https://img-blog.csdnimg.cn/127202ef1f51437db96a3bf37958855c.png#pic_center)最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
![在这里插入图片描述](https://img-blog.csdnimg.cn/17e778f032c244918626d45863d37cbd.png#pic_center)除此之外,还有200多本网络安全方面的电子书和技术文档,还有一些我自己打比赛或者参加大型网安行动的总结,对网安的学习来说益处很大,这里我就不一一展示了。# <font color="red">如<font color="orange">果<font color="#FFEB05">你<font color="green">也<font color="skyblue">想<font color="blue">学<font color="purple">习<font color="black">:黑客&网络安全的SQL攻防
# 在这里领取:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1c89cb52884c4bfeae2a87aa02d38c25.png#pic_center)# 这个是我花了几天几夜自整理的<font color="red">最新最全网安学习资料包<font color="red"><font color="black">免费共享给你们,其中包含以下东西:
# 1.学习路线&职业规划![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a75ac242398c41dda98cdd4fd739ce8d.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/8b82dd4edd07450c9074a7bd12e1b89a.png#pic_center)# 2.全套体系课&入门到精通
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/da5380b7a1dc45c9be6045ec5e413eaa.png#pic_center)
# 3.黑客电子书&面试资料
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c41dc121bf364201976731c5eba454cc.png#pic_center)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/294678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react 2

1.快速搭建开发环境 2.react渲染流程 3.1 jsx基础 概念 3.2 jsx基础 本质 3.3 jsx基础 jsx表达式 3.4 jsx基础 实现列表渲染 3.5 jsx基础 实现条件渲染 3.5 jsx基础 实现复杂的条件渲染 4. react中事件绑定 5.react组建基础使用 6.1 useState 6.2 useState修改状态的规则 7.基础…

力扣日记12.23-【二叉树篇】501. 二叉搜索树中的众数

力扣日记&#xff1a;【二叉树篇】501. 二叉搜索树中的众数 日期&#xff1a;2023.12.23 参考&#xff1a;代码随想录、力扣 501. 二叉搜索树中的众数 题目描述 难度&#xff1a;简单 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出…

Microsoft edge浏览器对比谷歌浏览器 edge浏览器好用吗 edge浏览器怎么更换主页

近年来&#xff0c;由于谷歌浏览器的垄断&#xff0c;许多人都已经习惯于使用谷歌浏览器。随着互联网的普及&#xff0c;浏览器成为了人们上网必备的工具之一。而近年来&#xff0c;微软公司推出的 Microsoft Edge 浏览器备受关注。那么&#xff0c;Microsoft Edge 浏览器真的好…

idea运行tocmat报错

1.检查环境变量是否配置正确。 网上有许多配置tomcat环境变量的方法&#xff0c;这里不再赘述。 2.判断是否有该情况&#xff1a; 在tomcat的bin目录下有三个bat文件(startup.bat,shutdown.bat,catalina.bat)&#xff0c;随意双击一个&#xff0c;会报出上述错误。但是右键使…

基于SpringBoot的APK检测管理系统 JAVA简易版

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 开放平台模块2.3 软件档案模块2.4 软件检测模块2.5 软件举报模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 开放平台表3.2.2 软件档案表3.2.3 软件检测表3.2.4 软件举报表 四、系统展示五、核心代…

Vanilla Pro for Mac 一款隐藏菜单栏图标工具

Vanilla Pro Vanilla Pro是一款简单易于使用的Mac应用程序&#xff0c;可让您隐藏菜单栏图标。只需下载Vanilla&#xff0c;启动应用程序&#xff0c;然后按照提示即可开始。 资源获取 Vanilla Pro for Mac 功能特性 键盘快捷键&#xff1a;设置自定义键盘快捷键来切换菜单…

关于pygame无法打开对应文件解决办法 pyame.error unable to open file

问题描述&#xff1a; 问题原因&#xff1a; 由于pygame版本过低导致无法进行声音播放&#xff0c;升级对应版本即可完成&#xff01; 解决办法&#xff1a; 升级pygame包版本到2.1.2&#xff0c;即可解决该问题&#xff01; pip install --upgrade pygame2.1.2

python3 数据分析项目案例,用python做数据分析案例

本篇文章给大家谈谈python3 数据分析项目案例&#xff0c;以及用python做数据分析案例&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 目录 一丶可视化绘图案例 1.曲线图 2.柱形图 3.点线图 4.3D散点图 5. 绘制漏斗图 6. 绘制词云图 二丶包/模块使用示例 (1)…

史上最详细由浅入深解析ThreadLocal

由浅入深全面解析ThreadLocal TOC 简介 线程并发&#xff1a;在多线程并发的场景下使用 传递数据&#xff1a;我们可以通过ThreadLocal在同一线程&#xff0c;不同组件中传递公共变量 线程隔离&#xff1a;每个线程的变量都是独立的&#xff0c;不会相互影响 基本使用 常用方…

2023美团机器人研究院学术年会成功举办

2023年12月19日&#xff0c;深圳市美团机器人研究院学术年会在清华大学深圳国际研究生院成功落下帷幕。会议回顾了研究院成立一年来的进展和成果&#xff0c;并邀请了各界专家共同讨论机器人技术的未来发展趋势。此外&#xff0c;年会期间还举办了首届低空经济智能飞行管理挑战…

Ignite内存配置

配置内存 #1.内存架构 #1.1.概述 Ignite内存架构通过可以同时在内存和磁盘上存储和处理数据及索引&#xff0c;得到了支持磁盘持久化的内存级性能。 多层存储的运行方式类似于操作系统&#xff08;例如Linux&#xff09;的虚拟内存。但是这两种类型架构之间的主要区别是&…

Spring核心源码解析

Spring 框架核心源码 1、使用 Spring 框架 2、反射机制 IoC 控制反转 Inverse of Control 创建对象的权限&#xff0c;Java 程序中需要用到的对象不再由程序员自己创建&#xff0c;而是交给 IoC 容器来创建。 IoC 核心思想 1、pom.xml <dependencies><!-- 引入 …