首页 > 其他分享 >[kubernetes]服务健康检查

[kubernetes]服务健康检查

时间:2023-09-04 09:56:28浏览次数:49  
标签:容器 服务 name kubernetes 探针 Ready 健康检查 Pod 80

前言

进程在运行,但是不代表应用是正常的,对此pod提供的探针可用来检测容器内的应用是否正常。k8s对pod的健康状态可以通过三类探针来检查:LivenessProbe、ReadinessProbe和StartupProbe。

健康检查探针

LivenessProbe

用于判断容器是否存活(Running状态),如果LivenessProbe探针检测到容器不健康,则kubelet“杀掉”容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的livenessprobe探针返回的值永远是success。

ReadinessProbe

用于判断容器服务是否可用(Ready状态),达到Ready状态的Pod才可以接收请求。对于被Service管理的Pod,Service与Pod EndPoint 的关联关系也将基于Pod是否Ready进行设置。如果在运行过程中Ready状态变为False,则系统自动将其从Service的后端EndPoint列表中隔离出去,后续再把恢复到Ready状态的Pod加到后端EndPoint列表。这样能保证客户端在访问service时不会被转发到服务不可用的Pod实例上。

StartupProbe

某些应用会遇到启动比较慢的情况,这种有且仅有一次的超长延时,使用StartupProbe更加适合。

实现方式

三种探针均可配置三种实现方式。

ExecAction

在容器内运行一个命令,如果该命令的返回码为0,则表明容器健康。

以下示例中,通过运行cat /tmp/health 判断一个容器运行是否正常。在Pod运行后,将在创建文件后的10秒删除文件。LivenessProbe的初次探测时间(initialDelaySeconds)为15秒,探测结果为Fail,将导致kubelet杀掉该容器并重启。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: busybox
    args:
    - /bin/sh
    - -c
    - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/health
      initialDelaySeconds: 15
      timeoutSeconds: 1

TCPSocketAction

通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。

示例:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-healthcheck
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1

HTTPGetAction

通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器健康。

以下例子中,kubelet定时发送HTTP请求到 localhost:80/_status/healthz来进行容器应用的健康检查。

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-healthcheck
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    livenessProbe:
      httpGet:
        path: /_status/healthz
        port: 80
      initialDelaySeconds: 30
      timeoutSeconds: 1

主要参数

  • initialDelaySeconds:健康检查探针的初次探测时间,单位为秒。例如设置为30的话,容器启动30秒后才会进行健康检测。
  • periodSeconds:检测频率,单位为秒,默认值为10。最小值为1秒
  • timeoutSeconds:探针检测的超时时间,默认为1秒。
  • failureThreshold:最小连续探测失败次数,默认为3。如果连续3次探测失败,则将容器视为不健康。
  • successThreshold:最小连续探测成功次数,默认为1。如果1次探测正常,则将容器视为健康。

参考

  • kubernetes权威指南-第五版

标签:容器,服务,name,kubernetes,探针,Ready,健康检查,Pod,80
From: https://www.cnblogs.com/XY-Heruo/p/17676152.html

相关文章

  • 微服务发布到docker后,一直重启Restarting (1) 2 seconds ago.
     使用dockerlogs加容器的ID命令,就可以查看该容器的启动的具体信息了。dockerlogsc59ba37a2508看一下日志:根据具体的报错信息来处理就可以了。  ......
  • 面向智慧医疗的慢病管理系统服务器端程序设计-计算机毕业设计源码+LW文档
    一、研究的背景意义随着当今网络技术的蓬勃发展以及人们生活水平的提高,利用信息化手段改善生活质量和工作效率已是当务之急和社会趋势,要跟上时代的潮流必须全面提升医院管理水平。而医院也是人们常常抱怨排队时间长的地方,所以医院迫切需要实现信息化,改变医院管理模式,提升工作效率......
  • 智慧养老系统健康监护系统服务端程序设计-计算机毕业设计源码+LW文档
    一、研究的背景意义当前,随着我国老龄化程度加急,各地纷纷构建高品质的养老院来适应城市的发展,养老院品质的上升并不等于养老院服务质量的上升,这就对养老院管理提出更高的要求。在传统的养老院管理中,许多工作都是依靠人力去解决。比如老人管理、水电费管理需要通过工人进行记录,往往......
  • 阿贝云服务器怎么做
    阿贝云服务器是一种基于云计算技术的虚拟服务器服务,它提供了稳定可靠的计算和存储能力,帮助企业和个人快速搭建和运行网站、应用程序、数据库和其他各种服务。本文将介绍阿贝云服务器的使用流程和配置方法,帮助读者了解如何使用阿贝云服务器。  第一部分:注册与管理第一步:注册......
  • 微服务 - Nacos
    目录Nacos认识和安装服务注册Nacos认识和安装Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高官网:nacos.io#启动startup.cmd-mstandalone启动成功后访问:http://192.168.222.1:8848/nacos/index.html默认的账号......
  • 【阿里云】企业级分布式应用服务 EDAS
    企业级分布式应用服务EDAS(EnterpriseDistributedApplicationService)是应用全生命周期管理和监控的一站式PaaS平台,支持部署于Kubernetes/ECS,无侵入支持。企业级分布式应用服务EDAS(EnterpriseDistributedApplicationService)是应用全生命周期管理和监控的一站式PaaS平台,,......
  • 如何将项目打包上传到NuGet服务器?
    作者:西瓜程序猿主页传送门:https://www.cnblogs.com/kimiliucn前言在我写[在.NETFramework中使用RocketMQ(阿里云版)]这篇博客的时候,因为封装了很多代码在单独的DLL中,包括生产者、消费者以及官方SDK等等,然后都在博客中体现出来导致博客大量代码,然后有位读者就建议打包成NuG......
  • 在Kubernetes(K8S)上安装和部署MySQL
    摘要:本文将介绍如何在Kubernetes(K8S)上安装和部署MySQL。我们将通过以下步骤实现这一目标:准备工作、安装MySQL、配置MySQL以及在K8S上部署MySQL。通过本文,您将了解如何使用K8S来管理MySQL的容器化部署,提高应用程序的性能、可靠性和安全性。一、引言MySQL是一种流行的关系型数据库,广......
  • 云服务器——安装MySQL
    镜像拉取MySQL#拉取mysql镜像,默认最新版本dockerpullmysql#默认最新版本dockerpullmysql:5.7#指定5.7版本#启动mysqldockerrun--namemysql-p3306:3306-eMYSQL_ROOT_PASSWORD=root-v/root/mysql/conf.d:/etc/mysql/conf.d-v/root/mysql/data:/var/l......
  • win2016搭建frp内网穿透的FTP服务器可用phpstorm
    操作系统:WindowsServer2016StandardFTP服务器:ser-U7.0.0.1之前用FileZillaServer,但phpstorm怎么连接不上FTP,最后安装Ser—U使用了SSH模式成功连通。下载安装Ser-U创建域域名信息随便写,没有意义SSH的SFTP一定要打开添加用户frpc开通内网穿透端口frpc相关配......