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- ...
随机推荐
- ES2021 & Pipeline operator (|>) / 管道运算符 |>
ES2021 & Pipeline operator (|>) / 管道运算符 |> demo "use strict"; /** * * @author xg ...
- React useMemo
React useMemo react hooks https://reactjs.org/docs/hooks-reference.html#usememo useCallback & us ...
- Azure 信用卡扣款 1 美元 & Azure 中国客服
Azure 信用卡扣款 1 美元 & azure 中国客服 Azure 免费帐户常见问题 https://azure.microsoft.com/zh-cn/free/free-account ...
- BGV作为拥抱新时代的DeFi项目,是否有能力超越YFI?
随着今年11月DeFi蓝筹股们的集体反弹,市场变化让投资者明白,不能再死守诸如COMP和MKR的古典DeFi了,只有拥抱新时代的DeFi们才有赚钱的可能,不要和钱过不去.经过9-10月的回调,11月的 ...
- R语言学习4:函数,流程控制,数据框重塑
本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...
- RabbitMQ-RPC版主机管理程序
一.作业需求 1.可以对指定机器异步的执行多个命令 例子: 请输入操作指令>>>:run ipconfig --host 127.0.0.0 in the call tack ...
- tcp粘包情况分析
1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.在tcp长连接时,发送端发到buffer里面,接收端也有个buffe ...
- TCP/IP协议学习-1.概述
目录 TCP/IP协议概述 分层 延伸知识 FTP例子 为什么需要网络层和传输层 TCP/IP的分层 封装 分用 总结 本文主要摘抄自书籍<TCP/IP详解卷一:协议>与TCP协议相关内容 ...
- HDOJ-3001(TSP+三进制状态压缩)
Traving HDOJ-3001 这题考察的是状态压缩dp和tsp问题的改编 需要和传统tsp问题区分的事,这题每个点最多可以经过两次故状态有3种:0,1,2 这里可以模仿tsp问题的二进制压缩方法 ...
- HDOJ-1754(线段树+单点更新)
I Hate It HDOJ-1754 这道题是线段树简单的入门题,只是简单考察了线段树的基本使用,建树等操作. 这里需要注意的是输入要不使用scanf要不使用快速输入. 这里的maxs数组需要开大一 ...