pod进阶:

pod进阶:

探针*

poststart

prestop

pod的生命周期:pod的状态

k8s的重启策略

Always deployment的yaml文件只能是Always pod的yaml三种模式都可以。不论正常退场还是非正常退出都重启

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

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

这三个都是对应的容器的状态,容器退出了,pod才会重启。

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

docker的重启策略:

docker的默认策略是never。

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

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

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

问单机部署:docker就够了

集群化部署;k8s,至少三个节点

yaml文件快速生成:

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3 --dry-run=client

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

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3 --dry-run=client -o yaml > /opt/test3.yaml

pod的状态:

CrashLoopBackOff容器退出,kubelet正在将它重启
InvalidImageName无法解析镜像名称
ImageInspectError无法校验镜像
ErrImageNeverPull策略禁止拉取镜像
ImagePullBackOff正在重试拉取
RegistryUnavailable连接不到镜像中心
ErrImagePull通用的拉取镜像出错
CreateContainerConfigError不能创建kubelet使用的容器配置
CreateContainerError创建容器失败
m.internalLifecycle.PreStartContainer 执行hook报错
RunContainerError启动容器失败
PostStartHookError执行hook报错
ContainersNotInitialized容器没有初始化完毕
ContainersNotReady容器没有准备完毕
ContainerCreating容器创建中
PodInitializingpod 初始化中
DockerDaemonNotReadydocker还没有完全启动
NetworkPluginNotReady 网络插件还没有完全启动
Evicte pod被驱赶

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

imagepullbackoff:正在重试拉取镜像

errorimagepull:拉去镜像出错了(网速太慢、镜像名字写错了、镜像仓库挂了)

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

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

1、request:pod内的容器需要的资源

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

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

主要两个限制

cpu:

cpu的限制格式:

1、数字加小数点:1占用一个 2两个 0.5半个 .0.2五分之一 0.3,0.1是最小单位,要么是整数,要么是小数点后只能跟一位。

2、m来表示cpu,根据cpu的时间分片原理:通过周期性的轮流分配cpu给各个进程,多个进程可以在cpu上交替执行。

在k8s中就是表示占用cpu的比率: m:millicores 单位

1000m表示1个cpu 500m半个cpu 100m是最小单位

内存:单位用Ki、Mi、Gi、Ti

给内存和cpu做资源限制

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centoscommand: ["/bin/bash", "-c", "sleep 3600"]resources:limits:memory: "1Gi"cpu: "1000m"#在创建pod时,一定要给容器做资源限制。

镜像的拉取策略:

默认策略:

ifNotPresent:如果本地镜像已经存在,就不再拉去,本地没有才回去镜像仓库拉取

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

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

如果本地部署用Never,如果涉及到外地部署,默认策略(事前要把docker的镜像导入到目标主机),Always一般不用

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:8name: centosimagePullPolicy: Alwayscommand: ["/bin/bash", "-c", "sleep 3600"]resources:limits:memory: "1Gi"cpu: "1000m"

pod容器健康检查

探针

prode

k8s对容器执行的定期诊断

探针三种规则

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

就绪探针readinessProbe:探测容器是否进入ready状态,并做好接收请求的准备,如果探测失败 READY 0/1 没有进入ready状态,但是status还是running状态,但是不可用,service会把这个资源对象的端点从当中剔除。service也不会把请求转发到这个pod

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

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

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

第一个启动太真:只在容器启动时探测 、存活探针、就绪谈着

probe的检测方法:

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

适用于在容器内部自定义命令来检查容器的健康状态。

2、httpGet:就是对指定ip+端口的容器发送一个httpGet的请求。响应状态码大于等于200,但是小于400都是成功。400< x >=200

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

3、tcpSocket:检查端口,对指定端口上的容器的ip地址进行tcp检查(三次握手),端口打开,认为探测成功。 适用于检查特定容器端口的监听状态。 类似于telnet

诊断结果:

1、成功,容器通过了,正常运行

2、失败,只有存活探针会重启

3、未知状态:也是诊断失败

exec方式:

