kubernetes的基本单位Pod详解( 六 )


文章插图
 
执行 nginx -s stop 命令后,容器就会退出,因为 Nginx 容器是持续提供服务的,服务停止后,容器就异常了,然后 kubernetes 又会重新拉起一个容器,在这个过程当中,我们使用 kubectl get pod 命令就会发现,容器的状态先变为 Completed,然后变为 CrashLoopBackOff,最后变为 Running 。

kubernetes的基本单位Pod详解

文章插图
 
对于初学者来讲,总是分不清存活探针和就绪探针的区别,什么情况下该使用存活探针?什么情况下应该使用就绪探针?我给的建议如下:
  • 如果容器中的进程能够在遇到问题或异常的情况下自行崩溃,就像刚才的 Nginx 容器,那么不一定需要存活探针,kubelet 会根据 Pod 的重启策略自动执行正确的操作 。
  • 如果想在探测失败时终止并重启容器,则可以指定存活探针,并将重启策略设置为 Always 或 OnFailure 。
  • 如果只想在探针成功时才对 Pod 发送网络请求,则可以指定就绪探针,例如 HttpGet 。
  • 如果容器需要在启动期间处理大型数据、配置文件或迁移,就使用就绪探针 。
对于每种探针,还可以设置 5 个参数:
  • initialDelaySeconds:启动容器后首次监控检测的等待时间,单位为秒 。
  • timeoutSeconds:发送监控检测请求后等待响应的超时时间,单位为秒,如果超时就认为探测失败,默认值为 10s 。
  • periodSeconds:探针的执行周期,默认 10s 执行一次 。
  • successThreshold:如果出现失败,则需要连续探测成功多次才能确认诊断成功 。默认值为1.
  • failureThreshold:如果出现失败,则要连续失败多次才重启 Pod(对于存活探针)或标记为 Unready(对于就绪探针) 。默认值为3 。
具体设置方法如下:
livenessProbe/readinessProbe:exec/tcpSocket/httpGet:initialDelaySeconds: NumbertimeoutSeconds: NumberperiodSeconds: NumbersuccessThreshold: NumberfailureThreshold: Number总结这篇文章我们主要讲了 Pod 的增删改查,Pod 与容器的关系,如何组织容器,Pod 的生命周期及对应事件,以及 Pod 的健康检查机制 。




推荐阅读