应用在运行过程不可避免会出现各种问题导致服务不可用的情况发生,K8S的Health Check健康检查机制可以对这些异常服务进行重启、剔除等操作,保障高可用。

一、K8S的健康检查探针

K8S的探针主要有3种,主要是探测的阶段不同:

1、readiness probes:容器就绪检查,用于检查容器是否能接收到流量,只有当状态正常才会加入到services中

2、liveness probes:在线检查机制,用于检查应用是否可用,如出现无法响应、死锁等异常时自动重启容器,能一定程度实现运维自动化

3、starup probes:启动检查机制,避免一些需要长时间启动的容器被前面的探针杀掉。该探针排在首位,直到它工作完成才会进行另外2种探针的探测

二、K8S探针工作方式

1、exec方式:设置一个命令作为探查命令,对其返回结果做判断

该示例会创建⼀个容器,容器启动时创建/tmp/liveness-probe.log,然后10秒后将其删除。通过liveness探针的exec方法去执行命令ls -l /tmp/liveness-probe.log,通过⽂件返回码判断健康状态。如果返回码⾮0会⾃动将该容器重启cat centos-exec-liveness-probe.yaml
apiVersion: v1
kind: Pod
metadata:name: exec-liveness-probeannotations:kubernetes.io/description: "exec-liveness-probe"
spec:containers:- name: exec-liveness-probeimage: centos:latestimagePullPolicy: IfNotPresentargs: #容器启动命令,⽣命周期为30s- /bin/sh- -c- touch /tmp/liveness-probe.log && sleep 10 && rm -f /tmp/liveness-probe.log && sleep 20livenessProbe:exec: #健康检查机制,通过ls -l /tmp/liveness-probe.log返回码判断容器的健康状态command:- ls- l- /tmp/liveness-probe.loginitialDelaySeconds: 1  #初始探测时间,可以设大一点,防止应用还没启动就被认作失败periodSeconds: 5  #每次探测间隔timeoutSeconds: 1  #探测超时时间,超时则失败

2、httpGet方式:主要⽤于web场景,对容器内指定的URL发送http请求,然年后根据返回码判断容器健康状态,返回码⼩于4xx即表示健康:

# 定义⼀个nginx应⽤,通过探测http://:port/index.html的⽅式判断健康状态
cat nginx-httpGet-liveness-readiness.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-httpget-livess-readiness-probeannotations:kubernetes.io/description: "nginx-httpGet-livess-readiness-probe"
spec:containers:- name: nginx-httpget-livess-readiness-probeimage: nginx:latestports:- name: http-80-portprotocol: TCPcontainerPort: 80livenessProbe: #健康检查机制,通过httpGet实现实现检查httpGet:port: 80scheme: HTTPpath: /index.htmlinitialDelaySeconds: 3periodSeconds: 10timeoutSeconds: 3

3、tcp连接:以能否与容器建立tcp连接为判断

K8S教程(7)使用探针对容器进行健康检查相关推荐

  1. k8s探针检测php,K8S教程(7)使用探针对容器进行健康检查

    应用在运行过程不可避免会出现各种问题导致服务不可用的情况发生,K8S的Health Check健康检查机制可以对这些异常服务进行重启.剔除等操作,保障高可用. 一.K8S的健康检查探针 K8S的探针主 ...

  2. 如何对Docker容器进行健康检查

    如何对 Docker 容器进行健康检查 熟悉使用过kubernetes的人应该知道,kubernetes支持对pod进行健康检查的功能,这对生产业务来说其实是非常有用处的,能快速发现服务不可用,并进行 ...

  3. 如何优雅的对 Docker 容器进行健康检查

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 自 1.12 版本之后,Docker 引入了原生的健康检查实现.对于容器而言,最简单的健康检查是进程级的健康检查, ...

  4. 20210720-springboot项目使用k8s部署,服务启动成功,但是健康检查失败

    问题一:提示/health 404错误 问题描述 Jenkins上配置了流水线脚本,其中配置了健康检查的路径(直接抄别人项目的配置) 此时虽然项目启动成功,但是由于健康检查提示404,导致项目一直重启 ...

  5. pod健康检查之容器的存活探针、就绪探针、启动探针

    前言 环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6 为什么需要存活探针和就绪探针 在前面我们介绍过,可以通过配置restartPo ...

  6. .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查

    目录 1.pod管理 2.重启策略 3.健康检查 4.进入容器 正文 上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家. 1.pod管理 1.1创建pod ...

  7. Docker学习总结(28)——Docker 容器健康检查机制

    摘要: 在分布式系统中,经常需要利用健康检查机制来检查服务的可用性,防止其他服务调用时出现异常.自 1.12 版本之后,Docker 引入了原生的健康检查实现.本文将介绍Docker容器健康检查机制, ...

  8. Docker 容器健康检查机制

    摘要: 在分布式系统中,经常需要利用健康检查机制来检查服务的可用性,防止其他服务调用时出现异常.自 1.12 版本之后,Docker 引入了原生的健康检查实现.本文将介绍Docker容器健康检查机制, ...

  9. K8s Liveness/Readiness/Startup 探针机制

    官方参考文档 目录 前言 一.默认健康检测 1.1 restartPolicy 1.2 测试案例 二.Liveness 三.Readiness 四.Startup 前言 玩过 Docker Swarm ...

  10. k8s教程(Volume篇)-PVC详解

    文章目录 01 引言 02 PVC详解 2.1 参数配置 2.1.1 资源请求(Resources) 2.1.2 访问模式 (Access Modes) 2.1.3 存储卷模式(Volume Mode ...

最新文章

  1. vue 项目引用static目录资源_Vue2.0项目入门 — 静态资源目录src/assets和static/区别...
  2. Thinking in java基础之集合框架
  3. macpycharm格式化代码_PyCharm for mac 2020.2 强大的Python IDE工具
  4. java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
  5. python 倒数_【IT专家】python实现文件倒数N行读取
  6. 了解前端——js需知道知识点
  7. 混合列压缩(HCC)在OLAP及OLTP场景中的测试
  8. 【Spring学习笔记-MVC-1.3】消息转换器HttpMessageConverter
  9. asp.net ajax updatepanel中textbox 乱码问题 解决方案
  10. CDSN文章转载方法
  11. 惠普暗影精灵2 Mojave(几乎完美黑苹果)
  12. postgresql 9.5 now()函数少8小时
  13. 服务器网卡不显示了,重装系统后网络适配器怎么不见了?没有网络适配器解决方法...
  14. 手机扫描电脑百度网盘二维码,二维码无法刷新的解决办法
  15. 输入偏置电流时钟馈通
  16. Java 如何判断一个字符串中是否包含某一 子字符串
  17. SpringBoot——安全管理(一)
  18. IIS7用FastCGI运行PHP配置
  19. x58添加uefi_修改为UEFI引导的方法,不需要重装
  20. 内存管理pbuf.h头文件源码解析——LwIP学习

热门文章

  1. chua系统matlab代码
  2. pysmiles:一个用于读写SMILES表达式的python库
  3. vue里面使用图片的懒加载
  4. vscode c++语法检查以及指定c++标准
  5. 安卓6.0+通电自动开机
  6. win10多屏显示时分别设置壁纸
  7. 【博客33】使用 “NVI“解决缺省参数绑定问题
  8. 汤姆猫代码python_iOS开发:纯代码实现汤姆猫小游戏
  9. 自动驾驶轨迹规划--算法综述
  10. nginx根据post请求体内容转发