OpenShift添加应用健康检查功能
什么是健康检查?
对于部署成功的应用来说,通过访问接口、执行特定命令等方式判断应用是否存活、正常的方式称为健康检查。
在 OpenShift 或 Kubernetes 中,健康检查都有两个探针,分别是 就绪探针(Readiness Probe) 与 存活探针(Liveness Probe):
- 就绪探针(Readiness Probe),即指收集应用已经准备好接收流量状态的探针。通过就绪状态判断Pod是否可以纳入到Service的负载均衡列表中。当Pod处于未就绪状态时,会被自动移出Service负载均衡列表。
- 存活探针(Liveness Probe),即指收集应用存活状态,确保应用在某种特定状态时重启Pod的探针。通过捕获特定状态,重启Pod以提高可用性。
以上两种探针可独立使用,亦可配合使用。
本文以OpenShift 3.9版本举例,新版本类似,暂不考虑新版本Kubernetes的Startup Probe
使用健康检测场景举例
以下示例均为未设置健康检测探针时的场景
- 场景一:Pod内应用未就绪,Pod处于Running状态,Pod纳入到Service负载均衡列表中,当有流量进入时,返回服务不可用状态,如Connection Refuse。
- 场景二:Pod内应用在某次请求中,出现异常,暂时无法提供服务,处于未就绪状态,但其仍在负载均衡列表中,当流量负载到此节点时,应用返回超时、网关异常或Connection Refuse等,Service无法感知此Pod异常,无法故障转移。
- 场景三:Pod内应用出现死锁、假死状态,重启Pod可临时解决的场景。
针对场景一、二,使用就绪探针即可解决;针对场景三,使用存活探针即可解决。
为OpenShift上的应用添加健康检查
以下使用目前公司生产环境OpenShift 3.9环境举例,只是简单列出方法
进入Deployments进入待添加健康检查的应用,Actions-> Edit Health Checks


就绪探针与存活探针设置方式一致,都有三种探针实现类型,以就绪探针配置举例,存活探针可参考配置。
使用 容器内命令(Container Command) 类型

使用 HTTP GET请求 类型

使用 TCP Socket 类型

最终效果
添加完成后,在应用具体部署版本模板中会有健康检查探针的体现,只有健康检查通过的Pod才会提示Ready状态

OpenShift中对Kubernetes的健康检查进行了简单封闭,通过oc命令行工具查看pod,如图

period为健康检测间隔时间,OpenShift注掉了成功与失败数
注意事项
使用Web界面添加健康检测探针时,TCP Socket 与 HTTP GET 类型的探针只能使用模板的端口号,相对而言 Container Command类型的自由度更高些。
参考文档
https://docs.openshift.com/container-platform/3.9/dev_guide/application_health.html
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
OpenShift添加应用健康检查功能的更多相关文章
- nginx的健康检查功能将挂掉的Tomcat舍弃
1.Ngninx自带健康检查功能,能将挂掉的服务器舍弃,不在访问路径里 2.Nginx还有URL重写功能,能将接收到的请求,进行改写,再将新的URL分发到后端服务器上
- 23、nginx动态添加nginx_upstream_check_module健康检查模块
nginx_upstream_check_module模块地址:https://github.com/yaoweibin/nginx_upstream_check_module 23.1.说明: 1. ...
- 【Azure 应用服务】App Service 运行状况健康检查功能简介 (Health check)
通过Azure App Service门户,启用Health Check来监视应用服务的实例,当发现其中一个实例处于不健康(unhealthy)状态时,通过重新路由(即把有问题的实例从负载均衡器中移除 ...
- Nginx实战系列之功能篇----后端节点健康检查(转)
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_m ...
- Nginx实战系列之功能篇----后端节点健康检查
目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带) 官网地址: ...
- Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
- springboot Actuator健康检查
通过情况下,如我们想在系统中添加一个健康检查的接口,我们怎么做呢? 我们会新建一个类,或在已存在类的基础上添加检测接口. package com.crhms.medicareopinion; impo ...
- Java应用在docker环境配置容器健康检查
在<极速体验docker容器健康>一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看. 实战环境信息 操作系统:macO ...
- nginx之健康检查
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样 ...
随机推荐
- MySQL数据库 | MySQL调优|MySQL底层原理|MySQL零基础新手教程
MySQL数据库安装 一.Windows 环境下安装 A.下载 MySQL Select Operating System: Microsoft Windows 快捷下载:mysql-8.0.22-w ...
- [原题复现][CISCN 2019 初赛]WEB-Love Math(无参数RCE)[未完结]
简介 原题复现: 考察知识点:无参数命令执行 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 源码审计 代码 1 ...
- 应用程序-特定 权限设置并未向在应用程序容器不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户...的 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。
很久以前发现我们的业务服务器上出现一个System的系统严重错误,查找很久都没有找到解决办法,今日再次查看服务器发现报错更频繁,于是就搜集各种资料进行查找解决办法,终于找到了一个解决办法. 错误截图介 ...
- 还不懂java类加载机制的,建议看下这份阿里技术官总结的笔记!
类加载机制 把class文件加载到内存,并对数据进行校验,准备,解析,初始化,形成可以被虚拟机直接使用的字节码 类加载的时机(触发类的初始化) 使用new关键字实例化对象 读取一个类的静态代码块 使用 ...
- 换系统之后为什么iMindMap会提示“许可证使用的次数过多”
iMindMap是一款十分受欢迎的思维导图软件,随着12版本的上线,iMindMap新增了很多新用户,最近小编发现有不少新用户在群里反映:"为什么购买iMindMap时说可以支持换机,但是在 ...
- Codeforces Round #672 (Div. 2) B. Rock and Lever题解(思维+位运算)
题目链接 题目大意 给你一个长为n(n<=1e5)的数组,让你求有多少对a[i]和a[j] (i!=j)满足a[i]&a[j]>a[i]^a[j] 题目思路 这些有关位运算的题目肯 ...
- 【linux】i2c使用分析&源码实战
目录 前言 1. 设备检查命令 1.1 查看I2C驱动 1.2 i2c-tools 1.2.1 I2C-detect安装 1.2.2 i2cdetect 命令 1.2.3 i2cget 命令 1.2. ...
- 数论之prufer序列
定义 \(Prufer\) 数列是无根树的一种数列. 在组合数学中,\(Prufer\) 数列由有一个对于顶点标过号的树转化来的数列,点数为 \(n\) 的树转化来的 \(Prufer\) 数列长度为 ...
- Alpha冲刺-第二次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- IdentityServer4系列 | 授权码模式
一.前言 在上一篇关于简化模式中,通过客户端以浏览器的形式请求IdentityServer服务获取访问令牌,从而请求获取受保护的资源,但由于token携带在url中,安全性方面不能保证.因此,我们可以 ...