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- ...
随机推荐
- nest cli bug
nest cli bug Error: Collection "@nestjs/schematics" cannot be resolved. Error: Collection ...
- vuex & redux
vuex & redux https://vuex.vuejs.org/ https://github.com/xgqfrms/VAIO/ https://scrimba.com/playli ...
- js 实现简单的parseInt和parseFloat
function myParseInt(str: string): number { let result = NaN; for (let i = 0; i < str.length; i++) ...
- PM2 in depth
PM2 in depth ecosystem.config.js module.exports = { apps : [{ name: "app", script: ". ...
- 新手如何通过SPC算力生态获得多重收益?
DeFi市场在去年的一波又一波热潮之后,在今年余温有些褪去.而资本市场也将目光从DeFi市场中转移开来,他们将目光对准了新的市场,即算力市场.算力,其实从区块链技术在大范围普及以来,就是一个常见的话题 ...
- 2. Vue语法--插值操作&动态绑定属性 详解
目录 1. 设置vue模板 2. vue语法--插值操作 3. 动态绑定属性--v-bind 一. 设置vue模板 我们经常新建一个vue项目的时候, 会写如下的一段代码 <!DOCTYPE h ...
- 02.描述统计 (descriptive statistics)
1.数据的可靠性和有效性 2.利用图表对数据进行可视化 2.1分类变量的可视化 2.11无序分类变量 2.12有序分类变量的可视化 2.1数值变量的可视化 数据的分布
- (1)MySQL进阶篇在linux环境下安装
1.概述 对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql.缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数.如果用户即不想安装最简单却不够 ...
- Redis Lua 脚本使用
本文转载自Redis Lua 脚本使用 Lua 简介 Lua语言提供了如下几种数据类型:booleans(布尔).numbers(数值).strings(字符串).tables(表格). 下面是一些 ...
- 开工大吉:TcaplusDB将持续为您提供可靠的数据服务
开工大吉 新的一年 新的开始 我们也带着新的心意 向您奔赴而来 在此,TcaplusDB祝广大客户朋友,开工大吉,2021,我们将一如既往地守护您的数据,继续做您最坚实的后盾. 作为专为游 ...