pod进阶

一、pod生命周期当中的状态(status):

1.running:运行中,pod已经分配到节点上且pod内容器正常运行,正常状态(readt1/1)

2.complete:完成之后退出,容器内的返回码是0表示正常运行结束,相当于echo $?

3.pending:挂载状态,pod已经创建好了但是没被分配到节点上。

出现pending状态如何解决:节点上的资源不足(释放资源或者换一个节点);节点上设置了污点标签,导致节点不能部署(取消污点即可);pv节点上没有合适的pv挂载点;磁盘空间不足(可能是自动或者手动);网络原因;防火墙没有防空策略导致节点不可用;swap交换分区没有关闭;hostport(节点端口)已经被占用;nodeport也会出现pending。

4.Failed失败:容器内的返回码是非零状态退出,进入失败状态,logs -f查看pod日志及desceibe pod查看pod详细情况也可以排查其错误原因。

5.Terminating(终止):pod正在删除中。

6.Unknow(未知):一般是集群出现问题;api出现问题;或者是api和调度器之间通信有问题;证书过期

7.imagePullBackOff:拉取镜像失败

8.CrashLoopBackOff:容器已经启动但是异常退出了,查看日志或者pod详细情况查找问题。

9.error:pod启动过程中报错,可日志查看原因

10.Podlniitializing:初始化中(pod中有初始化init容器)

11.Evict:pod被驱逐

二、pod资源限制:

1.k8s的cpu:

1:占用一个cpu   1000m

2:占两个cpu       2000m

0.5:半个cpu       500m

0.2:只能使用一个cpu的1/5   200m

0.1    最小单位,占cpu的10%   100m

2.内存:Ki   Mi  Gi  Ti

 3.如何在yaml文件中实现:

resouces资源限制     requests:软限制,最低的要求   limits:资源硬限制,最高限制。

生产过程中一般不需要做软限制

 三、pod的探针:又叫probe

1.探针是对容器执行定期的检查

2.探针有三种

启动探针(startupProbe):在容器启动时根据条件来判断容器是否启动成功,如果有启动探针和其它探针并列,要先启动启动探针,只有启动探针执行成功后续的探针才会执行,启动探针如果启动失败则整个容器判定为失败,pod也会进入失败状态;在整个容器的生命周期当中,只有启动探针在启动时执行,执行成功之后后续不再执行。

存活探针(livenessProbe):作用是探测容器是否运行正常,如果探测失败会根据pod的重启策略判断是否重启,将伴随整个pod的生命周期;除非pod不再了,存活探针也就不存在了。存活探针一般用于容器内的配置文件或者关键组件是否正常

就绪探针(readinessProbe):判断pod的状态是否进入ready,如果进入ready状态失败,service将会把这个pod的IP转发中移除,service不会把请求转发到这个pod。就绪探针没有检测成功或者失败,opd可能是running,但是ready一定是0/1。一般用于指定端口的服务,对外提供访问的业务。

存活探针和就绪探针都会伴随整个pod的生命周期。

3.probe的检查方法:

exec方法:进入容器内执行命令,命令的返回码是0就是成功,非零都是失败,使用场景是在容器内使用自定义命令来检测容器内的健康状况,判断关键配置文件是否存在,依赖环境是否完整。

tcpSocket方法:对指定容器内的IP地址进行tcp检测,tcp检测指的是三次握手和指的端口建立连接,如果三次握手和端口通讯建立连接正常则认为成功,判断容器的端口是否正常启动,端口是否处于监听状态。

httpGet方法:对容器内的IP+端口进行http请求,请求的方法就是get,响应码大于等于200且小于400都是成功;主要用于web容器。

4.诊断结果:

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

2》失败:

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

        就绪探针:Pod状态是Running,ready状态是notready,容器不可以提供正常的业务访问,就绪探针不会重启

        启动探针:Pod的状态是Running,ready状态是notready。启动探针探测容器失败,会重启容器

3》未知:诊断失败

5.探针和检测方法都可以联合使用

四、探针和检测方法试验:

exec方法:

httpGet方法:

多探针:

多个yaml写在一起,- - -三个杠表示分段、上一个yml结束,下面跟的是新的yml

​​​​

 五、lifecycle字段:

1.容器钩子:

postStart:容器启动钩子时立即执行的命令,执行容器内需要执行初始化模块等依赖环境

preStop:容器停止之前执行的任务,清理任务或者同步文件(导出容器内的数据)

2.钩子启动任务失效,pod能否进入正常状态:不能

  钩子停止任务失败,pod能否退出:报错

  钩子如果和探针在一起,启动失败的任务会不会影响到探针:会

3.容器的启动钩子优先级最高,大于启动探针,最后到才是存活和就绪探针

启动钩子和exec方法的试验如下:

 

 4.容器钩子不论是启动还是停止之前的命令,只能使用exec方法,其余两种不能使用。

5.启动钩子和停止钩子试验

 

6.习题

yaml文件

启动钩子和退出钩子

和节点挂载: /usr/shar/nginx/html/   节点的: /opt/node

exec 执行 要能再目录中看到开始和打印的结果

包含探针:

启动探针:

方法: exec 检测 /usr/shar/nginx/html/ index.html分件是否存在

存活探针

方法: httpGet

访问验证返回码是否正确

就绪探针:

tcpSocket:

监听容器的80端口是否正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值