Kubernetes Error 手册(上)

简介: Kubernetes Error 手册(上)

曾经想要一根魔杖来解决你所有的Kubernetes问题吗?你有没有想过有一本终极指南,可以汇总最常见的Kubernetes问题,并为每个问题提供快速解决方案?你遇到的每一个Kubernetes错误是否都会让你在一个可怕而曲折的兔子洞里越陷越深?


如果您对这些问题中的任何一个或全部回答“是”,好了,不用再看了,我们正好有适合你的东西。


我们已经完成了Kubernetes故障排除的繁重工作,因此当您真正需要解决您的Kubernetes生产问题时,您不必浪费时间搜索博客帖子和论坛来获得您需要的答案。


Kubernetes Error # 1 :

CrashLoopBackOff


那是什么?

CrashLoopBackoff意味着您有一个POD启动,崩溃,再次启动,然后再次崩溃。


可能是什么问题?

不幸的是,CrashLoopBackoff并不是一个简单的问题解决方案。实际上,有几个主要原因可能导致您的Kubernetes部署抛出此错误。其中包括:


Option 1: Out of memory.

发生这种情况最常见的原因之一是 POD 内存不足

每个pod都有一个指定的内存空间,当它试图消耗比分配给它的内存更多的内存时,pod 将继续崩溃。如果分配给pod的内存少于它实际运行所需的内存,或者如果pod中存在错误,并且它在运行状态下持续消耗所有内存空间,则可能会发生这种情况。


Option 2: Probe failure.

另一个常见原因是探针故障。kubelet使用活性、就绪和启动探测来保持对容器的检查。如果活动或启动探测失败,容器将在该点重新启动。


Option 3: hostPort usage.

这种情况不太常见,但如果您确实使用了主机端口,这可能是CrashLoopBackoff错误的原因。当您将Pod绑定到主机端口时,它会限制Pod可以计划的位置数量,因为每个<hostIP, hostPort, protocol>组合必须唯一。


Option 4: Application failure.

容器中的应用程序本身由于某些错误而不断崩溃,这可能会导致POD反复崩溃。


解决问题要采取的步骤

从运行开始:

那么你可能应该开始问以下问题:

  • 最近是否更改了其中一个探测器配置?
  • 是否部署过此代码?
  • 刚才还有其他代码更改吗?

这些问题将帮助您查找、调试和修复错误。


如果这不能帮助您解决问题,请使用相同的命令:

首先要弄清楚您是否在使用主机端口。根据Kubernetes官方文档最佳实践指南,如果你确实在使用它,你应该考虑使用 NodePort,这可能是解决问题的最快方法。


如果这两种方法都不能解决问题,您应该在这一点上开始更深入地挖掘,并查看日志以查看是否存在应用程序级错误。

首先从提取应用程序日志本身开始。当Pod本身崩溃时,运行以下命令将显示前一个Pod的日志:

应用程序在任何时候都可能因为各种原因而失败,而且由于Kubernetes不是应用程序感知的,它会抛出一条通用的错误消息,这通常很难解决。要快速解决这个问题,最好的办法是在日志中搜索应用程序级错误。错误消息很可能出现在日志的最后几行中。找到应用程序错误后,您将能够调试并修复它。


Kubernetes Error #2:

lmagePullBackoff


那是什么?

当Pod启动因无法提取映像而失败时,会发生lMagePullBackoff错误。在此用例中,“回退”意味着Kubernetes将继续尝试并提取映像,回退延迟会增加。


可能是什么问题?

与CrashLoopBackoff一样,它的不太流行的兄弟lmagepullbackoff也可以映射到几个不同的潜在问题。


Option 1: Manifest not found.

这表明特定版本的Docker存储库不可用。确认映像是否可用,如果可用,请相应地进行更新。


Option 2: Repository does not exist.

您无法提取映像,因为您未指定凭据或您的凭据不正确。


Option 3: Authorization failed.

您无法删除映像,因为您没有指定凭据或您的凭据不正确。


解决问题要采取的步骤

通过运行以下程序来收集信息,以确定三个问题中的哪一个是根本原因:

首先看一下结果中的事件部分。扫描错误的结果,例如找不到Nanifest未找到存储库可能需要授权,这是ImagePullbackoff造成的一些最常见的错误,可以通过一些简单的方法来解决。在本地提取映像,因为您的K8之间可能存在网络问题节点和注册表,或任何其他潜在问题,如丢失命名空间,甚至是不正确的密码。


