【模块一】kubernetes容器编排进阶实战之pod生命周期、探针简介、类型及示例

kubernetes pod生命周期、探针简介、类型及示例

kubernetes pod生命周期

  • pod的生命周期(pod lifecycle),从pod start时候可以配置postStart检测,运行过程中可以配置livenessProbe和 readinessProbe,最后在 stop前可以配置preStop操作

探针简介

  • 探针是由 kubelet 对容器执行的定期诊断,以保证Pod的状态始终处于运行状态,要执行诊断,kubelet 调用由容器实现的Handler(处理程序),也成为Hook(钩子),有三种类型的处理程序:

    • ExecAction #在容器内执行指定命令,如果命令退出时返回码为0则认为诊断成功。

    • TCPSocketAction #对指定端口上的容器的IP地址进行TCP检查,如果端口打开,则诊断被认为是成功的。

    • HTTPGetAction:#对指定的端口和路径上的容器的IP地址执行HTTPGet请求,如果响应的状态码大于等于200且小于 400,则诊断被认为是成功的。

  • 每次探测都将获得以下三种结果之一:

    • 成功:容器通过了诊断。

    • 失败:容器未通过诊断。

    • 未知:诊断失败,因此不会采取任何行动。

 

Pod重启策略与镜像拉取策略

Pod重启策略:Pod一旦配置探针,在检测失败时候,会基于restartPolicy对Pod进行下一步操作:

  • restartPolicy (容器重启策略):

    • Always:当容器异常时,k8s自动重启该容器,ReplicationController/Replicaset/Deployment,默认为Always。

    • OnFailure:当容器失败时(容器停止运行且退出码不为0),k8s自动重启该容器。

    • Never:不论容器运行状态如何都不会重启该容器,Job或CronJob。

  • imagePullPolicy (镜像拉取策略):

    • IfNotPresent:node节点没有此镜像就去指定的镜像仓库拉取,node有就使用node本地镜像。

    • Always:每次重建pod都会重新拉取镜像

    • Never:从不到镜像中心拉取镜像,只使用本地镜像

探针类型

  • startupProbe: #启动探针,kubernetes v1.16引入

    • 判断容器内的应用程序是否已启动完成,如果配置了启动探测,则会先禁用所有其它的探测,直到startupProbe检测成功为止,如果startupProbe探测失败,则kubelet将杀死容器,容器将按照重启策略进行下一步操作,如果容器没有提供启动探测,则默认状态为成功

  • livenessProbe: #存活探针

    • 检测容器容器是否正在运行,如果存活探测失败,则kubelet会杀死容器,并且容器将受到其重启策略的影响,如果容器不提供存活探针,则默认状态为 Success,livenessProbe用于控制是否重启pod。

  • readinessProbe: #就绪探针

    • 如果就绪探测失败,端点控制器将从与Pod匹配的所有Service的端点中删除该Pod的IP地址,初始延迟之前的就绪状态默认为Failure(失败),如果容器不提供就绪探针,则默认状态为 Success,readinessProbe用于控制pod是否添加至service。

探针配置参数

  • initialDelaySeconds: 120 #初始化延迟时间,告诉kubelet在执行第一次探测前应该等待多少秒,默认是0秒,最小值是0

  • periodSeconds: 60 #探测周期间隔时间,指定了kubelet应该每多少秒秒执行一次存活探测,默认是 10 秒。最小值是 1

  • timeoutSeconds: 5 #单次探测超时时间,探测的超时后等待多少秒,默认值是1秒,最小值是1。

  • successThreshold: 1 #从失败转为成功的重试次数,探测器在失败后,被视为成功的最小连续成功数,默认值是1,存活探测的这个值必须是1,最小值是

    1。

  • failureThreshold: 3 #从成功转为失败的重试次数,当Pod启动了并且探测到失败,Kubernetes的重试次数,存活探测情况下的放弃就意味着重新启动容器,就绪探测情况下的放弃Pod 会被打上未就绪的标签,默认值是3,最小值是1。

探针http配置参数:

HTTP 探测器可以在 httpGet 上配置额外的字段:

  • host: #连接使用的主机名,默认是Pod的 IP,也可以在HTTP头中设置 “Host” 来代替。

  • scheme: http #用于设置连接主机的方式(HTTP 还是 HTTPS),默认是 HTTP。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值