Kubernetes详解(十六)——Pod容器探测

简介: Kubernetes详解(十六)——Pod容器探测

今天继续给大家介绍Linux运维相关知识,本文主要内容是Pod容器探测。

一、Pod生命周期重要行为
在Pod的生命周期中,有如下几个重要行为:
1、初始化容器
初始化容器即在应用程序的主容器在启动前要运行的容器,该容器的任务通常是为主容器的启动进行一些预置操作。初始化容器具有以下两点特征:
(1)初始化容器必须运行完成直至结束,如果初始化容器阶段运行失败,那么Kubernetes需要重启并等待初始化完成,除非在Pod的spec.restartPolicy中设置为Never对该项进行限制。
(2)每个初始化容器必须按照定义的顺序串行运行。
2、容器探测
容器探测是Pod在运行时,由Kubelet对容器进行周期性的健康诊断,诊断的具体操作由容器的处理器进行定义。尽管Kubernetes使用Controller来管理Pod,当Pod启动发生错误时会重新启动,但是Pod中容器的部分非错误性故障却无法使得Controller识别。例如,Pod中的容器虽然工作正常,但是80端口无法提供Web服务等。在这种情况下,就需要我们通过容器探测,进一步探测容器所处的状态,并根据容器的健康情况决定对容器的重启等操作。

二、容器探测分类
按照容器探测的方法进行分类,容器探测可以分为以下三种:
1、ExecAction
在容器内执行指定命令,如果该命令返回为0表示健康,否则即为不健康状态,这种检测方式为Exec探测。
2、HTTPGetAction
通过向容器的指定路径发起HTTP Get的请求,如果返回2xx或者3xx的状态码则表示健康,否则即为不健康,这种检测方式为HTTP的探测。
3、TCPSocketAction
通过与容器的某端口尝试建立TCP链接,如果能够成功建立链接,则处于健康状态,如果不能则视为不健康,这种检测方式为TCP的探测。
按照容器探测的类型进行分类,容器探测可以分为以下两种:
1、存活性探测
存活性探测用于判定Pod是否处于“健康”状态,如果判定Pod中的容器处于不健康状态,kubectl将会杀死容器并根据重启策略来决定是否对该容器进行重启。未定义存活性检测的容器的默认状态为Success。
2、就绪性探测
就绪性探测用于判断容器是否准备就绪,是否可以为外部提供服务。如果就绪性探测失败,Pod的端点控制器(如Service)就会将该Pod的IP移除,从而使得外部流量避免访问该未就绪的容器,当就绪性检测成功后,其IP会被添加回来。
一般而言,灵活性探测和就绪性探测的选择要基于以下原则:
1、如果容器能够在遇到问题或者不能提供服务的情况下自行崩溃,则不需要使用存活探针,Kubernetes集群本身即可完成这样的操作。
2、如果希望容器在探测处于不健康状态时能够被杀死并重新启动,那么可以指定一个存活性探针,并且指定restartPolicy为Always或者是OnFailure。
3、如果要仅在探测成功后才向Pod发送数据流量,则应该使用就绪性探测。就绪性探测会使得Pod启动,并继续完成其初始化过程,直至Pod初始化完成后,才开始向Pod内引导数据流量。
4、如果希望容器能够自行维护,则可以合理的指定就绪探测和存活探测,并分别探测不同的端点。
5、如果想在Pod容器被删除后终止请求,则无需使用任何探针,因为Kubernetes集群会自动帮助我们做到这一点。

三、容器的重启策略
在Pod.spec中,有一个resatartPolicy字段,该字段适用于所有Pod中容器,其值可以设置为Always、OnFailure和Never。Always是默认设置,表示一旦Pod对象终止,就立即重启;OnFailure表示仅在Pod对象出现错误时才进行重启;而Never则表示从不重启。
如果Pod中的容器需要重启,那么其第一次重启时会根据需要,立即重启,之后的重启操作由kubelet延迟一段时间后进行。之后的重启操作时长依次为10秒、20秒、40秒……并依次倍增,直至达到300秒的最大延迟时间。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/124286708

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
1037 108
|
5月前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
574 115
|
5月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
640 2
|
11月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
应用服务中间件 调度 nginx
Kubernetes-项目中pod调度使用法则
前言kubernetes中部署的pod默认根据资源使用情况自动调度到某个节点。可在实际项目的使用场景中都会有更细粒度的调度需求,比如:某些pod调度到指定主机、某几个相关的服务的pod最好调度到一个节点上、Master节点不允许某些pod调度等。
2201 0
|
Kubernetes 应用服务中间件 调度
Kubernetes之Pod调度
Kubernetes调度器根据特定的算法与策略将pod调度到工作节点上。在默认情况下,Kubernetes调度器可以满足绝大多数需求,例如调度pod到资源充足的节点上运行,或调度pod分散到不同节点使集群节点资源均衡等。
1604 0
|
Kubernetes 应用服务中间件 调度
Kubernetes之Pod调度
本文讲的是Kubernetes之Pod调度【编者的话】Kubernetes调度器根据特定的算法与策略将pod调度到工作节点上。在默认情况下,Kubernetes调度器可以满足绝大多数需求,例如调度pod到资源充足的节点上运行,或调度pod分散到不同节点使集群节点资源均衡等。
2969 0
|
4月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
457 1

推荐镜像

更多