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- ...
随机推荐
- free online markdown editor
free online markdown editor markdown https://blog.csdn.net/xgqfrms/article/details/50129317 In-brows ...
- Flutter 设置input边框
example 1 import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp ext ...
- betterscroll上拉加载
mounted(){ var that=this; setTimeout(()=>{ let scroll = new BScroll(document.getElementById('wrap ...
- 「NGK每日快讯」2021.2.11日NGK公链第100期官方快讯!
- 星盟全球投资副总裁DENIEL SOIBIM:如何激发创造力
丹尼尔·索比姆毕业于加州理工大学,2005年通过创建投资俱乐部对潜力公司进行天使投资,获得了美国Blue Run高层的重视,任营收专家评估师,为Blue Run项目提案做风险评估,09年与泰勒·亚当斯 ...
- APC体育全力打造高端体育服务品牌
近年来,a private company(以下简称APC体育,公司编号:08703733)坚持以人为本,努力满足各个行业运动达人多元化及多层次的体育需求,在倡导体育公共健康服务和水平的同时,还向运动 ...
- 【SpringMVC】 4.2 异常处理
SpringMVC学习记录 注意:以下内容是学习 北京动力节点 的SpringMVC视频后所记录的笔记.源码以及个人的理解等,记录下来仅供学习 第4章 SpringMVC 核心技术 4.2异常处理 ...
- 鸿蒙js开发7 鸿蒙分组列表和弹出menu菜单
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.鸿蒙视图效果2.js业务数据和事件3.页面视图代码4.跳转页面后的视图层5.js业务逻辑部分6.<鸿蒙js开发& ...
- Nifi组件脚本开发—ExecuteScript 使用指南(三)
上一篇:Nifi组件脚本开发-ExecuteScript 使用指南(二) Part 3 - 高级特征 本系列的前两篇文章涵盖了 flow file 的基本操作, 如读写属性和内容, 以及使用" ...
- 微信小程序:如何删除所有的console.log?
使用vscode正则匹配,手动去除 1.用vscode打开微信小程序项目 2.Edit-----replace in Files 1. console.log()加了分号 console\.log\( ...