pod 基础 2

pod 进阶

探针

poststart

prestop

pod的生命周期开始:

重启:k8s的pod重启策略

deployment的yaml文件只能是Always pod的yaml三种模式都可以。

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

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

容器退出了,pod才会重启。

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

docker的重启策略:

面试题:k8s和docker重启策略有什么不同

docker的默认策略是never。

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

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

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

单机部署:就使用docker足够了,

集群化部署:k8s

yaml文件快速生成:

基于模板来改。

基于deployment来创建

--dry-run=client -o yaml >:只是调用方法对象,不是执行命令,不会创建到集群中。

指定输出到opt

基于pod来创建

基于service创建

pod的状态:

crashloopbackoff:pod当中的容器已经退出,kubelet正在重启

imagepullbackoff:正在重试拉取镜像

errimagepull:拉取镜像出错(1,网速太慢。 2,镜像名称写错了。 3,镜像仓库挂了)

Evicte:POD被驱赶(node节点资源不够部署pod,或者是资源不足,kubelet自动选择一个pod驱逐。)

工作遇到资源不足,打电话跟领导申请扩容

CrashLoopBackOff: 容器退出,kubelet正在将它重启

InvalidImageName: 无法解析镜像名称

ImageInspectError: 无法校验镜像

ErrImageNeverPull: 策略禁止拉取镜像

ImagePullBackOff: 正在重试拉取

RegistryUnavailable: 连接不到镜像中心

ErrImagePull: 通用的拉取镜像出错

CreateContainerConfigError: 不能创建kubelet使用的容器配置

CreateContainerError: 创建容器失败

m.internalLifecycle.PreStartContainer 执行hook报错

RunContainerError: 启动容器失败

PostStartHookError: 执行hook报错

ContainersNotInitialized: 容器没有初始化完毕

ContainersNotReady: 容器没有准备完毕

ContainerCreating: 容器创建中

PodInitializing:pod 初始化中

DockerDaemonNotReady: docker还没有完全启动

NetworkPluginNotReady: 网络插件还没有完全启动

Evicte: pod被驱赶

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

1,request:最小占用需要的资源

2,limit:最高能占用需要多少资源

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

对容器的两个资源限制:

cpu:

cpu限制的格式:

1,数字加小数点

1 2 0.5 0.2 可以占用几个cpu,最小是0.1单位

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

2,m来表示cpu

cpu时间分片原理:

cpu时间分片:提供周期性的轮流分配cpu时间给各个进程,多个进程可以在cpu上交替执行。

在k8s中就是表示占用cpu的比率:

m:millicores 单位

1000m 500m 2000m 100m就是最小单位

1000m就是一个cpu

内存:

Ki

Mi(常见)

Gi(常见)

Ti

实验:

做限制条件。

kubectl apply -f test.yaml

进入容器:

kubectl exec -it centos-847ddb86c-ks44p bash

安装epel源

yum -y install epel-release

安装压力测试工具:

yum -y install stress

模拟压力测试:

超过直接杀进程

request 可以不设置,生产中一般不设置,只要不超过,用多少给多少

在master节点直接查看

kubectl describe nodes node02

在创建pod时,一定要给容器做限制。

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

默认策略:(默认策略即可)ifNotPresent

ifNotPresent:如果本地镜像有,就不在拉取,本地没有才会去镜像仓库拉取。

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

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

都是本地部署,Never

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

Always:不用

默认就是ifNotPresent,可以不加。

设置为Never

(本地有没有都不拉)不拉:

设置为:Always

本地有还是拉取

pod内容器的健康检查:

探针:

probe

k8s对容器执行的定期诊断。

探针有三种规则:

1,存活探针:livenessProbe 探测容器是否正常运行,如果发现探测失败,会杀容器,容器会根据重启策略来决定是否重启,不是杀掉pod

2,就绪探针:探测容器是否进入ready状态,并做好接受请求的准备。

探测失败 READY 0/1 没有进入ready状态。service会把这个资源对象的端点从ENDPOINTS中剔除。service也不会把请求转发到这个pod

3,启动探针

只是在容器的启动后开始检测,容器内的应用是否启动成功。在启动探测成功之前,所有的其他探针都会处于禁用状态。

但是,一旦启动探针结束,后续的操作不再受探针影响。

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

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

存活探针:

就绪探针:

livenessprobe的检查方法:

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

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

相当于执行了一条命令行命令

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

200

相当于发放http请求

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

3,tcpSocket:端口,对指定端口上的容器的IP地址进行的tcp检查(三次握手),端口打开认为 探测成功。检查特点容器的打开济安泰状态。

