首页 > 其他分享 >k8s使用存活(liveness)和就绪(readiness)探针的场景

k8s使用存活(liveness)和就绪(readiness)探针的场景

时间:2024-04-23 22:23:30浏览次数:33  
标签:readiness 就绪 容器 liveness 探针 存活 Pod k8s

k8s使用存活(liveness)和就绪(readiness)探针的场景

原创 zhuhb 运维笔谈 2024-04-22 14:13 上海 听全文

图片

存活探针(liveness)主要用于检测容器是否仍然运行正常。如果存活探针检测到容器已经停止运行或者陷入死锁状态,Kubernetes会根据配置的重启策略来决定是否重启该容器。这样的机制有助于确保应用程序始终保持在运行状态,即使在遇到问题时也能自动恢复。

就绪探针(readiness)则用于判断容器是否已经准备好接收流量。在容器刚刚启动时,可能需要一段时间来完成初始化操作,如加载配置、建立数据库连接等。在这段时间内,容器可能还没有准备好处理请求。通过配置就绪探针,Kubernetes可以等待容器完成初始化并变得可用后,才将其纳入服务的负载均衡中。这样,只有当容器真正准备好时,才会开始接收请求,从而避免了因容器未就绪而导致的服务中断或错误。

  1. 如果容器中的进程能够在遇到问题或不健康的情况下自行崩溃,则不一定需要存活探针(liveness); kubelet 将根据 Pod 的restartPolicy 自动执行正确的操作。

     

2.如果希望容器在探测失败时被杀死并重新启动,需要指定一个存活探针(liveness),并指定restartPolicy 为 Always 或 OnFailure。

3.如果要仅在探测成功时才开始向 Pod 发送流量,请指定就绪探针(readiness)。在这种情况下,就绪探针可能与存活探针相同,但是 spec 中的就绪探针的存在意味着 Pod 将在没有接收到任何流量的情况下启动,并且只有在探针探测成功后才开始接收流量,这点在高并发场景下非常有用。

4.如果希望容器能够自行维护,可以指定一个就绪探针(readiness),该探针检查与存活探针不同的端点。

5.如果只想在 Pod 被删除时能够排除请求,则不一定需要使用就绪探针;在删除 Pod 时,Pod 会自动将自身置于未完成状态,无论就绪探针是否存在。当等待 Pod 中的容器停止时,Pod 是处于未完成状态。

“运维笔谈”公众号,对话回复 “阿里云k8s” 可以获取 “阿里云Kubernetes项目实战手册”

如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方案或建议。相互学习,积累更多的经验和知识,让工作更加顺畅高效!

Kubernetes47 Kubernetes · 目录 上一篇Harbor的镜像保留规则简介下一篇部署kubernetes防火墙需要开启的端口号 阅读 164 ​   喜欢此内容的人还喜欢   K8s Node主机根分区磁盘使用占用过多原因探究     我看过的号 运维笔谈 不看的原因   Kubernetes集群部署     TechOps之窗 不看的原因   K8S集群下的GPU调度     singless 不看的原因   写留言       运维笔谈            

人划线

 

标签:readiness,就绪,容器,liveness,探针,存活,Pod,k8s
From: https://www.cnblogs.com/cheyunhua/p/18153912

相关文章

  • ubuntu安装docker及k8s
    一.安装Docker第一步:更新系统软件包索引sudoaptupdate第二步:安装必要依赖包sudoaptinstallapt-transport-httpsca-certificatescurlgnupglsb-releasesoftware-properties-common第三步:添加Docker官方GPG密钥curl-fsSLhttps://download.docker.com/linux/u......
  • 手把手教你掌握SeaTunnel k8s运行Zeta引擎本地模式的技巧
    转载自小虾米0.0导读:随着Kubernetes的普及和发展,越来越多的企业和团队开始使用Kubernetes来管理和部署应用程序。然而,Kubernetes的默认工作方式可能不是最佳的选择,尤其是在需要更高效、更可靠的应用程序部署和管理能力时。因此,SeaTunnel提供了一种运行Zeta引擎(local-mode模式)......
  • K8s的介绍和特性
    K8s是一个开源的,用来管理云平台中“多个主机的容器化”的应用。k8S的目标是:让部署容器化的应用简单并且高效,K8s提供了应用部署,规划,更新,维护的一种机制。K8s是google开源的一个容器编排引擎,他支持自动化部署,大规模可伸缩,应用容器化管理。在生产环境中部署一个应用程序时,通常要部......
  • k8s 操作命令-合集List
    k8s操作命令合集List ---------------k8s基本常用的命令-----------------------------------------1、创建资源kubectlcreatedeploymentnginx--image=nginx2、列出资源kubectlgetpods3、描述资源kubectldescribepod<pod-name>4、删除资源......
  • k8s serviceIP: range is full
    创建svc报错Internalerroroccurred:failedtoallocateaserviceIP:rangeisfullk8ssvc的网段默认ip为256个,在master节点的/etc/kubernetes/manifests/kube-apiserver.yaml和/etc/kubernetes/manifests/kube-controller-manager.yaml中的service-cluster-ip-range进行......
  • k8s node节点报错 dial tcp 127.0.0.1:8080: connect: connection refused
    前言在搭建好kubernetes环境后,master节点拥有control-plane权限,可以正常使用kubectl。但其他node节点无法使用kubectl命令,即使同步过去/root/.kube/config文件到各个node节点上,也不行。解决检查KUBECONFIG变量:确保KUBECONFIG环境变量正确设置。KUBECONFIG......
  • ingress-nginx-controller在k8s中的部署和使用
    点击查看代码下载deploy文件https://github.com/kubernetes/ingress-nginx/blob/controller-v1.9.6/deploy/static/provider/cloud/deploy.yaml修改deploy文件:有如下几处可按需修改:DaemonSet:修改Deployment为DaemonSet,移除strategy字段;hostNetwork:使用宿主机的网络;......
  • 使用kubeadm 快速部署k8s
     卸载之前的dockeryumremove docker-cedocker-ce-clicontainerd.io 安装dockersudoyuminstall-y docker-cedocker-ce-clicontainerd.io  安装docker$wgethttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo-O/etc/yum.repos.d/do......
  • k8s集群部署
    Kubernetes-1.28.2集群介绍及搭建一、Kubernetes概述1、什么是Kubernetes?K8S的全称为Kubernetes。用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。1.23.10以前(包含)docker1.24.0containerd中间件k8s和dockerdockers-shim可以......
  • k8s join失败的问题汇总
     环境:centos7.6;kubeadm安装k8s集群(版本v1.26.0);容器引擎对应cri-dockerd-0.3.1-3.el7.x86_64.rpm(这里其实还发生一件事,装k8s1.25的时候,容器引擎太低,导致无法识别,于是换了个新版本的)报错一:FileContent--proc-sys-net-ipv4-ip_forward]:/proc/sys/net/ipv4/ip_forwardcont......