pod进阶版(1)

pod的相关知识

k8s的pad重启策略:

Always deployment的yaml文件只能是Always pod的yaml三种模式都可以。
Onfailure:只有异常退出状态码非0才会重启。正常退出不重启。
Never:非正常退出和非正常退出都不重启。
容器的退出了pod才会重启。
pod可以有多个容器,只要有一个容器退出,整个pod都会重启,pod内的所有容器都会重启。


docekr的重启策略:

docker的默认策略是Never。
on-failure:非正常退出,才会重启容器。
always:只要容器退出都会重启。
unless-stopped:只要退出就会重启,docker守护进程时已经停止的容器,不会重启。


单机部署:docker就够用了
集群化部署:k8s部署

yaml模板文件快速生成的三种方式

可以生成pod、service、deployment等yaml文件

1、手写

2、对已有资源进行导出

kubectl get deployments.apps nginx -o yaml > /opt/lyw.yaml

3、通过api的组件,使对象不执行命令生成文件

kubectl create deployment nginx1 --image=nginx:1.22 --dry-run=client -o yaml >  /opt/test1.yaml
--dry-run=client 只是调用api的对象不执行命令

pod的状态:

pod状态简述说明说明
pending挂起状态

pod已被创建,但是尚未被分配到运行的node节点

(原因:节点资源不够或等待其他pod节点调度)

running运行中pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,稳定。
completed 成功运行完毕并退出容器内部的进程运行完毕,正常退出,没有发生错误。
successded
faild运行错误并退出

pod中的容器非正常退出,发生了错误。

需要通过查看详细和日志来定位问题。

Unkown未知

由于某些原因,k8s集群无法获取pod的状态。

APIserver出了问题

terminating在终止中

这个pod正在被删除,里面的容器正在终止。

终止过程中,资源回收、垃圾清理、以及终止过程中需要执行的命令。

crashloopbackoffpod当中的容器退出,kubelet正在重启
imagepullbackoff正在重试拉取镜像
errimagepull

镜像拉取出错

(1、网速太慢  2、镜像名字写错了  3、镜像仓库挂了)

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

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

1、request:需要的资源
2、limit    最高占用系统多少资源
   limit需要多少,最多也只能占用这么多

两个限制(cpu、内存):

cpu :
    cpu的个数限制:
    1 2 0.5 0.2 0.3  1:可以占用1个cpu  0.1是最小单位(要么整数,要么就是小数点后只能跟一位)
   cpu时间分片原理:
        cpu时间分片: 通过周期性的轮流分配cpu时间给各个进程。多个进程可以在cpu上交替,在k8s中就是占用cpu的比率,单位:m(millicores)100m是最小单位(等于0.1)
内存:Ki 字节   Mi-mb   Gi-gb  Ti-tb

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

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

镜像默认策略:
IfnotPresent: 如果本地镜像有,就不拉取,本地没有才会去镜像仓库拉取。默认策略
Always: 不论镜像是否存在,创建时(重启) 都会重新拉取镜像
Never:  仅仅使用本地镜像,不进行拉取镜像

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

pod探针

pod的容器健康检查------探针

探针probe、k8s对容器的定期检查,诊断。

探针的三种规则:

存活探针

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

所有的探针策略伴随整个pod的生命周期。

就绪探针

探测容器是否进入ready状态,并做好接受请求的准备。探测失败 READY 0/1 没有进入ready状态。

service会把这个资源对象的端点从当中踢出,service也不会把请求转发到这个pod。

启动探针

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

在一个容器当中的可以有多个探针。启动探针:只在容器启动时探测。

Probe的检查方法:

1、exec探针:  在容器内部执行命令,如果命令的返回码是0,表示成功。
适用于需要在容器内部自定义命令来检查容器的健康情况。

2、httpGet:对指定ip+端口的容器发送一个httpget的请求。响应状态码大于等于200,小于400都是成功。
适用于检查容器是否能响应http的请求,web容器(nginx,tomcat)

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

诊断结果:
1、成功 容器通过了,正常运行
2、失败 存活探针将会重启
3、未知状态 

