pod进阶:探针和容器钩子

探针*

容器钩子:

poststart

prestop

pod的生命周期开始

Q:docker和k8s的重启策略对比

A:

k8s的pod重启策略:

Always:正常退出和非正常退出都重启(deployment的yaml文件只能是Always。pod的yaml文件三种模式都可以)

Never:正常退出和非正常退出都不重启

OnFailure:只有状态码非0才会重启。正常退出不重启

容器退出了,pod才会重启

pod可以有多个容器,只要有一个容器,整个pod都会重启,pod内的所有容器都会重启

docker的重启策略:

docker的默认策略是Never

on-failure:非正常退出才会重启容器

always:只要容器退出,都会重启

unless-stopped:只要容器推出就会重启,docker守护进程时已经停止的容器不再重启

单机部署:docker足够

集群化部署:K8S

如何快捷生成yaml文件

[root@master01 opt]# kubectl create deployment nginx --image=nginx:1.22 --replicas=3 --dry-run=client

deployment.apps/nginx created (dry run)

[root@master01 opt]# kubectl get deployment.apps

NAME         READY   UP-TO-DATE   AVAILABLE   AGE

centos1      0/1     1            0           20h

[root@master01 opt]# kubectl create deployment nginx --image=nginx:1.22 --replicas=3 --dry-run=client -o yaml > /opt/test1.yml

[root@master01 opt]# ls

a.yml    cni-plugins-linux-amd64-v0.8.6.tgz  rh

b.yml    containerd                          test1.yml

[root@master01 opt]# kubectl run nginx1 --image=nginx:1.22 --dry-run=client -o yaml > /opt/test-pod.yaml

[root@master01 opt]# vim test-pod.yaml

[root@master01 opt]# kubectl expose deployment nginx2 --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml > /opt/testl-service.yaml

[root@master01 opt]# vim testl-service.yaml

--dry-run=client: 只是调用api的对象不执行命令

pod内的容器使用节点资源的限制:

1、request: 需要的资源

2、limit:最高能占用系统多少资源

如果只设置request,没有limit,会占用所有

工作中一般就写一个limit

limit:需要多少,最多也只能占用这么多

如果只有limit,没有request,会按照limit来

两个限制:内存  CPU

CPU的限制格式:

法一:

1                    2                 0.2                 0.1 【最小单位】

可以占用1个cpu  可以占用2个cpu     可以占用0.2个cpu      可以占用0.1个cpu

要么是整数,要么就是小数点后只能跟一位,最小单位0.1

法二:

m来表示CPU

1000m表示一个cpu

CPU时间分片原理:

CPU时间分片:通过周期性的轮流分配CPU时间给各个进程。多个进程可以在CPU上交替执行

在K8S中就是表示占用的CPU的比率

m:millicores 单位

内存:Ki/Mi/Gi/Ti

#在创建pod时,一定要给容器做资源限制

k8s怎么设置拉取镜像的策略

默认策略:

lfNotPresent:如果本地镜像有,则不再拉取。本地没有才会去镜像仓库拉取

Always:不论镜像是否存在,创建/重启时都会重新拉取镜像

Never:仅仅使用本地镜像。本地没有也不会主动拉取

都是本地部署,Never

如果涉及到外部部署,默认策略 (事前要把docker的镜像导入到目标主机)

Always:一般不用

pod的容器健康检查:探针(probe)

K8S对容器执行的定期检查、诊断

探针的三种规则:

1、存活探针:livenessProbe

探测容器是否正常运行

如果发现探测失败,会杀掉容器,容器会根据重启策略决定是否重启。不是杀掉pod,只是对容器

2、流量/就绪探针

探测容器是否进入ready状态,并做好接受请求的状态

探测失败,ready  0/1 没有进入ready状态。但是status依旧是running,实际不可用

service会把资源对象的端点从当中剔除,service也不会把请求转发到pod

3、启动探针

只是在容器启动后开始检测,容器内的应用是否启动成功。在启动探测成功之前,所有其他的探针都处于禁用状态。一旦启动探针结束,后续的操作就不再受启动探针的影响

在一个容器当中的可以有多个探针

启动探针:只在容器启动时探测

存活

就绪

probe的检查方法:

1、exec探针: 在容器内部执行命令,如果命令的返回码是0,表示成功。

适用于需要在容器内自定义命令来检查容器的健康状况

2、httpGet:

对指定ip+端口的容器发送一个httpget的请求。响应状态码大于等于200,小于400都是成功。

200<=x<400

适用于检查容器能否响应http的请求,web容器(nginx、tomcat)

3、tcpSocket

端口。对指定端口上的容器的IP地址进行tcp检查(三次握手),端口打开,认为探测成功,否则都是失败。

适用于检查特定容器的端口监听状态

类似于telnet 192.168.233.10 80

诊断结果:

1、成功

容器通过了,正常运行

2、失败

只有存活探针会重启,就绪探针会,启动探针会

3、未知

诊断失败(少见)

exec方式

successThreshold: 1

timeoutSeconds: 1

这两个可以不加,其他的三个都要加,是核心指标

总结:

探针:

存活探针: 检测失败之后,会杀死容器,然后重启

探针将伴随整个容器的生命周期

exec:相当于执行了一个shell命令: 容器里面执行

shell命令执行成功:返回码是0表示成功

成功一次即可。只要成功一次就是探测成功

httpGet:对web容器发起的一次Get请求,可以添加path,指定访问的资源。返回码在[200,400)之间都算成功

tcpSocket:相当于telnet。指定的容器的监听端口是否打开。是否能和指定的容器监听端口进行通信

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

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

相关文章

【模拟量采集1.2】电阻信号采集

【模拟量采集1.2】电阻信号采集 1 怎么测&#xff1f;2 测输入电阻电压即转为测模拟电压值&#xff0c;这里需要考虑选用怎样的辅助电阻&#xff1f;3 实际电路分析3.1 在不考虑 VCC-5V 电压的纹波等情况时&#xff08;理想化此时输入的 VCC 就是稳定的 5V&#xff09;3.2 若考…

HT81698 内置升压双声道 相互p2p兼容 HT81696

HT81698内置升压的立体声D类音频功率放大器&#xff0c;其支持单节锂电、双节锂电串联、5V、12V等多种输入&#xff0c;升压后的电压提供给功放供电&#xff0c;功放支持双通道立体声BTL输出以及并联PBTL单声道输出; HT81698内置的升压电路&#xff0c;可通过FB脚设置升压值&a…

已解决‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的问题

已解决‘ping‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。”的问题 文章目录 问题介绍 问题分析 解决思路 解决方法 检查并修复环境变量 进入c:\windows\system32再ping 使用系统工具修复系统文件 Q1 - 问题介绍 当您尝试在Windows命令提示符下…

【Spring进阶系列丨第六篇】Spring的Bean管理(基于注解)

文章目录 一、说明二、用于创建对象的2.1、Component注解2.1.1、定义Bean2.1.2、主配置文件配置扫描注解2.1.3、测试2.1.4、Component注解总结 2.2、Controller注解2.3、Service注解2.4、Repository注解 三、用于注入数据的3.1、Autowired注解3.1.1、定义Bean3.1.2、主配置文件…

Linux学习(11)——进程的基本概念

目录 一、程序 1、什么是程序&#xff1f; 二、进程 1、什么是进程&#xff1f; 2、进程具有的特征 2.2进程&#xff0c;线程&#xff0c;协程 2.2.1 进程和线程的区别 2.2.2如何查看一个程序是多线程还是单线程 3、进程使用内存的问题 ①内存泄漏&#xff1a;Memory L…

GO语言笔记1-变量与基本数据类型

