最近因为查找问题,看了一些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详解相关推荐

  1. 【云原生之k8s】k8s管理工具kubectl详解

    [云原生之k8s]k8s管理工具kubectl详解 前言 一.陈述式管理 (1)陈述式资源管理方法 (2)k8s相关信息查看 ①查看版本信息 ②查看节点信息 ③查看资源对象简写 ④查看集群信息 ⑤配置 ...

  2. Kubernetes K8S之存储PV-PVC详解

    K8S之存储PV-PVC概述与说明,并详解常用PV-PVC示例 概述 与管理计算实例相比,管理存储是一个明显的问题.PersistentVolume子系统为用户和管理员提供了一个API,该API从如何 ...

  3. Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C ...

  4. k8s安装和部署详解

    k8s安装和部署详解 文章目录 k8s安装和部署详解 kubernetes官方提供的三种部署方式 minikube kubeadm 二进制包 使用kubeadm方式安装 1.准备环境 2.确认dock ...

  5. Kubernetes K8S之存储Secret详解

    Kubernetes K8S之存储Secret详解 Secret概述 Secret类型 Service Account Opaque Secret 创建secret 将Secret挂载到Volume中 ...

  6. k8s架构及服务详解

    1.容器及其三要素 1.1.容器是什么 容器的本质是一种特殊的进程. 在linux容器中有三个重要的概念:Namespace.Cgroups.rootfs. Namespace做隔离,让进程只能看到N ...

  7. Kubernetes(k8s) YAML文件详解

    文章目录 一.yaml文件简介 1)yaml的语法规则: 2)在Kubernetes中,只需要知道两种结构类型即可: 二.yaml常见语法 1)apiVersion 2)kind 3)metadata ...

  8. k8s volume mysql_Kubernetes K8S之存储Volume详解

    K8S之存储Volume概述与说明,并详解常用Volume示例 1. 主机配置规划 2. Volume概述 在容器中的文件在磁盘上是临时存放的,当容器关闭时这些临时文件也会被一并清除.这给容器中运行的 ...

  9. k8s、ServiceAccount权限详解、RBAC 详解(基于角色的访问控制),常用操作指令

    文章目录 Service Account应用示例 RBAC 详解(基于角色的访问控制) 创建一个角色(role)---权限 实验二 常用操作指令 Service Account应用示例 概念图权限关系 ...

  10. K8S控制器之Deployment详解及配置。

    目录: 一,引入Deployment 二,Deployment支持的功能 三,Deployment资源清单文件详解 四,滚动更新及回滚实验 五,弹性伸缩实验 一,引入Deployment 对于kube ...

最新文章

  1. java前台传多个id用什么接收_前端js传多个id 到java后台的处理方式
  2. java对象转为json字符串
  3. 转: ubuntu apt-get 与 aptitude 用法与区别
  4. 你了解HTTPS工作原理吗?
  5. 4.python合并excel多个sheet
  6. freopen()函数在ACM中的使用
  7. linux ntp手动授时,关于我校NTP授时服务的使用说明
  8. Android自定义Toast
  9. 如何搭建maven中,分布式工程
  10. [SharePoint教程系列] 0.SharePoint 2016介绍
  11. 天正电气lisp是什么文件_教大家如何使用天正电气软件绘制图纸
  12. js 如何计算当年清明节日期
  13. 联想拯救者笔记本安装ubuntu系统不能正常关机
  14. qt 移动文件夹到另一目录下
  15. laravel5.5 The page has expired due to inactivity. Please refresh and try again.
  16. Zabbix邮件告警配置
  17. 操作系统【动态分区分配算法——首次适应算法、最佳适应算法、最坏适应算法、临近适应算法】
  18. Word文档密码忘记了
  19. 2022年PMP考试地点一般会在哪里?
  20. Serv-U 常见问题

热门文章

  1. 大学生数学竞赛试题荟萃 (更新至2017年10月28日)
  2. Redundant Paths(边双连通分量缩点+思维构造)
  3. xbox360 FSD 安装游戏教程(Freestyle3)
  4. ERP Qt实现之路 前言
  5. Zabbix安装配置详解
  6. [项目管理-2]:软硬件项目管理 - 干系人管理、实践活动、常见工具
  7. 如何设计财务对账系统 —— 从0到1搭建对账中心实战
  8. 解决R中installs显示Warning: unable to access index for
  9. oracle创建用户'表空间配额,牛刀小试:Oracle 用户表空间配额(quota )控制之随心所欲...
  10. Java集合框架详解笔记及其代码