就是检查端口

检查结果:

1:成功容器提供,正常运行

2:失败存活探针会重启

3:未知结果

实验:

1,exec探针

initialDelaySeconds: 3

#表示容器启动之后多少秒来进行探测,时间不要设置的太短,可能导致无效探测

periodSeconds: 2

#表示探针探测的间隔时间。每隔多少秒进行一次检查。应用的延迟敏感度。这个应用非常重要,是核心组件。

failureThreshold: 2

#表示如果探测失败,失败几次之后,把容器标记为不健康。

successThreshold: 1

#只要成功一次就标记为就绪,健康,

timeoutSeconds: 1

#表示每次探测的超时时间,在多少秒内必须完成探测。

间隔的时间一定要比检测时间长。

前三个面试时要说出来。

成功次数可以不加,默认1次就成功,失败默认是3次

kubectl apply -f test.yaml

进入容器删除

kubectl exec -it centos-797bc57596-ghkvm -- rm -rf /opt/123.txt

探针检测不健康

在创建回去

kubectl exec -it centos-797bc57596-ghkvm -- touch /opt/123.txt

探测健康

liveness杀死容器重启。所有的探针策略伴随整个pod的生命周期。除了启动探针

2,httpGET

scheme:HTTP

协议是http

port: 80 端口为80

成功:

把80换成81,检测3次失败,就重启容器。

加上path:/index.html

加路径,检测访问资源是否存在。

kubectl describe pod nginx1

404 3次失败杀掉容器,继续重启

一直重启

改成对的

成功

3,tcpSocket 查看端口服务的监听状态

通过三次握手检测端口

改端口:

检测失败

总结:

探针的三个方法:

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

探针将伴随整个生命周期

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

shell命令执行成功:

返回码:0表示成功。

成功一次结束探测成功

httpGet:对web容器发起一次get请求,可以添加path,指定访问的资源。返回码大于等于200,小于400的范围之内都算成功

tcpSocket:相当于telnet,指定的容器济安泰端口是否打开。是否能和指定的容器监听

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

由浅入深理解C#中的事件

目录 本文较长,给大家提供了目录,可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托,事件的很多部分都与委托…

sqlserver工具插入表语法into新表问题

文章目录 sqlserver工具插入表语法into新表问题 sqlserver工具插入表语法into新表问题 into新表问题 SELECT 1 AS FID, AS FNUMBER,1 AS FVALUE,A AS FVALUE2,名字 AS FNAME, 你的全名 FFULLNAME INTO t_user_mmINSERT INTO t_user_mm VALUES(2,2,2,B,懒人,懒人咖)INSERT I…

FreeRTOS——内存管理知识总结及实战

1 freeRTOS动态创建与静态创建 动态创建:从FreeRTOS 管理的内存堆中申请创建对象所需的内存,在对象删除后, 这块内存释放回FreeRTOS管理的内存堆中 静态创建:需用户提供各种内存空间,并且使用静态方式占用的内存空间一…

VCoder:大语言模型的眼睛

简介 VCoder的一个视觉编码器,能够帮助MLLM更好地理解和分析图像内容。提高模型在识别图像中的对象、理解图像场景方面的能力。它可以帮助模型显示图片中不同物体的轮廓或深度图(显示物体距离相机的远近)。还能更准确的理解图片中的物体是什…

(Java基础知识综合)

进制转换&#xff1a; 其他转10 10转其他 2进制8和16 8和16转2 位运算&#xff1a; >> 除于2 <<乘以2 近似值 空心金字塔 this关键字还可以用于访问父类中的属性和方法

axios 二次封装 设置token

// 公有 axios.defaults.headers.common[Y-Auth-Token]eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 设置后 并发起请求&#xff0c;你可以在浏览器控制台…

电脑提示“KBDRU1.DLL文件缺失”,导致游戏和软件无法启动运行,快速修复方法

看到很多小伙伴&#xff0c;在问电脑启动某些软件或游戏的时候&#xff0c;提示“KBDRU1.DLL文件缺失&#xff0c;软件无法启动&#xff0c;请尝试重新安装&#xff0c;解决问题”&#xff0c;不知道应该怎么办&#xff1f; 首先&#xff0c;我们要先了解“KBDRU1.DLL文件”是什…

数据结构学习 jz16 数值的整数次方

