K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略

  • 常见的Pod状态
    • Pending
    • PodScheduled
    • Unschedulable
    • PodInitializing
    • ImagePullBackOff
    • Initialized
    • Running
    • Error
    • CrashLoopBackOff
    • Terminating
    • Succeeded
    • Failed
    • Evicted
    • Unknown
  • Pod的重启策略
    • 使用Always重启策略
    • 使用Never重启策略
    • 使用OnFailure重启策略(常用)

常见的Pod状态

在这里插入图片描述

Pending

发生原因:

  • Pod中的容器还没有全部创建完成。
    排查建议:检查Pod依赖的存储是否有权限挂载、镜像是否可以下载等。
  • 调度没有完成,没有任何一个节点能满足调度条件,已经创建了Pod 但是没有适合它运行的节点。
    排查建议:Pod里是否设定了 nodeName 或者 nodeSelector;是否受污点和容忍度的影响等。

PodScheduled

Pod正处于调度中,在scheduler刚开始调度的时候,还没有将Pod分配到指定的Node,在筛选出合适的节点后就会更新etcd数据,将Pod分配到指定的Node

Unschedulable

Pod不能被调度, scheduler没有匹配到合适的Node节点

PodInitializing

pod 初始化中

ImagePullBackOff

发生原因:Pod所在的Node节点下载镜像失败

Initialized

所有Pod中的初始化容器已经完成了

Running

Pod内部的容器已经被创建并且启动。

Error

发生原因:Pod 启动过程中发生了错误

CrashLoopBackOff

发生原因:容器曾经启动了,但可能又异常退出了。
排查建议:先看Pod里的容器运行的服务是否正常。通过看Pod日志 “kubectl logs -f {pod名称} -n {pod的命名空间}”

Terminating

Pod 正在被销毁

Succeeded

Pod 中的所有容器都被成功终止,即Pod 里所有的容器均已terminated。

Failed

Pod 中的所有容器都已终止了,但至少有一个容器是因为失败终止。例如:容器以非0状态退出或者被系统终止。

Evicted

发生原因:出现这种情况,多见于系统内存或硬盘资源不足。

排查建议:可df-h查看docker存储所在目录的资源使用情况,如果百分比大于85%,就要及时清理下资源,尤其是一些大文件、docker镜像。

Unknown

发生原因:通常是由于pod所在的node节点通信错误。pod是什么状态是apiserver和运行在pod节点的kubelet进行通信获取状态信息的。如果节点之上的kubelet本身出故障,那么apiserver就连不上kubelet,得不到信息了,就会看Unknown。

Pod的重启策略

Pod的重启策略(RestartPolicy)应用于Pod内的所有容器,当某个容器异常退出或者健康检查失败时,kubelet 将根据重启策略来进行相应的操作。

Pod 的 spec 字段中包含一个 restartPolicy 字段,其可能取值包括 Always、OnFailure 和 Never。

策略解读

  • Always:只要容器异常退出,kubelet就会自动重启该容器。(这个是默认的重启策略)
  • OnFailure(常用):当容器终止运行且退出码不为0时,由kubelet自动重启该容器。
  • Never:不论容器运行状态如何,kubelet都不会重启该容器。

使用Always重启策略

创建pod资源文件

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: default
spec:restartPolicy: Always # 设置Pod的重启策略containers:- name:  tomcat-pod-javaimage: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresentports:- containerPort: 8080

创建资源

kubectl apply -f pod.yaml

1)正常停止容器里的tomcat服务
进入容器
(ps. “-c tomcat-pod-java”: 指定进入pod里的哪个容器内,如果pod里只有一个容器可不写 -c)

kubectl exec -it demo-pod -c tomcat-pod-java -- /bin/bash

正常关闭服务

/usr/local/tomcat/bin/shutdown.sh

在这里插入图片描述

查看pod状态

kubectl get pods -w

在这里插入图片描述

发现正常停止容器里的tomcat服务,容器重启了一次,pod又恢复正常了

2)非正常停止容器里的tomcat服务
进入容器

kubectl exec -it demo-pod -- /bin/bash

强行终止服务

kill 1

查看pod状态

kubectl get pods -w

在这里插入图片描述

上面可以看到容器终止了,并且又重启一次,重启次数增加了一次

使用Never重启策略

创建pod资源文件

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: default
spec:restartPolicy: Never # 设置Pod的重启策略containers:- name:  tomcat-pod-javaimage: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresentports:- containerPort: 8080

创建资源

触发小提醒:没改镜像直接用apply无效。

kubectl apply -f pod.yaml

需要执行2个命令,重启pod

kubectl delete -f pod.yamlkubectl create -f pod.yaml

在这里插入图片描述

1)正常停止容器里的tomcat服务
进入容器
(ps. “-c tomcat-pod-java”: 指定进入pod里的哪个容器内,如果pod里只有一个容器可不写 -c)

kubectl exec -it demo-pod -c tomcat-pod-java -- /bin/bash

正常关闭服务

/usr/local/tomcat/bin/shutdown.sh

查看pod状态

kubectl get pods -w

在这里插入图片描述

发现正常停止容器里的tomcat服务,pod正常运行,容器没有重启

2)非正常停止容器里的tomcat服务
进入容器

kubectl exec -it demo-pod -- /bin/bash

强行终止服务

kill 1

查看pod状态

kubectl get pods -w

在这里插入图片描述

上面可以看到容器状态是error,并且没有重启,这说明重启策略是never,pod里容器服务无论如何终止,都不会重启

使用OnFailure重启策略(常用)

创建pod资源文件

vim pod.yaml
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: default
spec:restartPolicy: OnFailure  # 设置Pod的重启策略containers:- name:  tomcat-pod-javaimage: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresentports:- containerPort: 8080

创建资源

kubectl delete -f pod.yamlkubectl create -f pod.yaml

1)正常停止容器里的tomcat服务
进入容器
(ps. “-c tomcat-pod-java”: 指定进入pod里的哪个容器内,如果pod里只有一个容器可不写 -c)

kubectl exec -it demo-pod -c tomcat-pod-java -- /bin/bash

正常关闭服务

/usr/local/tomcat/bin/shutdown.sh

查看pod状态

kubectl get pods -w

在这里插入图片描述

发现正常停止容器里的tomcat服务,退出码是0,pod里的容器不会重启

2)非正常停止容器里的tomcat服务
进入容器

kubectl exec -it demo-pod -- /bin/bash

强行终止服务

kill 1

查看pod状态

kubectl get pods -w

在这里插入图片描述

上面可以看到非正常停止pod里的容器,容器退出码不是0,那就会重启容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/254075.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go消息队列RabbitMQ - 订阅模式-direct

1.发布订阅 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 在Direct模型下: 队列与交换机的绑定,不能…

NuxtJs安装Sass后出现ERROR:Cannot find module ‘webpack/lib/RuleSet‘

最近了解NuxtJs时,发现问题比较多,对于初学者来说是件比较头痛的事。这次是安装sass预处理器,通过命令安装后,出现了ERROR:Cannot find module webpack/lib/RuleSet 错误,于是根据之前经验,对版…

解析spritf和sscanf与模拟常用字符串函数strchr,strtok(二)

今天又来继续我们的字符串函数的文章,这也是最后一篇了。希望这两篇文章能让各位理解透字符串函数。 目录 strchr strtok sprintf和sscanf strchr strchr 是一个用于在字符串中查找特定字符首次出现位置的函数。以下是解析和模拟实现 strchr 函数的示例&…

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库

在Visual Studio中引用和链接OpenSceneGraph (OSG) 库,按照以下步骤操作: 构建或安装OSG库 下载OpenSceneGraph源代码(如3.0版本)并解压。使用CMake配置项目,为Visual Studio生成解决方案文件。通常您需要设置CMake中的…

Bee+SpringBoot稳定的Sharding、Mongodb ORM功能(同步 Maven)

Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtendtrue) 2. 增强批…

Spring Boot + 七牛OSS: 简化云存储集成

引言 Spring Boot 是一个非常流行的、快速搭建应用的框架,它无需大量的配置即可运行起来,而七牛云OSS提供了稳定高效的云端对象存储服务。利用两者的优势,可以为应用提供强大的文件存储功能。 为什么选择七牛云OSS? 七牛云OSS提供了高速的…

PCIE Order Set

