容器环境初始化
pod 由pod 镜像来提供,在pod 生命周期里容器主要分为两种:初始化容器和主容器
初始化容器一定要成功运行并退出,当初始化容器运行退出完了之后主容器开始和运行
主容器开始运行的时候,有两个探针:存活探针和就绪探针
Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。
初始化容器
在集群内部coredns提供解析服务,每当在集群内创建一个services时,就会创建一个corends解析
添加services定义
在添加services解析之前pod会一直处于就绪状态
添加了services解析之后
初始化容器的效果:
在打开myapp容器之前,首先通过init容器检测集群内的解析是否到位,如果解析没有到位,后续的容器不会启动 ,直到解析到位,环境就绪;容器在开启svc解析成功后,init容器退出,主容器运行。
kubelet可以选择是否执行在容器上运行的三种探针执行和做出反应:
回收创建的资源
创建存活探针
存活探针监测失败导致容器不断被重启
一旦存活探针报错,就认为该pod不存活,就会不断重启pod内的容器
将端口修改为80,就可以启动成功
就绪探针
此时还处于未就绪状态
没有定义就绪探针就代表就绪探针是成功的,默认成功
但是现在定义了就绪探针,就绪探针就不会成功
创建测试页面
创建svc
删除测试页面
就绪探针失败,容器未就绪
注:存活探针如果监测失败,会不断的去重启这个容器,让它达到一个自愈的功能;
就绪探针相当于一种健康检测,是k8s对应用上线和下线的一种优雅操作。