关键词&#xff1a;快速幂 位运算 之前已经学过快速幂了&#xff0c;所以只是回忆。快速幂有递归版和非递归版。 题目&#xff1a; 这道题和之前的快速幂的区别是 n可能为负数。分类讨论即可。 思路&#xff1a; 区分正负&#xff1a; if (n < 0) return POW(1.0 / x, …

ASUS华硕ROG幻14笔记本2023款G14 GA402XV原装出厂Win11系统

华硕幻14锐龙R9-7940HS笔记本电脑原厂Windows11.22H2系统 适用型号&#xff1a;GA402XU、GA402XV、GA402XI、GA402XY、GA402XZ 链接&#xff1a;https://pan.baidu.com/s/1sMva1u7D8uFoGnm2Hjrdug?pwdho91 提取码&#xff1a;ho91 原厂系统自带所有驱动、出厂主题壁纸、…

AWS EKS1.26+kubesphere3.4.1

1、前提准备 1台EC2服务器Amazon Linux2&#xff0c;设置admin的角色 安装 aws cli V2 ​ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installexport PATH/usr/local/bin:$PATHsou…

pod进阶版(2)

startupProbe启动探针 如果探测失败,pod的状态是notready&#xff0c;启动探针会重启容器 启动探针没有成功之前&#xff0c;后续的探针都不会执行。启动探针成功之后&#xff0c;在pod的后续生命周期不会用启动探针 exec方式 正确示范 apiVersion: v1 kind: Pod metadata…

【React系列】react-router

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢&#xff1f;监听URL的改变。 UR…

【优选算法】专题三:二分查找 --- 34. 在排序数组中查找元素的第一个和最后一个位置

从今天开始,xxxflower 带着小伙伴们一起学习算法 ~ 今天我们要写的题目是: 34. 在排序数组中查找元素的第一个和最后一个位置 以下是题目的详细解析: class Solution {public int[] searchRange(int[] nums, int target) {// 判断数组为空的情况下返回-1,-1int[] ret new in…

在centos上安装WordPress 及创建配置文件无反应的解决方案

一、安装Apache服务 1.直接在命令行中输入以下命令即可,顺便安装编译组件&#xff1a; yum install -y httpd yum install -y httpd-devel2.启动Apache服务和设置Apache自启&#xff1a; 1 systemctl start httpd 2 systemctl enable httpd 3.添加一个测试页面&#xff0c;…

4《数据结构》

文章目录 绪论逻辑结构存储结构【物理结构】顺序和链式存储区别顺序表和数组区别数组和链表的区别链表结点概念链表为空条件链表文章http://t.csdnimg.cn/dssVK二叉树B树B树【MYSQL索引默认数据结构】B树和B树区别冒泡排序插排选排快排 绪论 数据结构&#xff1a;研究非数值计…

Html5实用个人博客留言板模板源码

文章目录 1.设计来源1.1 主界面1.2 认识我界面1.3 我的日记界面1.4 我的文章列表界面和文章内容界面1.5 我的留言板界面 2.演示效果和结构及源码2.1 效果演示2.2 目录结构2.3 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151…

关于MySQL Cluster

目录 1.MySQL Cluster2.MySQL Cluster架构3.MySQL Cluster 与 MySQL 主从架构有什么区别4.参考 MySQL Cluster是MySQL的一个高可用性&#xff0c;高性能的分布式数据库解决方案。它结合了内存数据库和共享无状态架构的技术&#xff0c;提供了99.999%的可用性&#xff0c;满足严…

经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

经典目标检测YOLO系列(一)实现YOLOV1网络(1)总体架构 实现原版的YOLOv1并没有多大的意义&#xff0c;因此&#xff0c;根据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;在不脱离YOLOv1的大部分核心理念的前提下&#xff0c;重构一款较新的YOLOv1检测器&#xff0c;来…

【EI会议征稿通知】第十届先进制造技术与应用材料国际学术会议(ICAMMT 2024)

第十届先进制造技术与应用材料国际学术会议&#xff08;ICAMMT 2024&#xff09; The 10th International Conference on Applied Materials and Manufacturing Technology 至今ICAMMT已连续举办九届&#xff0c;会议先后在三亚、杭州、清远等城市成功召开。每一届最终征集收…

K8S--部署SpringBoot项目实战

原文网址&#xff1a;K8S--部署SpringBoot项目实战-CSDN博客 简介 本文介绍K8S如何部署SpringBoot项目。 1.生成应用的docker镜像 把SpringBoot项目的jar包打包为docker镜像&#xff0c;见&#xff1a;Docker Compose--部署SpringBoot项目--实战-CSDN博客 创建后的镜像名称…