1 Training Sequence Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate 8GT or higher 根据特殊的规则…

第59讲订单数据下拉实现

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** 订单查询 type值 0 全部订单 1待付款 2 待收货 3 退款/退货* param type* return*/RequestMapping("/list")public R list(Integer type,Integer page,Integer pageSize){System.out.pri…

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏:https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…

Vue3编写简单的App组件(二)

一、Vue3页面渲染基本流程 1、入口文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content"widthde…

es6中标签模板

之所以写这篇文章&#xff0c;是因为标签模板是一个很容易让人忽略的知识点 首先我们已经非常熟悉模板字符串的使用方法 const name "诸葛亮" const templateString hello, My name is ${name}标签模板介绍 这里的标签模板其实不是模板&#xff0c;而是函数调用…

【CV论文精读】【MVDet】Multiview Detection with Feature Perspective Transformation

0.论文摘要 合并多个摄像机视图进行检测减轻了拥挤场景中遮挡的影响。在多视图检测系统中&#xff0c;我们需要回答两个重要问题。首先&#xff0c;我们应该如何从多个视图中聚合线索&#xff1f;第二&#xff0c;我们应该如何从空间上相邻的位置聚集信息&#xff1f;为了解决…

Java项目管理01-Maven基础

一、Maven的常用命令和生命周期 1.Maven的常用命令使用方式 complie&#xff1a;编译&#xff0c;将java文件编译为class字节码文件 clean&#xff1a;清理&#xff0c;删除字节码文件 test&#xff1a;测试&#xff0c;运行项目中的test类 package&#xff1a;打包&#x…

Leetcode 45. 跳跃游戏 II

本题与55. 跳跃游戏十分类似&#xff0c;区别在于本题是要求出最小的跳跃次数。 在55. 跳跃游戏的框架上&#xff0c;我们需要增加一些东西&#xff1a; 既然要计算最小跳跃次数&#xff0c;就需要用一个变量计数跳跃的次数&#xff1b;需要一次前瞻&#xff0c;来计算之后那次…

3.1 Verilog 连续赋值

关键词&#xff1a;assign&#xff0c; 全加器 连续赋值语句是 Verilog 数据流建模的基本语句&#xff0c;用于对 wire 型变量进行赋值。&#xff1a; 格式如下 assign LHS_target RHS_expression &#xff1b; LHS&#xff08;left hand side&#xff09; 指赋值操作…

圣诞节酷炫特效合集【含十几个HTML+CSS前端特效+34个桌面酷炫圣诞程序】

写在前面 ❤️源码获取:订阅后见文末 ❤️内容介绍:包含HTML+CSS等十几个圣诞特效;以及三十四个桌面酷炫圣诞树合集 ❤️订阅后所得如下: ❤️HTML圣诞+桌面圣诞程序效果如下: 下方展示代码仅举例其中几个 所有效果源码及文件订阅后找博主获取即可 🎄css3圣诞雪人动…

大模型2024规模化场景涌现,加速云计算走出第二增长曲线

导读&#xff1a;2024&#xff0c;大模型第一批规模化应用场景已出现。 如果说“百模大战”是2023年国内AI产业的关键词&#xff0c;那么2024年我们将正式迈进“应用为王”的新阶段。 不少业内观点认为&#xff0c;2024年“百模大战”将逐渐收敛甚至洗牌&#xff0c;而大模型在…

PHPExcel导出excel

PHPExcel下载地址 https://gitee.com/mirrors/phpexcelhttps://github.com/PHPOffice/PHPExcel 下载后目录结构 需要的文件如下图所示 将上面的PHPExcel文件夹和PHPExcel.php复制到你需要的地方 这是一个简单的示例代码 <?php$dir dirname(__FILE__); //require_once …

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

基于Chrome插件的Chatgpt对话无损导出markdown格式(Typora完美显示)

刚刚提交插件到Chrome插件商店正在审核&#xff0c;想尝试的可以先使用&#xff1a; https://github.com/thisisbaiy/ChatGPT-To-Markdown-google-plugin/tree/main 我将源代码上传至了GitHub&#xff0c;欢迎star, IssueGoogle插件名称为&#xff1a;ChatGPT to MarkDown plus…