LivenessProbe: exec: command: ["/usr/bin/test", "-e", "/opt/123.txt"

#周期性探测命令,表示容器启动之后多少秒来进行探测,时间不要设置太短,否则容器还>没启动好就探测,可能导致无效探测 initialDelaySeconds: 5 #表示探针探测的间隔时间。每隔多少秒进行一次检查,看应用的延迟敏感度,这个应用非常 重要,是要给核心组件, periodSeconds: 2 #表示如果探测失败,失败几次,把容器标记为不健康 failureThreshold: 2 #只要成功一次即可就标记为就绪,健康或者ready successThreshold: 1 #表示每一次探测的超时时间,在多少秒内必须完成探测,不能比perioSeconds大 timoutSecond: 1

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

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2

总结

探针三个方法

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

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

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

返回码为0,表示成功,成功1次就是探测成功

httpGet:对外部容器发起了一次get请求,可以添加path指定访问的资源

返回码在大于等200小于400都算成功

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

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

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

相关文章

UG装配-引用集

引用集是控制组件的图素在装配体中显示与隐藏 装配体体环境控制组件显示与隐藏的四种方式 1、图层 2、引用集 3、隐藏命令 Ctrl B 4、抑制&#xff0c;取消此组件装配&#xff0c;但保留操作在导航器方便启用 引用集有两种类型 1、UG自动创建的引用集 2、用户定义的引…

Java 泛型深入解析

Java 中的泛型是一种强大的编程特性&#xff0c;允许我们编写更加通用和类型安全的代码。本篇博客将深入探讨 Java 泛型的各个方面&#xff0c;包括泛型类、泛型方法、泛型接口以及泛型通配符。 1. 泛型类 首先&#xff0c;让我们看一个简单的泛型类的例子。在下面的代码中&a…

Spring中的ApplicationContext和BeanFactory的区别??

ApplicationContext&#xff1a;只要一读取配置文件&#xff0c;默认情况下就会创建对象。 UserServiceImpl&#xff1a; package com.by.service;import com.by.dao.UserDao;/*** 业务层实现类*/ public class UserServiceImpl implements UserService {private UserDao user…

Flink 维表关联方案

Flink 维表关联方案 1、Flink DataStream 关联维表 1&#xff09;概述 1.分类 实时数据库查找关联&#xff08;Per-Record Reference Data Lookup&#xff09; 预加载维表关联&#xff08;Pre-Loading of Reference Data&#xff09; 维表变更日志关联&#xff08;Refere…

el-select 循环展示,已存在的不能选择

<el-select v-model"scope.row.payChannel" placeholder"请选择支付方式" change"() > {payChange(scope.row);}"><el-option v-for"(item, index) in options" :key"index" :label"item.label":valu…

源头厂家定制直线度测量仪 在线与离线检测均可

直线度的检测不再局限于直尺法、重力法等人工检测方式&#xff0c;随着自动化的发展&#xff0c;直线度检测也更需要自动化方便快捷的检测仪器。为此&#xff0c;研发了在线直线度测量仪与离线直线度测量仪&#xff0c;根据不同的需要&#xff0c;选择合适的设备即可。 数据计…

【计算机算法设计与分析】漂亮打印问题(C++_动态规划)

文章目录 问题描述算法原理算法实现参考资料 问题描述 给定由n个英文单词组成的一段文章&#xff0c;每个单词的长度 (字符个数)依序为 l 1 , l 2 , . . . , l n l_1, l_2, ..., l_n l1​,l2​,...,ln​。要在一台打印机上将这段文章“漂亮”地打印出来。打印机每行最多可打印 …

基于SpringBoot的公司进销存管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的公司进销存管理系统,ja…

轻量检测模型PP-PicoDet解析

Paper&#xff1a;PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices official implementation&#xff1a;https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.7/configs/picodet Backbone 作者通过实验发现&#xff0c;ShuffleNetV2在移动…

NeRF-RPN: A general framework for object detection in NeRFs 全文翻译

摘要 Abstract 本文提出了第一个重要的物体检测框架 NeRF-RPN&#xff0c;它直接在 NeRF 上运行。给定一个预先训练好的 NeRF 模型&#xff0c;NeRF-RPN 的目标是检测场景中所有物体的边界框。通过利用包含多尺度三维神经体积特征的新颖体素表示法&#xff0c;我们证明…

ubuntu环境安装配置nginx流程

今天分享ubuntu环境安装配置nginx流程 一、下载安装 1、检查是否已经安装 nginx -v 结果 2、安装 apt install nginx-core 过程 查看版本&#xff1a;nginx -v 安装路径&#xff1a;whereis nginx nginx文件安装完成之后的文件位置&#xff1a; /usr/sbin/nginx&#xf…

MySQL中UNION和UNION ALL的区别有哪些?

在MySQL中如何想要对两个结果集进行合并操作&#xff0c;可以使用UNION和UNION ALL&#xff0c;如果只是想要去除掉重复的记录&#xff0c;属于UNION ALL 即可&#xff0c;但是如何想要除掉没有重复行数据&#xff0c;就要使用Union。本文详细向大家介绍MySQL中UNION和UNION AL…

Axure鲜花商城网站原型图,网上花店订花O2O本地生活电商平台

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;仅支持Axure RP 9/10&#xff0c;非程序软件无源代码 应用领域&#xff1a;鲜花网、花店网站、本地生活电商 作品特色 本作品为「鲜花购物商城」网站模板&#xff0c;高保真高交互&#xff0c;属于O2O本地生活电…

OpenVINS学习5——VioManager.cpp/h学习与注释

前言 之前又看到说VioManager.cpp/h是OpenVINS中的核心程序&#xff0c;这次就看看这里面都写了啥&#xff0c;整体架构什么样&#xff0c;有哪些函数功能。具体介绍&#xff1a; VioManager类 整体分析 VioManager类包含 MSCKF 工作所需的状态和其他算法。我们将测量结果输…

python的课后练习总结3之条件语句

1,简单点&#xff0c;只有IF IF 后面加入条件然后冒号: 条件成立执行的代码1 条件成立执行的代码2 条件是否成立都执行的代码 身高 float(input(请输入你的身高(米):)) if 身高 > 1.3:print(f您的身高是{身高}米,请您买票) print(祝您旅途愉快) 2,IF 加个else if 条件:…

Spring AOP的环境搭建、切入点表达式、通知注解

Spring AOP的实现 Spring AOP环境搭建AOP坐标依赖引入添加xml配置实现三层架构 定义切入点Pointcut("匹配规则")切入点表达式1. 执行所有的公共方法2.执行任意的set方法3.设置指定包下的任意类的任意方法 (指定包: com.svt.service)4.设置指定包及于包下的任意类的任…

医院信息系统集成平台—病人主索引(MPI)

随着医院信息化程度的不断深入,应用的不断扩展。在各级、各类医疗或者医院信息系统中作为医疗服务以及信息系统中信息发生源的主体――病人(Patient)的信息保持正确性与唯一性体现的越来越重要,随之产生MPI(Master Patient Index 病人主索引)的概念,随着区域级以及医院级多…

数学建模2023-A太阳镜厂代码认识

Pnp.column_stack((p1,new_column)) #得到每个镜子的x,y,z序列 nlnl/np.linalg.norm(nl) #得到单位法向量 for dx in np.arange(-W/2,W/20.1,delta_t): indices_in_circlenp.where(Dis[:,i]1)[0] #取周围半径 Di_bTb.T.dot(Di_d-B) #A镜上的点 从地面坐标系->B镜坐标系 总…

用 Python 抓取 bilibili 弹幕并分析!

01 实现思路 首先&#xff0c;利用哔哩哔哩的弹幕接口&#xff0c;把数据保存到本地。接着&#xff0c;对数据进行分词。最后&#xff0c;做了评论的可视化。 02 弹幕数据 平常我们在看视频时&#xff0c;弹幕是出现在视频上的。实际上在网页中&#xff0c;弹幕是被隐藏在源代码…

【熔断限流组件resilience4j和hystrix】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容起因resilience4j落地实现pom.xml依赖application.yml配置接口使用 hystrix 落地实现pom.xml依赖启动类上添加注解接口上使用 &#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟…