SpringBoot系列--【K8s中的SpringBoot如何给应用配置健康检查?】

news2024/11/22 22:44:05

K8s中的SpringBoot如何给应用配置健康检查?

1.健康检查的必要性

作为业务监控的首要目标,服务的存活性,也就是它的健康状况,成为了重中之重,容器云平台可以根据健康检查策略来对服务实例进行自动重启或从负载均衡中摘除。

2.K8s的健康检查探针

当使用 Kubernetes 作为编排平台时,每个节点中的 kubelet 负责保持该节点中的 pod 健康。例如有时应用程序可能需要一些时间才能接受请求。kubelet 可以确保应用程序仅在准备就绪时接收请求。此外,如果 Pod 的主进程因任何原因崩溃,kubelet 将重新启动容器。为了履行这些职责,Kubernetes 有三个探针:存活探针(livenessProbe)和就绪探针(readinessProbe)和启动探针(startupProbe)。

  • 存活状态(liveness):
    就应用程序而言,存活状态是指应用程序的状态是否正常。如果存活状态不正常,则意味着应用程序本身已损坏,无法恢复。在Kubernetes中,如果存活探针检测失败,则kubelet将杀死Container,并且Container将接受其重新启动策略。如果容器未提供存活探针,则默认状态为“ Success ”。
  • 就绪状态(readiness):
    就绪状态,指的是应用程序是否已准备好接受并处理客户端请求。出于任何原因,如果应用程序尚未准备好处理服务请求,则应将其声明为繁忙,直到能够正常响应请求为止。如果“Readiness”状态尚未就绪,则流量不应路由到该实例。
    例如,在Kubernetes中,如果就绪探针失败,则 Endpoints 控制器将从与Endpoints中删除Pod的IP地址。设置就绪状态为“Failure”。如果容器未提供就绪探针,则默认状态为“Success”。
    kubelet 将使用就绪探针来确定应用程序何时准备好接受请求。更具体地说,当 pod 的所有容器都准备就绪时,它就准备好了。类似地,kubelet 可以通过存活探针检查 pod 是否还活着,存活探针可以帮助 kubelet 知道何时应该重新启动容器。
  • 启动探针(startupProbe):这期暂时不讲启动探针,后面再给大家讲解。

3.Springboot配置健康检查

SpringBoot可以通过简单的参数,来开启健康检查,并能够和主流的监控系统集成起来。今天重点说一下Actuator监控管理中的健康检查功能,随时能掌握线上应用的健康状况是非常重要的,尤其是现在流行的容器云平台下的应用,它们的自动恢复和扩容都依赖健康检查功能。
首先需要在pom文件中添加spring-boot-starter-actuator组件,如下图:
其次在配置文件中添加配置监控端点,默认情况下,这些端点是禁用的。
在浏览器或者postman中输入:服务ip:port/actuator/health,看有没有返回结果,如果返回结果为UP(状态码在200到400之间),服务正常;其余返回结果为DOWN,服务异常,如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP-GUARD如何在客户端上进行审批管理?

如何在客户端上进行审批管理? 4 实现步骤如下: 1、先在控制台-加密-加密授权设置-常规中,勾选允许登录审批管理平台开启客户端登录审批管理平台的功能。 2、然后客户端电脑,右键加密托盘登录审批账号后即可正常审批。 如何实现特…

MySQL 8.1.0正式发布!

早在五年前,MySQL 8.0 就发布了第一个 GA 版本,此后一直在这个版本进行更新,而没有升级大版本。最近 MySQL 官方终于发布了 MySQL 8.1.0 和 MySQL 8.0.34,分别代表了创新版和长期支持版。 新版本中与 SQL 相关的改进包括保存执行计…

用C++在Windows桌面上打个叉❌

我们的目标是,只写一二十行代码,用 Windows自带的原生接口,强行在桌面上打个大红❌,如图: 写了大半年C,天天和“黑乎乎” 的小窗口你侬我侬?赶紧来打开一扇“Windows”,从窗口跳进全…

数据库系统课程笔记

初步认识数据库系统 schema 英 /ˈskiːmə/ 美 /ˈskiːmə/ n.(计划或理论的)提要,纲要 关系模型之基本概念 关系和表的差别 关系的特性 什么是sql 创建数据库(编写脚本) 创建表格语法(编写脚本) 修改表的结构语法 …

微服务Day4——Docker

一、什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会…

如何生成一个随机数?

文章目录 虚假的随机数真正的随机数生成规定位数的随机数 虚假的随机数 说到如何生成一个随机数,可能当你百度后会看到这样一段代码。 srand((unsigned int)time(NULL)); int ret rand();那么一个随机数到底是如何生成的呢?我相信善于探索的你一定想知…

