Kubernetes中Deployment部署故障排除

字符型思维导图

  1. 排查pod状态(带标签):kubectl get pods,是否有等待处理的pod?

    1. 是?kubectl describe pod <pod-name>,集群资源是否已经爆满?

      1. 是?增加更多的磁盘资源
      2. 否?您是否达到ResourceQuota限制?
        1. 是?放宽ResourceQuota限制,修改pod的规格。
        2. 否?是否挂载了PersistentVolumeClaim(PVC)。
          1. 是?修复PersistentVolumeClaim(PVC)存储
          2. 否?kubectl get pods -o wide ,Pod是否已分配给节点
            1. 是?Kubelet可能存在问题,排查kubelet日志和状态
            2. 否?Scheduler可能存储问题,排查Scheduler进程状态和日志
    2. 否?Pod正在Running吗?
      1. 是?Pod准备好了吗?

        1. 是?kubectl port-forward <pod-name> 8080:<pod-port>,是否可以访问该应用程序吗?

          1. 是?Pod是运行正常的。可以检查一下Service应用,kubectl describe service <service-name>,检查是否可以看到Service对应的endpoints列表?

            1. 是?kubectl port-forward service/<service-name> 8080:<service-port>,现在可以访问该应用程序吗?

              1. 是?Service服务运行正常。检查kubectl describe ingress <ingress-name>,检查可以看到后端列表(backends)吗?

                1. 是?检查kubectl port-forward <ingress-pod-name> 8080:<ingress-port>,重新测试是否可以访问该应用程序吗?

                  1. 是?Ingress正常运行。该应用程序应该正在运行。 您可以尝试从公共互联网访问它看看?

                    1. 是?END检查结束.
                    2. 否?问题可能出在基础架构以及如何暴露集群端口上面(expose)
                  2. 否?这个问题特定于Ingress控制器。查阅相关Ingress文档
                2. 否?检查serviceName和servicePort是否与Service匹配?
                  1. 是?这个问题特定于Ingress控制器。查阅相关Ingress文档
                  2. 否?修改入口serviceName和servicePort问题。
              2. 否?服务上的targetPort是否与Pod中的containerPort相匹配?
                1. 是?问题可能出在Kube Proxy上。
                2. 否?修改Service服务targetPort和containerPort相同
            2. 否?检查规格选择器是否与正确的Pod标签匹配?
              1. 是?Kubelet存在问题,检查对应的进程日志。
              2. 否?修改为正确的规格选择器,使它与Pod标签匹配
          2. 否?检查容器暴露的端口是否正确并且正在监听0.0.0.0?
            1. 是?未知状态
            2. 否?检查这个容器应用,并且更正容器内端口
        2. 否?kubectl describe pod <pod-name>,检查一下准备就绪探针是否失败?
          1. 是?准备就绪探针是否失败?
          2. 否?未知错误
      2. 否?kubectl logs <pod-name>,可以查看该应用程序的日志详情
        1. 是?解决应用程序日志中的问题
        2. 否?看下是容器生存周期时间设置太短了吗?
          1. 是?kubectl logs <pod-name> --previous,输出pod中曾经运行过,但目前已终止的容器的日志,判断程序情况
          2. 否?kubectl describe pod <pod-name>,Pod状态为ImagePullBackOff(镜像拉取失败)状态吗?
            1. 是?可以先看下拉取镜像的名称是否正确?

              1. 是?看下镜像的标签是否正确?
              2. 否?修改为正确镜像的名称
                1. 是?看下是否从私有镜像仓库里面拉取镜像?
                2. 否?修改为正确的标签
                  1. 是?配置特定的私有仓库秘钥拉取私有仓库镜像
                  2. 否?问题可能出在CRI(容器运行时接口)或Kubelet程序
            2. 否?Pod状态为CrashLoopBackOff(崩溃循环状态)吗?
              1. 是?是否检查了日志并修复了崩溃的容器应用程序?

                1. 是?是否忘记了Dockerfile中的CMD指令?

                  1. 是?修改Dockerfile文件
                  2. 否?观察下Pod是否经常重启? 在Running和CrashLoopBackoff之间循环?
                    1. 是?修改一下livenessprobe(存活探针)
                    2. 否?未知状态
                2. 否?修复崩溃的应用
              2. 否?Pod状态为RunContainerError(运行容器错误)吗?
                1. 是?这个问题可能和挂载volume(卷)有关
                2. 否?查询下是否容器溢出问题

