k8s-pod生命周期 4

容器环境初始化

pod 由pod 镜像来提供,在pod 生命周期里容器主要分为两种:初始化容器和主容器

初始化容器一定要成功运行并退出,当初始化容器运行退出完了之后主容器开始和运行

主容器开始运行的时候,有两个探针:存活探针和就绪探针

k8s-pod生命周期 4_第1张图片k8s-pod生命周期 4_第2张图片

Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。

k8s-pod生命周期 4_第3张图片

初始化容器

k8s-pod生命周期 4_第4张图片k8s-pod生命周期 4_第5张图片k8s-pod生命周期 4_第6张图片

在集群内部coredns提供解析服务,每当在集群内创建一个services时,就会创建一个corends解析

添加services定义

k8s-pod生命周期 4_第7张图片k8s-pod生命周期 4_第8张图片

在添加services解析之前pod会一直处于就绪状态

添加了services解析之后

k8s-pod生命周期 4_第9张图片

初始化容器的效果:

在打开myapp容器之前,首先通过init容器检测集群内的解析是否到位,如果解析没有到位,后续的容器不会启动 ,直到解析到位,环境就绪;容器在开启svc解析成功后,init容器退出,主容器运行。


k8s-pod生命周期 4_第10张图片

kubelet可以选择是否执行在容器上运行的三种探针执行和做出反应:

k8s-pod生命周期 4_第11张图片

回收创建的资源k8s-pod生命周期 4_第12张图片

创建存活探针

k8s-pod生命周期 4_第13张图片

存活探针监测失败导致容器不断被重启

k8s-pod生命周期 4_第14张图片

一旦存活探针报错,就认为该pod不存活,就会不断重启pod内的容器

将端口修改为80,就可以启动成功


就绪探针

k8s-pod生命周期 4_第15张图片

此时还处于未就绪状态k8s-pod生命周期 4_第16张图片k8s-pod生命周期 4_第17张图片

没有定义就绪探针就代表就绪探针是成功的,默认成功

但是现在定义了就绪探针,就绪探针就不会成功

创建测试页面

k8s-pod生命周期 4_第18张图片

创建svc

k8s-pod生命周期 4_第19张图片

删除测试页面

就绪探针失败,容器未就绪

k8s-pod生命周期 4_第20张图片

注:存活探针如果监测失败,会不断的去重启这个容器,让它达到一个自愈的功能;

就绪探针相当于一种健康检测,是k8s对应用上线和下线的一种优雅操作。

你可能感兴趣的:(kubernetes,容器,云原生)