(黑客)自学笔记

特别声明: 此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施&#x…

Docker镜像分层

文章目录 docker镜像分层镜像层构成镜像FS 构成基础镜像层扩展镜像层容器层 镜像摘要分发散列值 多架构镜像工作原理 docker镜像分层 Docker 镜像由一些松耦合(关系不怎么紧密)的只读镜像层组成,Docker Daemon 负责堆叠这些镜像层&#xff0c…

vim安装及使用

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

得物 Android 包体积资源优化实践

包体积优化中,资源优化一般都是首要且容易有成效的优化方向。资源优化是通过优化APK中的资源项来优化包体积,本文我们会介绍得物App在资源优化上做的一些实践。 1. 插件优化 插件优化资源在得物App最新版本上收益12MB。插件优化的日志在包体积平台有具…

Kotlin基础(六):枚举类和扩展

前言 本文主要讲解kotlin枚举类和扩展 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 枚举类 1.1.1 枚举类的基本用法 Kotlin中的枚举类(enum class)用于定义一组具有预定义值的常量。它们在许多情况下都很有用,例如表示一组…

【外设篇】I2C工作原理

目录 一、I2C 简介 二、I2C 主设备与从设备的关系 三、I2C 数据传输过程 3.1 总线空闲状态 3.2 开始位和停止位的产生 3.3 主设备处于等待状态 3.4 ACK 应答位的产生 3.5 有效的数据传输 3.6 数据的传输 总结 一、I2C 简介 I2C(内置集成电路&#…

浏览器 html通知权限已经开了,但是还不提醒

如果您已经在Chrome浏览器中开启了HTML5通知,但是仍然不收到提醒,可能有几种可能的原因。下面是一些建议的解决方法: 检查浏览器设置: 确保HTML5通知在Chrome浏览器中正确启用。您可以按照以下步骤检查设置: 在Chrome中输入 chrom…

【Nacos源码系列】Nacos服务发现的原理

文章目录 服务发现是什么客户端服务发现服务端发现总结 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 上篇文章介绍了 Nacos服务注册的原理 ,本篇文章将从客户端和服务端的…

微服务保护——Sentinel【实战篇二】

一、线程隔离 🍉 线程隔离有两种方式实现: 线程池隔离信号量隔离(Sentinel默认采用) 线程隔离(舱壁模式)🥝 在添加限流规则时,可以选择两种阈值类型: QPS:…

LiveNVR监控流媒体Onvif/RTSP功能-支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出

LiveNVR支持无人机、IPC等设备RTMP推流转码分发H5无插件播放也支持GB28181输出 1、无人机推流转国标2、获取RTMP推流地址2.1、RTMP推流地址格式2.2、推流地址示例 2、设备RTMP推流3、配置拉转RTMP3.1、直播流地址格式3.2、直播流地地址示例3.3、通道配置直播流地址 4、配置级联…

螺杆支撑座的加工工艺

螺杆支撑座是重要的传动元件,一般与滚珠螺杆搭配使用,滚珠螺杆的固定座可选择使用深沟球轴承C7精度,磨削螺杆的固定座可选择用角接触轴承的C5精度,C5的精度更高。 支撑侧没有精度,一般使用深沟球轴承,如果螺…

linux 系统编程-进程中的通信

目录 1 IPC 方法 2管道 2.1管道的概念 2.2 pipe 函数 2.3管道的读写行为 2.4 管道缓冲区大小 2.5 管道的优劣 2.6 FIFO 3.共享存储映射 3.1 文件进程间通信 3.2 存储映射 I/O 3.3 mmap 函数 3.4 munmap 函数 3.5 mmap 注意事项 3.6 mmap 父子进程通信 3.7 mmap …

JAVA 面试准备

这里写自定义目录标题 一、JAVA基础1.ArrayList2.HashMap3.Concurrenthashmap4.Stream5.synchronized6.线程池7.CompletableFuture8.Fork/join9.数组与链表的区别10.单例模式1.饿汉模式2.懒汉模式10.1、 为啥使用synchronized?10.2、 又为啥使用volatile?10.3、 那又又为啥用…

【MySQL进阶(一)】MySQL在Linux中的配置信息和数据备份工具

MySQL在Linux中安装的话可以看这篇博客:MySQL在Linux中的安装,我觉得总结的很好。 my.cnf 中的配置信息 当 MySQL 启动的时候,会从安装目录中加载软件数据,即使用 mysqld 工具初始化设置的 --basedir,会从数据目录中…