[kubernetes]服务健康检查

这篇具有很好参考价值的文章主要介绍了[kubernetes]服务健康检查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

进程在运行,但是不代表应用是正常的,对此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来进行容器应用的健康检查。文章来源地址https://www.toymoban.com/news/detail-693287.html

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权威指南-第五版

到了这里,关于[kubernetes]服务健康检查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes Pod的重启策略+健康检查(实现应用自修复);

    指的是容器什么时候才会被重启,如果没有健康检查的话,默认是根据pod的status来判断的 有三个值,分别是: Always : 只要容器被终止退出后,总是重启容器,默认策略; 应用场景:常驻进程(例如nginx,tomcat、mysql等) OnFailure :只有当容器异常退出(退出状态码非0)时,

    2024年02月03日
    浏览(28)
  • 【探索 Kubernetes|作业管理篇 系列 10】Pod 健康检查和恢复机制

    大家好,我是秋意零。 上一篇中介绍了,Pod 的服务对象,从而对 Pod 有了更深的理解; 今天的主题是 Pod 健康检查和恢复机制,我们将结束 Pod 的内容。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持!在我主页推广区域,如图: 文章底部推广区域

    2024年02月09日
    浏览(29)
  • Kubernetes(k8s)健康性检查:livenessprobe探测和readinessprobe探测

    目录 一.系统环境 二.前言 三.Kubernetes健康性检查简介 四.创建没有探测机制的pod 五.添加livenessprobe探测 5.1 使用command的方式进行livenessprobe探测 5.2 使用httpGet的方式进行livenessprobe探测 5.3 使用tcpSocket的方式进行livenessprobe探测 六.readinessprobe探测 七.总结 本文主要基于Kubernetes1.

    2024年02月07日
    浏览(38)
  • gpu没有运行进程,但是显存一直占用

    一般停止进程显存会释放,但是如果在不正常情况关闭进程,可能可能会出现显存不释放的情况: 这时需要找到进程: 可能出现 下载包,使用 这时再使用 找到进程: 或者用 最后使用kill -9 118241杀死进程,释放资源.

    2024年02月15日
    浏览(83)
  • 献给Nacos小白的一篇好文:服务的健康检查

    服务的健康检查 几乎所有提供服务注册与发现的组件都支持对服务进行健康状态的检测,以便于及时发现和解决服务问题。常见的健康检查策略分两种方式,一种是客户端主动上报自身健康状态,另一种则是服务端主动探测客户端的健康状态。在nacos中,临时服务对应主动上

    2024年02月15日
    浏览(29)
  • 查询GPU时无进程运行,但是显存却被占用了

    nvidia-smi 或者 gpustat 无进程在GPU上运行,但GPU显存却被占用了 应该是存在僵尸进程,已经运行完毕或者卡死,但是内存没有释放,处于挂起状态 3.1 方案一 重启电脑 3.2 方案二 如果电脑不能重启,那就通过命令行: 可以看到对应的设备,是有进程的。 最后就用kill命令行杀掉

    2024年02月15日
    浏览(41)
  • Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

    官网:https://www.consul.io/ Consul 是一款开源的服务发现和配置管理工具,它能够监控应用程序和服务之间的通信,并提供了一组 API 和 Web UI,用于管理服务和配置。 Consul 是分布式的、高可用的、可横向扩展的,具备以下特性: 服务发现:Consul 通过 DNS 或者 HTTP 接口使服务注册

    2024年01月21日
    浏览(35)
  • 我的电脑 因为配置标识不正确 系统无法开始服务器进程。请检查用户名和密码。

    1.点击开始/运行,输入Dcomcnfg,按回车键,选择Microsoft Word文档,配置其属性,身份验证级别选“无”,身份标识选“交互式用户”,在“安全性”里,启动和激活权限,和访问权限,配置权限全部自定义并且添加用户everyone。 2.重装Office,此处是关键,一定要卸载了重装,经

    2024年02月09日
    浏览(48)
  • 解决pod健康检查问题

    引自:Solving the mystery of pods health checks failures in Kubernetes。原文中的某些描述并不清晰,本文作了调整。 很早以前,环境中的pod有时候会遇到健康检查失败的问题,但并没有什么明显表征,且几乎是立马就会恢复。由于这种情况很少发生,且不会对业务造成影响,因此起初并

    2024年02月03日
    浏览(28)
  • 【微服务部署】03-健康检查

    Liveness Readiness Startup 1.1 LivenessProbe 判断服务是否存活 结束“非存活”状态服务 根据重启策略决定是否重启服务 1.2 ReadinessProbe 判断服务是否“就绪” “就绪”状态的服务可以接收请求 非“就绪”状态的服务将会被从流量负载中摘除 1.3 StartupProbe 检测应用程序是否启动成功

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包