exec探针

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centosimagePullPolicy: Nevercommand: ["/bin/bash","-c","touch /opt/123.txt; sleep 3600"]livenessProbe:exec:command: ["/usr/bin/test","-e","/opt/123.txt"]initialDelaySeconds: 3
#核心指标;表示容器启动之后多少秒来进行探测,时间不要设置的太短,可能会导致无效的探测periodSeconds: 2
#核心指标;表示探针探测的间隔时间。每隔多少秒进行检查。根据应用的延迟敏感度,这个应用非常重要,是核心组件。failureThreshold: 2
#核心指标;表示如果探测失败,失败几次之后,把容器标记为不健康。successThreshold: 1
#表示只要成功一次就标记为就绪,标记为健康,ready。只能为1timeoutSeconds: 1
#表示每次探测的超时时间,就是探测这个过程耗时,小于间隔时间,在这个秒数没必须完成探测。

httpGet探针

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:httpGet:port: 80path: /index.htmlinitialDelaySeconds: 4periodSeconds: 2

正常示范

错误示范1

错误示范2

tcpSocket探针

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:tcpSocket:port: 81initialDelaySeconds: 4periodSeconds: 2

总结

探针:
存活探针:检测失败之后,会杀死容器,然后重启。
探针将伴随整个容器的生命周期
exec 相当于执行了一个shell命令: 容器里面执行
shell命令执行成功:
返回码:0表示成功
成功一次就是探测成功


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

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

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

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

相关文章

Pixi.js的魅力

摘要:官网 Web开发的时代,图形和动画已经成为了吸引用户注意力的重要手段之一。而 Pixi.js 作为一款高效、易用的2D渲染引擎,已经成为了许多开发者的首选~~ 项目中,有一些图像的处理操作(3D图,2D图都有&…

DataGrip 数据库备份

一、备份 1、找到需要被备份的数据库demo,右键>Import/Export>Export with mysqldump 2、配置路径 点击run,等待完成 导出成功 二、还原 选择 需要导入的数据库>右键>Import/Export>Restore with ‘mysql’ 点击run,刷…

如何本地搭建DolphinScheduler并无公网ip远程访问管理界面

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

医疗设备产生谐波对配电系统危害有哪些

1.对电网的影响 电网中的谐波会增加系统损耗,使设备发热,影响设备使用寿命。此外当并联的无功补偿电容器容抗与系统感抗匹配时,将发生n次并联谐振,造成电容器组的过电压和过电流。当基波频率为时,谐振频率&#xff0c…

36V到80V降5V1A电源芯片WT6039

36V到80V降5V1A电源芯片WT6039 宽电压12V到90V的降压DC-DC转换器WT6039,功能强大,使用广泛。 WT6039是一款功能非常强大的降压DC-DC转换器芯片,它在12V到90V的宽电压范围内都能正常工作。WT6039不仅具有使能开关控制、参考电源、误差放大器等…

Apache Doris 2.0.2 安装步骤 Centos8

Linux 操作系统版本需求 Linux 系统版本当前系统版本CentOS7.1 及以上CentOS8Ubuntu16.04 及以上- 软件需求 软件版本当前版本Java1.81.8.0_391GCC4.8.2 及以上gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) 1、查看操作系统版本 方法 1:使用命令行 打开终端或…

Linux Ubuntu环境部署SVN服务并结合内网穿透实现公网访问内网资料库

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

软文写作三大原则与技巧,媒介盒子分享

网络技术的快速发展带来传播环境的巨变,软文已经成为各大企业宣传的主要形式之一。而软文广告的核心就是其文案,一个好的软文不仅能够传达品牌理念,还能吸引用户了解品牌,提高转化率,今天媒介盒子就来和大家聊聊软文写…

NVIDIA 正式发布中国特供 RTX 4090D,减量不减价刀法再进化

随着中国特供 RTX 4090D 显卡发布,老美禁售导致的 NVIDIA 旗舰游戏显卡断供、涨价风波注定要结束了。 就在上周四,NVIDIA 正式发布了应对老美禁令的中国特供版 RTX 4090D 显卡。 别的不说,前段时间疯狂炒作、高价囤货 RTX 4090 的商贩们首先…

实现文件拖拽上传的功能

1 先来看一下效果 2 我们来看一下代码执行的结果: 我们创建目标的容器盒子 和可以展示数据的ul 监听进入目前盒子的事件 3 文件进入目标容器中解析文件

图像分割实战-系列教程10:U2NET显著性检测实战2

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 U2NET显著性检测实战2 5、残差Unet模块 class RSU7(nn.Module):#UNet07DRES…

LLM之RAG实战(十二)| 在RAG管道中实现上下文压缩和过滤

在RAG中可能面临的最大问题之一是检索器应该检索什么内容? ​ 实际使用中,检索到的上下文并不完全有用,可能检索处理较大的块中只有非常小的一部分与答案相关,还可能对于一个特定的问题需要来自多个块合并来得到答案。 一…