Kubernetes Error #3:

ErrlmagePull


那是什么?

ErrlmagePull错误发生在Pod启动因无法提取映像而失败时,与上一个错误类似,但原因不同。


可能是什么问题?

此错误通常对应于以下三种最常见的情况:


Option 1: Manifest not found.

这表明特定版本的Docker存储库不可用。确认映像是否可用,如果可用,请相应地进行更新。


Option 2: Repository does not exist.

这表明您指定的映像存储库在您的集群所指向的Docker注册表中不存在。


Option 3: Authorization failed.

您无法提取映像,因为您没有指定凭据或者您的凭据不正确。


解决问题要采取的步骤

所以你可能会觉得你看到的是双重的,但有时是相似的。问题或错误可能会在复杂的、可无限扩展的像Kubernetes这样的系统。

您可以遵循在ImagePullBackoff中执行的相同步骤,可能会解决这个问题。


Kubernetes Error #4: CreateContainerConfigError


那是什么?

当Kubernetes试图在pod中创建容器,但在容器进入运行状态之前失败时,通常会出现此错误。


可能是什么问题?


Option 1: Missing ConfigMap.

ConfigMaps是Kubernetes对象,允许您存储配置以供其他对象使用。ConfigMap是字符串的键值对的字典。ConfigMap有助于存储和共享非敏感、未加密的配置数据。这使您可以将广泛的特定于环境的配置从容器映像中分离出来,从而使您的应用程序易于移植。如果Kubernetes无法创建或找到ConfigMap,部署将失败。


Option 2: Missing Secret.

Kubernetes Secret是存储敏感数据(如密码、OAuth令牌和SSH密钥等)的安全对象。使用机密意味着您不需要在应用程序代码中包含机密数据。Secrets类似于Con Figma PS,但专门用于保存机密数据。如果Kubernetes无法创建或找到机密,则部署将失败。


解决问题要采取的步骤

运行:

检查是否出现错误,例如未找到secret或未找到configmap

然后,运行:

并检查相关资源是否存在。如果没有,请创建它。这也可能是configmap/secret的内容的问题,这意味着资源存在于正确的名称空间中,但其内容存在问题,例如configmap中缺少密钥。在这种情况下,您应该更新configmap/secret并重新启动POD。这么简单。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
27天前
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
13 0
|
2月前
|
Kubernetes 容器
使用kubeadm部署k8s报错:The kubelet is not running或者level=error msg="Handler for POST /v1.43/images/create returned error: Head \"https://us-west2-dock
使用kubeadm部署k8s报错:The kubelet is not running或者level=error msg="Handler for POST /v1.43/images/create returned error: Head \"https://us-west2-dock
|
8月前
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——特殊实例
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——特殊实例自制脑图
355 4
|
8月前
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——创建ECI Pot
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot——创建ECI Pot自制脑图
305 1
|
8月前
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——ECI Pot自制脑图
256 1
|
3月前
|
Kubernetes 开发工具 容器
【kubernetes】解决k8s1.28.4:NotReady message:Network plugin returns error: cni plugin not initia...
【kubernetes】解决k8s1.28.4:NotReady message:Network plugin returns error: cni plugin not initia...
171 0
|
4月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|rancher-2.6.4安装部署简明手册
云原生|kubernetes|rancher-2.6.4安装部署简明手册
349 0
云原生|kubernetes|rancher-2.6.4安装部署简明手册
|
4月前
|
Kubernetes Cloud Native 虚拟化
云原生|kubernetes|minikube的部署安装完全手册(修订版)
云原生|kubernetes|minikube的部署安装完全手册(修订版)
595 1
|
4月前
|
Kubernetes 容器
k8s-error execution phase upload-config/kubelet: Error writing Crisocket...
k8s-error execution phase upload-config/kubelet: Error writing Crisocket...
37 0
|
6月前
|
Kubernetes Java 微服务
再次登顶GitHub!阿里内网首次自曝炫彩版微服务响应式与K8S手册
“物之所至者,志亦至焉;志之所至者,礼亦至焉;礼之所至者,乐亦至焉:乐之所至者,哀亦至焉。”