k8s-liveness和readness详解
最近因为查找问题,看了一些k8s的liveness和readiness配置,这两种都是k8s探针用于健康检测的,是k8s很重要的一个特性,在此记录一下,留作备忘。
概述
健康检查(health check)是用于检测应用实例是否正常工作,对应用状态的监控,保障业务高可用的一种机制。
k8s健康检测主要分为以下三种:
- 存活性探测(Liveness probes) :主要是探测应用是否还活着。如果检测到应用没有存活就杀掉当前pod并重启。
- 就绪性探测(Readiness probes):只要是探测应用是否准备好接受请求访问,如果检测应用准备好了,就把请求流量放进来;反之,则把应用节点从注册中心拿掉。
- 启动探测(Startup Probes):对于旧应用需要更长的启动时间,这时候既不想重启应用也不想让请求访问进来,可以设置启动探测给足够的启动时间保证应用启动成功。
Liveness Probes config和Readiness Probes config
k8s示例配置
readinessProbe:enabled: truehttpGet:port: 8080scheme: HTTPinitialDelaySeconds: 30timeoutSeconds: 35 periodSeconds: 30successThreshold: 1failureThreshold: 3livenessProbe:enabled: truehttpGet:port: 8080scheme: HTTPinitialDelaySeconds: 60timeoutSeconds: 35periodSeconds: 30successThreshold: 1failureThreshold: 3
initialDelaySeconds 表示延迟30S开始第一次探测,默认值是0,最小值是0
timeoutSeconds 表示每次探测的超时时间,35S后如果没返回结果就认为超时失败,默认值是1,最小值是1
successThreshold 表示在探测失败后,最小的连续成功被认为是成功的,默认值是1,最小值是1
failureThreshold 表示当探测失败时,Kubernetes将在认为失败前尝试failureThreshold次数。默认值是3,最小值是1;Liveness认为失败的操作是重启pod,而readiness认为失败的操作是把pod标记为 Unready
periodSeconds 表示多久进行一次探测,默认是10S,最小值是1
Startup Probes config
k8s示例配置
startupProbe:httpGet:path: /healthzport: liveness-portfailureThreshold: 30periodSeconds: 10
由于启动探测,应用最多有5分钟(30 * 10 = 300秒)来完成它的启动。一旦启动探测成功一次,活性探测(Livenees probes)将接管以提供对容器死锁的快速响应。如果启动探测从未成功,容器将在300秒后被杀死,并遵循pod的重启策略 restartPolicy
restartPolicy 主要有以下三种策略
- Always: 当容器终止退出后,总是重启容器,默认策略
- Onfailure: 当容器异常退出后(退出码非0)时,才重启容器
- Never: 当容器终止退出时,不重启容器
每次探测都是以下三种结果之一:
- 成功:容器通过了探测
- 失败:容器未通过探测
- 未知:容器探测失败,不采取任何操作
liveness和readiness对比及区别
liveness | readiness | |
---|---|---|
配置和参数 | 相同 | 相同 |
探测失败后的行为 | 重启容器 | 把容器标记为Unready,不接受请求 |
依赖性 | 二者是相互独立,没有依赖,既可以独立使用,也可以同时使用 | 同liveness |
作用 | 判断是否需要重启以实现自愈 | 判断容器是否准备好对外提供服务 |
初始值 | 成功,防止应用在没成功启动前,被误杀 | 失败,防止应用还没准备好,有请求进来 |
默认值 | 二者没配置的话,默认状态都是成功 | |
返回值 | 返回值在[200,400)范围内认为成功,返回值5xx认为失败 | 同liveness |
二者不能相互替代,根据实际情况,配合使用。只配置了readiness是无法触发容器重启的;只配置了liveness,可能应用还没准备好,导致请求失败,status是running,Ready是0/1。
可能的最佳实践
k8s可以和springboot actuator结合使用,运用合理的配置,监控应用的状态,提供报警功能,以保证应用的高可用性,比如/health或/actuator/health。
探讨一下liveness和readiness的更多的可能使用场景
- 扩缩容
- 灰度发布
- …
如果你有更好更多的有关以上健康检测的使用场景,欢迎评论或私信我,探讨交流一下
本文第一时间发布在微信公众号:蜗牛开发笔记,
如果想获取更多的Java开发笔记,请关注微信公众号,您的关注是我最大的动力,谢谢!
k8s-liveness和readness详解相关推荐
- 【云原生之k8s】k8s管理工具kubectl详解
[云原生之k8s]k8s管理工具kubectl详解 前言 一.陈述式管理 (1)陈述式资源管理方法 (2)k8s相关信息查看 ①查看版本信息 ②查看节点信息 ③查看资源对象简写 ④查看集群信息 ⑤配置 ...
- Kubernetes K8S之存储PV-PVC详解
K8S之存储PV-PVC概述与说明,并详解常用PV-PVC示例 概述 与管理计算实例相比,管理存储是一个明显的问题.PersistentVolume子系统为用户和管理员提供了一个API,该API从如何 ...
- Kubernetes K8S之存储Volume详解
K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...
- k8s安装和部署详解
k8s安装和部署详解 文章目录 k8s安装和部署详解 kubernetes官方提供的三种部署方式 minikube kubeadm 二进制包 使用kubeadm方式安装 1.准备环境 2.确认dock ...
- Kubernetes K8S之存储Secret详解
Kubernetes K8S之存储Secret详解 Secret概述 Secret类型 Service Account Opaque Secret 创建secret 将Secret挂载到Volume中 ...
- k8s架构及服务详解
1.容器及其三要素 1.1.容器是什么 容器的本质是一种特殊的进程. 在linux容器中有三个重要的概念:Namespace.Cgroups.rootfs. Namespace做隔离,让进程只能看到N ...
- Kubernetes(k8s) YAML文件详解
文章目录 一.yaml文件简介 1)yaml的语法规则: 2)在Kubernetes中,只需要知道两种结构类型即可: 二.yaml常见语法 1)apiVersion 2)kind 3)metadata ...
- k8s volume mysql_Kubernetes K8S之存储Volume详解
K8S之存储Volume概述与说明,并详解常用Volume示例 1. 主机配置规划 2. Volume概述 在容器中的文件在磁盘上是临时存放的,当容器关闭时这些临时文件也会被一并清除.这给容器中运行的 ...
- k8s、ServiceAccount权限详解、RBAC 详解(基于角色的访问控制),常用操作指令
文章目录 Service Account应用示例 RBAC 详解(基于角色的访问控制) 创建一个角色(role)---权限 实验二 常用操作指令 Service Account应用示例 概念图权限关系 ...
- K8S控制器之Deployment详解及配置。
目录: 一,引入Deployment 二,Deployment支持的功能 三,Deployment资源清单文件详解 四,滚动更新及回滚实验 五,弹性伸缩实验 一,引入Deployment 对于kube ...
最新文章
- java前台传多个id用什么接收_前端js传多个id 到java后台的处理方式
- java对象转为json字符串
- 转: ubuntu apt-get 与 aptitude 用法与区别
- 你了解HTTPS工作原理吗?
- 4.python合并excel多个sheet
- freopen()函数在ACM中的使用
- linux ntp手动授时,关于我校NTP授时服务的使用说明
- Android自定义Toast
- 如何搭建maven中,分布式工程
- [SharePoint教程系列] 0.SharePoint 2016介绍
- 天正电气lisp是什么文件_教大家如何使用天正电气软件绘制图纸
- js 如何计算当年清明节日期
- 联想拯救者笔记本安装ubuntu系统不能正常关机
- qt 移动文件夹到另一目录下
- laravel5.5 The page has expired due to inactivity. Please refresh and try again.
- Zabbix邮件告警配置
- 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】
- Word文档密码忘记了
- 2022年PMP考试地点一般会在哪里?
- Serv-U 常见问题
热门文章
- 大学生数学竞赛试题荟萃 (更新至2017年10月28日)
- Redundant Paths(边双连通分量缩点+思维构造)
- xbox360 FSD 安装游戏教程(Freestyle3)
- ERP Qt实现之路 前言
- Zabbix安装配置详解
- [项目管理-2]:软硬件项目管理 - 干系人管理、实践活动、常见工具
- 如何设计财务对账系统 —— 从0到1搭建对账中心实战
- 解决R中installs显示Warning: unable to access index for
- oracle创建用户'表空间配额,牛刀小试:Oracle 用户表空间配额(quota )控制之随心所欲...
- Java集合框架详解笔记及其代码