Kubernetes中Deployment部署故障排除
Kubernetes中Deployment部署故障排除
字符型思维导图
- 排查pod状态(带标签):
kubectl get pods,是否有等待处理的pod?- 是?
kubectl describe pod <pod-name>,集群资源是否已经爆满?- 是?增加更多的磁盘资源
- 否?您是否达到ResourceQuota限制?
- 是?放宽ResourceQuota限制,修改pod的规格。
- 否?是否挂载了PersistentVolumeClaim(PVC)。
- 是?修复PersistentVolumeClaim(PVC)存储
- 否?
kubectl get pods -o wide,Pod是否已分配给节点- 是?Kubelet可能存在问题,排查kubelet日志和状态
- 否?Scheduler可能存储问题,排查Scheduler进程状态和日志
- 否?Pod正在Running吗?
- 是?Pod准备好了吗?
- 是?
kubectl port-forward <pod-name> 8080:<pod-port>,是否可以访问该应用程序吗?- 是?Pod是运行正常的。可以检查一下Service应用,
kubectl describe service <service-name>,检查是否可以看到Service对应的endpoints列表?- 是?
kubectl port-forward service/<service-name> 8080:<service-port>,现在可以访问该应用程序吗?- 是?Service服务运行正常。检查
kubectl describe ingress <ingress-name>,检查可以看到后端列表(backends)吗?- 是?检查
kubectl port-forward <ingress-pod-name> 8080:<ingress-port>,重新测试是否可以访问该应用程序吗?- 是?Ingress正常运行。该应用程序应该正在运行。 您可以尝试从公共互联网访问它看看?
- 是?END检查结束.
- 否?问题可能出在基础架构以及如何暴露集群端口上面(expose)
- 否?这个问题特定于Ingress控制器。查阅相关Ingress文档
- 是?Ingress正常运行。该应用程序应该正在运行。 您可以尝试从公共互联网访问它看看?
- 否?检查serviceName和servicePort是否与Service匹配?
- 是?这个问题特定于Ingress控制器。查阅相关Ingress文档
- 否?修改入口serviceName和servicePort问题。
- 是?检查
- 否?服务上的targetPort是否与Pod中的containerPort相匹配?
- 是?问题可能出在Kube Proxy上。
- 否?修改Service服务targetPort和containerPort相同
- 是?Service服务运行正常。检查
- 否?检查规格选择器是否与正确的Pod标签匹配?
- 是?Kubelet存在问题,检查对应的进程日志。
- 否?修改为正确的规格选择器,使它与Pod标签匹配
- 是?
- 否?检查容器暴露的端口是否正确并且正在监听0.0.0.0?
- 是?未知状态
- 否?检查这个容器应用,并且更正容器内端口
- 是?Pod是运行正常的。可以检查一下Service应用,
- 否?
kubectl describe pod <pod-name>,检查一下准备就绪探针是否失败?- 是?准备就绪探针是否失败?
- 否?
未知错误
- 是?
- 否?
kubectl logs <pod-name>,可以查看该应用程序的日志详情- 是?解决应用程序日志中的问题
- 否?看下是容器生存周期时间设置太短了吗?
- 是?
kubectl logs <pod-name> --previous,输出pod中曾经运行过,但目前已终止的容器的日志,判断程序情况 - 否?
kubectl describe pod <pod-name>,Pod状态为ImagePullBackOff(镜像拉取失败)状态吗?- 是?可以先看下拉取镜像的名称是否正确?
- 是?看下镜像的标签是否正确?
- 否?修改为正确镜像的名称
- 是?看下是否从私有镜像仓库里面拉取镜像?
- 否?修改为正确的标签
- 是?配置特定的私有仓库秘钥拉取私有仓库镜像
- 否?问题可能出在CRI(容器运行时接口)或Kubelet程序
- 否?Pod状态为CrashLoopBackOff(崩溃循环状态)吗?
- 是?是否检查了日志并修复了崩溃的容器应用程序?
- 是?是否忘记了Dockerfile中的CMD指令?
- 是?修改Dockerfile文件
- 否?观察下Pod是否经常重启? 在Running和CrashLoopBackoff之间循环?
- 是?修改一下livenessprobe(存活探针)
- 否?未知状态
- 否?修复崩溃的应用
- 是?是否忘记了Dockerfile中的CMD指令?
- 否?Pod状态为RunContainerError(运行容器错误)吗?
- 是?这个问题可能和挂载volume(卷)有关
- 否?查询下是否容器溢出问题
- 是?是否检查了日志并修复了崩溃的容器应用程序?
- 是?可以先看下拉取镜像的名称是否正确?
- 是?
- 是?Pod准备好了吗?
- 是?
流程性思维导图
下图可帮助你调试Kubernetes Deployment。点击此处(https://kuboard.cn/statics/learning/troubleshooting-kubernetes.pdf)获取该图的PDF版本

Kubernetes中Deployment部署故障排除的更多相关文章
- # k8s-jenkins在kubernetes中持续部署
k8s-jenkins在kubernetes中持续部署 1. k8s-jenkins在kubernetes中持续部署 Kubernetes Continuous Deploy插件:用于将资源配置部署到 ...
- 利用Ring Buffer在SQL Server 2008中进行连接故障排除
原文:利用Ring Buffer在SQL Server 2008中进行连接故障排除 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring ...
- 教你在Kubernetes中快速部署ES集群
摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...
- 【转】kubernetes 中 deployment 支持哪些键值
这个比较全,可以参考 ================= https://www.addops.cn/post/kubernetes-deployment-fileds.html ========== ...
- Sentry实时应用错误跟踪系统在Kubernetes中私有化部署
应用错误跟踪系统:对软件系统运行过程中产生的错误日志进行收集从而实现监控告警. 虽然软件错误❌是不可避免的,但是可以降低错误数. 提高对错误的治理能力能让错误带来的损失降到最低
- Kubernetes Deployment故障排除图解指南
个人K8s还在学习中,相关博客还没有写,准备学第二遍再开始学,发现这篇文章挺好,先转载一下. 原创: 白明的赞赏账户 下面是一个示意图,可帮助你调试Kubernetes Deployment(你可以 ...
- 分步骤讲解Deployment故障排除
背景假设 当你希望在Kubernetes中部署应用程序时,你通常会定义三个组件: 一个Deployment - 这是一份用于创建你的应用程序的Pod副本的"食谱": 一个Servi ...
- 在Kubernetes中部署GlusterFS+Heketi
目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...
- 如何将云原生工作负载映射到 Kubernetes 中的控制器
作者:Janakiram MSV 译者:殷龙飞 原文地址:https://thenewstack.io/how-to-map-cloud-native-workloads-to-kubernetes- ...
随机推荐
- 如何使用 iMovie 去除视频里面的声音
如何使用 iMovie 去除视频里面的声音 视频去除背景音 iMovie https://www.apple.com/imovie/ https://books.apple.com/book/id14 ...
- Web 前端必备的各种跨域方式汇总
Web 前端必备的各种跨域方式汇总 跨域方式汇总 同源策略 协议相同 + 域名相同 + 端口相同 https://www.xgqfrms.xyz/index.html https://www.xgqf ...
- taro & Error: spawn taro ENOENT
taro & Error: spawn taro ENOENT https://stackoverflow.com/questions/27688804/how-do-i-debug-erro ...
- 用Qt写了个将视频设置为壁纸的软件
软件功能很简单,使用时占用的资源和播放的视频有关: 依赖于FFplay,Github源码 效果图:
- java荷兰国旗问题
荷兰国旗包含三种颜色:红.白.蓝. 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列.它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素.等 ...
- 从HashMap面试聊聊互联网内卷
微信公众号:大黄奔跑 关注我,可了解更多有趣的面试相关问题. 写在之前 毫无疑问,回想2020年有什么词出现在眼前最多的,无疑是"996"和"内卷",从马老师的 ...
- wxWidgets源码分析(8) - MVC架构
目录 MVC架构 wxDocManager文档管理器 模板类创建文档对象 视图对象的创建 创建顺序 框架菜单命令的执行过程 wxDocParentFrame菜单入口 wxDocManager类的处理 ...
- 看完我的笔记不懂也会懂----less
目录 Less学习 语法篇 注释 变量 映射(Maps) @规则嵌套和冒泡 less中的嵌套规则 less中的混合 less的运算 extend延伸/继承 less忽略编译(转义) 导入(Import ...
- 如何读写拥有命名空间xmlns 属性的Xml文件(C#实现)
我们在进行C#项目Xml读写开发时经常遇到一些读写问题,今天我要介绍的是遇到多个命名空间xmlns属性时如何读写此类文件. 比如下面这个Xml文件: <?xml version="1. ...
- 洛谷 P4747 [CERC2017]Intrinsic Interval 线段树维护连续区间
题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好 ...