流程性思维导图

下图可帮助你调试Kubernetes Deployment。点击此处(https://kuboard.cn/statics/learning/troubleshooting-kubernetes.pdf)获取该图的PDF版本

Kubernetes中Deployment部署故障排除的更多相关文章

  1. # k8s-jenkins在kubernetes中持续部署

    k8s-jenkins在kubernetes中持续部署 1. k8s-jenkins在kubernetes中持续部署 Kubernetes Continuous Deploy插件:用于将资源配置部署到 ...

  2. 利用Ring Buffer在SQL Server 2008中进行连接故障排除

    原文:利用Ring Buffer在SQL Server 2008中进行连接故障排除 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/11/21/ring ...

  3. 教你在Kubernetes中快速部署ES集群

    摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...

  4. 【转】kubernetes 中 deployment 支持哪些键值

    这个比较全,可以参考 ================= https://www.addops.cn/post/kubernetes-deployment-fileds.html ========== ...

  5. Sentry实时应用错误跟踪系统在Kubernetes中私有化部署

    应用错误跟踪系统:对软件系统运行过程中产生的错误日志进行收集从而实现监控告警. 虽然软件错误❌是不可避免的,但是可以降低错误数. 提高对错误的治理能力能让错误带来的损失降到最低 ​

  6. Kubernetes Deployment故障排除图解指南

     个人K8s还在学习中,相关博客还没有写,准备学第二遍再开始学,发现这篇文章挺好,先转载一下. 原创: 白明的赞赏账户 下面是一个示意图,可帮助你调试Kubernetes Deployment(你可以 ...

  7. 分步骤讲解Deployment故障排除

    背景假设 当你希望在Kubernetes中部署应用程序时,你通常会定义三个组件: 一个Deployment - 这是一份用于创建你的应用程序的Pod副本的"食谱": 一个Servi ...

  8. 在Kubernetes中部署GlusterFS+Heketi

    目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...

  9. 如何将云原生工作负载映射到 Kubernetes 中的控制器

    作者:Janakiram MSV 译者:殷龙飞 原文地址:https://thenewstack.io/how-to-map-cloud-native-workloads-to-kubernetes- ...

随机推荐

  1. ES2021 & Pipeline operator (|>) / 管道运算符 |>

    ES2021 & Pipeline operator (|>) / 管道运算符 |> demo "use strict"; /** * * @author xg ...

  2. React useMemo

    React useMemo react hooks https://reactjs.org/docs/hooks-reference.html#usememo useCallback & us ...

  3. Azure 信用卡扣款 1 美元 & Azure 中国客服

    Azure 信用卡扣款 1 美元 & azure 中国客服 Azure 免费帐户常见问题 https://azure.microsoft.com/zh-cn/free/free-account ...

  4. BGV作为拥抱新时代的DeFi项目,是否有能力超越YFI?

    随着今年11月DeFi蓝筹股们的集体反弹,市场变化让投资者明白,不能再死守诸如COMP和MKR的古典DeFi了,只有拥抱新时代的DeFi们才有赚钱的可能,不要和钱过不去.经过9-10月的回调,11月的 ...

  5. R语言学习4:函数,流程控制,数据框重塑

    本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...

  6. RabbitMQ-RPC版主机管理程序

    一.作业需求 1.可以对指定机器异步的执行多个命令 例子: 请输入操作指令>>>:run ipconfig --host 127.0.0.0 in the call     tack ...

  7. tcp粘包情况分析

    1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾.在tcp长连接时,发送端发到buffer里面,接收端也有个buffe ...

  8. TCP/IP协议学习-1.概述

    目录 TCP/IP协议概述 分层 延伸知识 FTP例子 为什么需要网络层和传输层 TCP/IP的分层 封装 分用 总结 本文主要摘抄自书籍<TCP/IP详解卷一:协议>与TCP协议相关内容 ...

  9. HDOJ-3001(TSP+三进制状态压缩)

    Traving HDOJ-3001 这题考察的是状态压缩dp和tsp问题的改编 需要和传统tsp问题区分的事,这题每个点最多可以经过两次故状态有3种:0,1,2 这里可以模仿tsp问题的二进制压缩方法 ...

  10. HDOJ-1754(线段树+单点更新)

    I Hate It HDOJ-1754 这道题是线段树简单的入门题,只是简单考察了线段树的基本使用,建树等操作. 这里需要注意的是输入要不使用scanf要不使用快速输入. 这里的maxs数组需要开大一 ...