<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kubernetes on Ricardo</title>
        <link>https://sona201.github.io/tags/kubernetes/</link>
        <description>Recent content in kubernetes on Ricardo</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <lastBuildDate>Sat, 03 Oct 2026 22:00:00 +0800</lastBuildDate><atom:link href="https://sona201.github.io/tags/kubernetes/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Kubernetes Pod 异常排查</title>
        <link>https://sona201.github.io/posts/kubernetes-pod-%E5%BC%82%E5%B8%B8%E6%8E%92%E6%9F%A5/</link>
        <pubDate>Sat, 03 Oct 2026 22:00:00 +0800</pubDate>
        
        <guid>https://sona201.github.io/posts/kubernetes-pod-%E5%BC%82%E5%B8%B8%E6%8E%92%E6%9F%A5/</guid>
        <description>&lt;h1 id=&#34;pod异常问题排查&#34;&gt;Pod异常问题排查&lt;/h1&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/pod-troubleshooting-1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;阿里云原文链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;源码
&lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes/kubernetes/blob/ad9b60e2c9ddb21e8b00cabbe27e639638a0ea88/pkg/apis/core/types.go#L2711&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/kubernetes/kubernetes/blob/ad9b60e2c9ddb21e8b00cabbe27e639638a0ea88/pkg/apis/core/types.go#L2711&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes/kubernetes/blob/022d50fe3a1bdf2386395da7c266fede0c110040/pkg/kubelet/images/types.go#L29&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/kubernetes/kubernetes/blob/022d50fe3a1bdf2386395da7c266fede0c110040/pkg/kubelet/images/types.go#L29&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;本文目录&#34;&gt;本文目录&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;类别&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;诊断流程&lt;/td&gt;
&lt;td&gt;诊断流程&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;常见排查方法&lt;/td&gt;
&lt;td&gt;检查Pod的状态、检查Pod的详情、检查Pod的配置、检查Pod的事件、检查Pod的日志、检查Pod的监控、使用终端进入容器、Pod故障诊断&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;常见问题及解决方案&lt;/td&gt;
&lt;td&gt;常见的Pod异常状态及处理方式、Pod OOM异常问题处理&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;诊断流程&#34;&gt;诊断流程&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://sona201.github.io/images/k8s-pod-troubleshooting-process.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;pod_troubleshooting_process&#34;
	
	
&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;查看Pod是否处于异常状态，具体操作，请参见检查Pod的状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;a. 如果Pod状态异常，可通过查看Pod的事件、Pod的日志、Pod的配置等信息确定异常原因。具体操作，请参见常见排查方法。关于Pod异常&lt;/li&gt;
&lt;li&gt;b. 状态及处理方式，请参见常见的Pod异常状态及处理方式。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;如果Pod状态为Running但未正常工作，请参见Pod状态为Running但没正常工作。&lt;/li&gt;
&lt;li&gt;若确认是Pod OOM异常问题，请参见Pod OOM异常问题处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果问题仍未解决，请提交工单。&lt;/p&gt;
&lt;h2 id=&#34;常见的pod异常状态及处理方式&#34;&gt;常见的Pod异常状态及处理方式&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pod状态&lt;/th&gt;
&lt;th&gt;Pod含义&lt;/th&gt;
&lt;th&gt;解决方案&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pending&lt;/td&gt;
&lt;td&gt;Pod未被调度到节点上。&lt;/td&gt;
&lt;td&gt;Pod状态为Pending&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Init:N/M&lt;/td&gt;
&lt;td&gt;Pod包含M个Init容器，其中N个已经启动完成。&lt;/td&gt;
&lt;td&gt;Pod状态为Init:N/M（Init:Error和Init:CrashLoopBackOff）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Init:Error&lt;/td&gt;
&lt;td&gt;Init容器已启动失败。&lt;/td&gt;
&lt;td&gt;Pod状态为Init:N/M（Init:Error和Init:CrashLoopBackOff）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Init:CrashLoopBackOff&lt;/td&gt;
&lt;td&gt;Init容器启动失败，反复重启。&lt;/td&gt;
&lt;td&gt;Pod状态为Init:N/M（Init:Error和Init:CrashLoopBackOff）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Completed&lt;/td&gt;
&lt;td&gt;Pod的启动命令已执行完毕。&lt;/td&gt;
&lt;td&gt;Pod状态为Completed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CrashLoopBackOff&lt;/td&gt;
&lt;td&gt;Pod启动失败，反复重启。&lt;/td&gt;
&lt;td&gt;Pod状态为CrashLoopBackOff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ImagePullBackOff&lt;/td&gt;
&lt;td&gt;Pod镜像拉取失败。&lt;/td&gt;
&lt;td&gt;Pod状态为ImagePullBackOff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Running&lt;/td&gt;
&lt;td&gt;Pod运行正常。&lt;/td&gt;
&lt;td&gt;Pod Running但是未正常工作。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod状态为Running但没正常工作&lt;/td&gt;
&lt;td&gt;Terminating&lt;/td&gt;
&lt;td&gt;Pod正在关闭中。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod状态为Terminating&lt;/td&gt;
&lt;td&gt;Evicted&lt;/td&gt;
&lt;td&gt;Pod被驱逐。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;常见排查方法&#34;&gt;常见排查方法&lt;/h2&gt;
&lt;h3 id=&#34;检查pod的状态&#34;&gt;检查Pod的状态&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面左上角选择Pod所在的命名空间，查看Pod状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;若状态为Running，说明Pod运行正常。&lt;/li&gt;
&lt;li&gt;若状态不为Running，说明Pod状态异常，请参见常见的Pod异常状态及处理方式进行处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;检查pod的详情&#34;&gt;检查Pod的详情&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面中，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面左上角选择Pod所在的命名空间，然后单击目标Pod名称或者目标Pod右侧操作列下的详情，查看Pod的名称、镜像、Pod IP、所在节点等详细信息。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;检查pod的配置&#34;&gt;检查Pod的配置&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面左上角选择Pod所在的命名空间，然后单击目标Pod名称或者目标Pod右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在Pod详情页面右上角单击编辑，查看Pod的YAML文件和详细配置。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;检查pod的事件&#34;&gt;检查Pod的事件&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面左上角选择Pod所在的命名空间，然后单击目标Pod名称或者目标Pod右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在Pod详情页面下方单击事件页签，查看Pod的事件。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: Kubernetes默认保留最近1小时的事件，若需保存更长时间的事件，请参见创建并使用K8s事件中心。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;检查pod的日志&#34;&gt;检查Pod的日志&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面左上角选择Pod所在的命名空间，然后单击目标Pod名称或者目标Pod右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在Pod详情页面下方单击日志页签，查看Pod的日志。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: 阿里云ACK集群集成了日志服务，您可在创建集群时启用日志服务，快速采集集群的容器日志，包括容器的标准输出及容器内的文本文件。更多信息，请参见通过日志服务采集Kubernetes容器日志。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;检查pod的监控&#34;&gt;检查Pod的监控&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏中，选择运维管理 &amp;gt; Prometheus监控 。&lt;/li&gt;
&lt;li&gt;在Prometheus监控页面，单击集群监控概览页签，选择查看Pod的CPU、内存、网络I/O等监控大盘。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;使用终端进入容器&#34;&gt;使用终端进入容器&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面，单击目标容器组右侧操作列下的终端。&lt;br&gt;
可通过终端进入容器，在容器内查看本地文件等信息。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;pod故障诊断&#34;&gt;Pod故障诊断&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;登录容器服务管理控制台。&lt;/li&gt;
&lt;li&gt;在控制台左侧导航栏，单击集群。&lt;/li&gt;
&lt;li&gt;在集群列表页面，单击目标集群名称或者目标集群右侧操作列下的详情。&lt;/li&gt;
&lt;li&gt;在集群管理页左侧导航栏，选择工作负载 &amp;gt; 容器组。&lt;/li&gt;
&lt;li&gt;在容器组页面，单击目标容器组右侧操作列下的诊断。&lt;br&gt;
对该容器组进行故障诊断，根据诊断结果解决问题。更多信息，请参见使用集群诊断。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id=&#34;pod状态为pending&#34;&gt;Pod状态为Pending&lt;/h3&gt;
&lt;h4 id=&#34;问题原因&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;若Pod停留在Pending状态，说明该Pod不能被调度到某一个节点上。通常是由于资源依赖、资源不足、该Pod使用了hostPort、污点和容忍等原因导致集群中缺乏需要的资源。&lt;/p&gt;
&lt;h4 id=&#34;问题现象&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod的状态为Pending。&lt;/p&gt;
&lt;h4 id=&#34;解决方案&#34;&gt;解决方案&lt;/h4&gt;
&lt;p&gt;查看Pod的事件，根据事件描述，定位Pod不能被调度到节点的原因。主要原因有以下几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;资源依赖&#34;&gt;资源依赖&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;创建Pod时，需要依赖于集群中ConfigMap、PVC等资源。例如，Pod添加存储卷声明前，存储卷声明需要先与存储卷绑定。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;资源不足&#34;&gt;资源不足&lt;/h4&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;a. 在集群信息页面，选择节点管理 &amp;gt; 节点，查看容器组、CPU、内存的使用情况，确定集群的资源使用率。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: 某个节点实际使用的CPU、内存资源非常低，新加入一个Pod时，如果会导致实际使用的资源超过该节点最大可供使用的资源，则调度程序不会将该Pod分配到该节点。这样可避免在日常的流量高峰时段，节点上出现资源短缺的情况。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;b. 若集群中的CPU或内存都已经耗尽，可参考如下方法处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;删除或减少不必要的Pod。具体操作，请参见管理容器组（Pod）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;根据自身业务情况，调整Pod的资源配置。具体操作，请参见设置容器的CPU和内存资源上下限。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;在集群中添加新的节点。具体操作，请参见创建节点池。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;为节点进行升配。具体操作，请参见升配Worker节点的资源。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4 id=&#34;该pod使用了hostport&#34;&gt;该Pod使用了hostPort&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果您使用了hostPort，那么Deployment或ReplicationController中Replicas值不能超过集群中的节点数，因为每个实例的任意端口只有一个。如果该端口被其他应用占用，将导致Pod调度失败。因此建议您不要使用hostPort，您可以使用Service访问Pod，更多信息，请参见Service。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;污点和容忍&#34;&gt;污点和容忍&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当您在Pod的事件中看到Taints或Tolerations时，说明是由于污点导致，您可以删除污点或者给Pod设置容忍。更多信息，请参见管理节点污点、创建无状态工作负载Deployment和污点和容忍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为initnminiterror和initcrashloopbackoff&#34;&gt;Pod状态为Init:N/M（Init:Error和Init:CrashLoopBackOff）&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-1&#34;&gt;问题原因&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;若Pod停留在Init:N/M状态，说明该Pod包含M个Init容器，其中N个已经启动完成，但仍有M-N个Init容器未启动成功。&lt;/li&gt;
&lt;li&gt;若Pod停留在Init:Error状态，说明Pod中的Init容器启动失败。&lt;/li&gt;
&lt;li&gt;若Pod停留在Init:CrashLoopBackOff状态，说明Pod中的Init容器启动失败并处于反复重启状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;问题现象-1&#34;&gt;问题现象&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Pod的状态为Init:N/M。&lt;/li&gt;
&lt;li&gt;Pod的状态为Init:Error。&lt;/li&gt;
&lt;li&gt;Pod的状态为Init:CrashLoopBackOff。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;解决方案-1&#34;&gt;解决方案&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;查看Pod的事件，确认当前Pod中未启动的Init容器是否存在异常。具体操作，请参见检查Pod的事件。&lt;/li&gt;
&lt;li&gt;查看Pod中未启动的Init容器的日志，通过日志内容排查问题。具体操作，请参见检查Pod的日志。&lt;/li&gt;
&lt;li&gt;查看Pod的配置，确认未启动的Init容器配置是否正常。具体操作，请参见检查Pod的配置。关于Init容器的更多信息，请参见调试Init容器。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为imagepullbackoff&#34;&gt;Pod状态为ImagePullBackOff&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-2&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;若Pod停留在ImagePullBackOff状态，说明此Pod已被调度到某个节点，但拉取镜像失败。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-2&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod的状态为ImagePullBackOff。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-2&#34;&gt;解决方案&lt;/h4&gt;
&lt;p&gt;通过查看该Pod的事件描述，查看具体拉取失败的镜像名称。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;确认容器镜像名称是否正确。&lt;/li&gt;
&lt;li&gt;登录到Pod所在的节点，执行docker pull [$Image]命令，查看是否能正常抓取容器镜像。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: [$Image]为容器镜像的名称。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;若镜像拉取失败，请参见docker pull失败解决。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;如果您使用的是私有镜像仓库，请参见使用私有镜像仓库创建应用解决。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为crashloopbackoff&#34;&gt;Pod状态为CrashLoopBackOff&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-3&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;若Pod停留在CrashLoopBackOff状态，说明容器中应用程序有问题。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-3&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod的状态为CrashLoopBackOff。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-3&#34;&gt;解决方案&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看Pod的事件，确认当前Pod是否存在异常。具体操作，请参见检查Pod的事件。&lt;/li&gt;
&lt;li&gt;查看Pod的日志，通过日志内容排查问题。具体操作，请参见检查Pod的日志。&lt;/li&gt;
&lt;li&gt;查看Pod的配置，确认容器中的健康检查配置是否正常。具体操作，请参见检查Pod的配置。关于Pod健康检查的更多信息，请参见配置存活、就绪和启动探测器。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为completed&#34;&gt;Pod状态为Completed&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-4&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;若Pod出现Completed状态，说明容器中的启动命令已执行完毕，容器中的所有进程都已退出。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-4&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod的状态为Completed。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-4&#34;&gt;解决方案&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看Pod的配置，确定Pod中容器的启动命令。具体操作，请参见检查Pod的配置。&lt;/li&gt;
&lt;li&gt;查看Pod的日志，通过日志内容排查问题。具体操作，请参见检查Pod的日志。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为running但没正常工作&#34;&gt;Pod状态为Running但没正常工作&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-5&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;部署使用的YAML文件有问题。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-5&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod状态为Running但没正常工作。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-5&#34;&gt;解决方案&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看Pod的配置，确定Pod中容器的配置是否符合预期。具体操作，请参见检查Pod的配置。&lt;/li&gt;
&lt;li&gt;使用以下方法，排查环境变量中的某一个Key是否存在拼写错误。&lt;br&gt;
以command拼写成commnd为例，说明拼写问题排查方法。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: 创建Pod时，环境变量中的某一个Key拼写错误的问题会被集群忽略，如Command拼写为Commnd，您仍能够使用该YAML文件创建资源。但容器运行时，不会执行有拼写问题的YAML文件，而是执行镜像中的默认命令。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;a. 在执行 &lt;code&gt;kubectl apply -f&lt;/code&gt; 命令前为其添加 &lt;code&gt;--validate&lt;/code&gt; ，然后执行 &lt;code&gt;kubectl apply --validate -f XXX.yaml&lt;/code&gt; 命令。&lt;br&gt;
如果您将 &lt;code&gt;command&lt;/code&gt; 拼写成 &lt;code&gt;commnd&lt;/code&gt; ，将看到错误信息 &lt;code&gt;XXX] unknown field: commnd XXX] this may be a false alarm, see https://gXXXb.XXX/6842pods/test&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;b. 执行以下命令，将输出结果的pod.yaml文件与您创建Pod使用的文件进行对比。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl get pods &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Pod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; -o yaml &amp;gt; pod.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;说明: [$Pod]为异常Pod的名称，您可以通过kubectl get pods命令查看。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;pod.yaml文件比您创建Pod所使用的文件多几行，说明已创建的Pod符合预期。&lt;/li&gt;
&lt;li&gt;如果您创建Pod所使用文件里的代码行在pod.yaml文件中没有，说明您创建Pod使用的文件存在拼写问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;查看Pod的日志，通过日志内容排查问题。具体操作，请参见检查Pod的日志。&lt;/li&gt;
&lt;li&gt;可通过终端进入容器查看容器内的本地文件是否符合预期。具体操作，请参见使用终端进入容器。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod状态为terminating&#34;&gt;Pod状态为Terminating&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-6&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;若Pod的状态为Terminating，说明此Pod正处于关闭状态。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-6&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod状态为Terminating。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-6&#34;&gt;解决方案&lt;/h4&gt;
&lt;p&gt;Pod停留在Terminating状态一段时间后会被自动删除。若Pod一直停留在Terminating状态，可执行如下命令强制删除：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl delete pod &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Pod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; -n &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; --grace-period&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; --force
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;pod状态为evicted&#34;&gt;Pod状态为Evicted&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-7&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;当节点的内存、磁盘空间、文件系统的inode和操作系统可分配的PID等资源中的一个或者多个达到特定的消耗水平，就会引发kubelet主动地驱逐节点上一个或者多个Pod，以回收节点资源。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-7&#34;&gt;问题现象&lt;/h4&gt;
&lt;p&gt;Pod的状态为Evicted。&lt;/p&gt;
&lt;h4 id=&#34;解决方案-7&#34;&gt;解决方案&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;执行以下命令，查看Pod的status.message字段，来确定Pod被驱逐的原因。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl  get pod &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Pod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; -o yaml -n &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;预期输出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;status:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    message: &lt;span class=&#34;s1&#34;&gt;&amp;#39;Pod the node had condition: [DiskPressure].&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    phase: Failed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    reason: Evicted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;通过上述 &lt;code&gt;status.message&lt;/code&gt; 字段，可以判断当前Pod是因为节点磁盘压力 (DiskPressure) 被驱逐。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说明: 注意这里仅以磁盘压力驱逐为例，其它例如内存压力（MemoryPressure）和PID压力（PIDPressure）等也会以类似的方式展示。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;执行以下命令，删除被驱逐的Pod。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl get pods -n &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep Evicted &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs kubectl delete pod -n &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;以下汇总如何避免pod被驱逐的方法&#34;&gt;以下汇总如何避免Pod被驱逐的方法：&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;内存压力：&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;根据自身业务情况，调整Pod的资源配置。具体操作，请参见设置容器的CPU和内存资源上下限。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;为节点进行升配。具体操作，请参见升配Worker节点的资源。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;磁盘压力：&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;定时清理节点上的业务Pod日志，避免磁盘被日志打满。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;为节点进行磁盘扩容。具体操作，请参见步骤一：扩容云盘容量。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PID压力：&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;根据自身业务情况，调整Pod的资源配置，具体操作，请参见进程ID约束与预留。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;pod-oom异常问题处理&#34;&gt;Pod OOM异常问题处理&lt;/h2&gt;
&lt;h4 id=&#34;问题原因-8&#34;&gt;问题原因&lt;/h4&gt;
&lt;p&gt;当集群中的容器使用超过其限制的内存，容器可能会被终止，触发OOM（Out Of Memory）事件，导致容器异常退出。关于OOM事件，请参见为容器和Pod分配内存资源。&lt;/p&gt;
&lt;h4 id=&#34;问题现象-8&#34;&gt;问题现象&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;若被终止的进程为容器的阻塞进程，可能导致容器异常重启。&lt;/li&gt;
&lt;li&gt;若出现OOM异常问题，登录容器服务管理控制台，在Pod详情页面单击事件页签可看到OOM事件pod was OOM killed。具体操作，请参见检查Pod的事件。&lt;/li&gt;
&lt;li&gt;若集群配置了集群容器副本异常报警，则OOM事件出现时可收到相关报警。关于配置报警，请参见容器服务报警管理。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;解决方案-8&#34;&gt;解决方案&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;查看发生OOM异常的Pod所在的节点。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;命令行方式查看：执行以下命令，查看容器信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kubectl  get pod &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$Pod&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; -o wide -n &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;预期输出：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;NAME        READY   STATUS    RESTARTS   AGE   IP            NODE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pod_name    1/1     Running   0          25h   172.20.6.53   cn-hangzhou.192.168.0.198
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;控制台方式查看&lt;/strong&gt;：查看Pod详情下的节点信息，请参见检查Pod的详情。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;登录Pod所在的Node，查看内核日志/var/log/message。在日志中查询关键字out of memory，确认具体被OOM终止的进程。如果该进程是容器的阻塞进程，OOM终止后容器会重启。&lt;/li&gt;
&lt;li&gt;通过Pod内存监控查看内存增长曲线，确定异常出现时间。具体操作，请参见检查Pod的监控。&lt;/li&gt;
&lt;li&gt;根据监控、内存增长时间点、日志、进程名等信息，排查Pod内对应进程是否存在内存泄漏。&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;若OOM是进程内存泄漏导致，请您自行排查泄露原因。&lt;/li&gt;
&lt;li&gt;若进程运行状态正常，则根据实际运行需要，适当增大Pod的内存限制，建议Pod的内存实际使用量不超过内存限制值的80%。具体操作，请参见设置容器的CPU和内存资源上下限。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