变量使用步骤 声明赋值使用 package main import "fmt" func main(){var age int //声明一个 int类型的变量叫ageage 18 //给变量用 赋值fmt.Println(age) //使用变量 输出变量的值 } 编译运行输出变量值 变量的四种使用方式 package main import "fmt&q…

【大数据】Spark学习笔记

初识Spark Spark和Hadoop HadoopSpark起源时间20052009起源地MapReduceUniversity of California Berkeley数据处理引擎BatchBatch编程模型MapReduceResilient distributed Datesets内存管理Disk BasedJVM Managed延迟高中吞吐量中高优化机制手动手动APILow levelhigh level流…

RFID技术在3C家电中的全方位应用

RFID技术在3C家电中的全方位应用 一、RFID技术简述 射频识别&#xff08;RFID&#xff09;技术是一种无线通信技术&#xff0c;已经在各行各业得到广泛应用。在3C家电领域&#xff0c;RFID技术的应用正在逐渐增加&#xff0c;为产品追溯、库存管理、防伪验证等方面提供了许多…

leetcode1944. 队列中可以看到的人数

Problem: 1944. 队列中可以看到的人数 文章目录 题目解题方法复杂度Code 题目 有 n 个人排成一个队列&#xff0c;从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights &#xff0c;每个整数 互不相同&#xff0c;heights[i] 表示第 i 个人的高度。 一个人能 看到 他右边…

JVM之对象创建

对象创建的流程 1.类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。new指令对…

含科研思考六、关于【图神经网络】的一些要点 | 图神经网络节点表示学习研究:选题参考、问题探讨 | 图神经网络多模态 | 异构图神经网络

我们抬头便看到星光,星星却穿越了万年. 🎯作者主页: 追光者♂🔥 🌸个人简介: 📝[1] CSDN 博客专家📝 🏆[2] 人工智能领域优质创作者🏆 🌟[3] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌿[4] 2022年度博客之星人工智能领域TOP4🌟 🏅

Docker-Compose部署Redis(v7.2)主从模式

文章目录 一、前提准备1. redis配置文件2. 下载redis镜像3. 文件夹结构 二、docker-compose三、主从配置1.主节点配置文件 环境 docker desktop for windows 4.23.0redis 7.2 一、前提准备 1. redis配置文件 因为Redis 7.2 docker镜像里面没有配置文件&#xff0c;所以需要…

Color Control

设计一个优秀的用户界面是一项艰巨的任务。特别是如果你想改变UI的颜色,调整所有元素可能需要花费大量时间。Color Control可以帮助你!在检查器中以可视化的方式将你的项目颜色定义为资源。Color Control为你提供了组件,当你编辑它们时,它们会自动更新你的UI元素。 颜色控制…

Oracle-游标

简介 游标即cursor&#xff0c;是一种用于遍历结果集的数据类型。它是一个指向结果集的指针&#xff0c;可以用于遍历结果集中的每一行数据&#xff0c;但是一次只能指向一行。游标通常用于存储过程和函数中&#xff0c;以便在处理结果集时能够逐行处理数据。 语法 /* 游标:(…

花了一小时,拿python手搓了一个考研背单词软件

听说没有好用的电脑端背单词软件&#xff1f;只好麻烦一下&#xff0c;花了一小时&#xff0c;拿python手搓了一个考研背单词软件。 代码已经开源在我的github上&#xff0c;欢迎大家STAR&#xff01; 其中&#xff0c;数据是存放在sqlite中&#xff0c;形近词跳转是根据jaro …

新的centos7.9安装docker版本的jenkins2.436.1最新版本-后端项目发布(四)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

遥感影像-语义分割数据集:2021年昇腾杯复赛数据集详细介绍及训练样本处理流程

原始数据集详情 简介&#xff1a;细粒度语义分割赛道依据现有的遥感地物分类要求&#xff0c; 结合现有的地物分类实际需求&#xff0c;参照地理国情监测、 “三调”等既有地物分类标准&#xff0c;依据遥感地物“所见即所得”原则&#xff0c; 设计地物要素分类体系&#xff…

Excel技巧之【如何修改密码】

我们知道&#xff0c;Excel可以设置多种密码来保护文件&#xff0c;那想要修改密码&#xff0c;要如何操作呢&#xff1f;下面小编来分享一下Excel常用的3种密码的修改方法&#xff0c;一起来看看吧&#xff01; 1. “打开密码” 想要修改Excel表格的“打开密码”&#xff0c…

scratch给数据清单排序 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch给数据清单排序 一、题目要求 1、准备工作 2、功能实现 二、案例分析

Web前端篇——ElementUI之el-scrollbar + el-backtop + el-timeline实现时间轴触底刷新和一键返回页面顶部

ElementUI之el-scrollbar el-backtop el-timeline实现时间轴触底刷新和一键返回页面顶部。 背景&#xff1a;ElementUI的版本&#xff08;vue.global.js 3.2.36&#xff0c; index.css 2.4.4&#xff0c; index.full.js 2.4.4&#xff09; 废话不多说&#xff0c;先看动…