前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【K8s】Kubernetes 稳定性之健康检查

【K8s】Kubernetes 稳定性之健康检查

作者头像
行者Sun
发布2024-09-11 18:45:45
1600
发布2024-09-11 18:45:45
举报
文章被收录于专栏:Kubernetes

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发!如果您有其他想要了解的,欢迎私信联系我~

基本介绍

在 Kubernetes 中,健康检查是集群通过探针(Probe)定期检查容器是否健康运行,并自动维持容器健康运行的一种机制。

健康检查可以保障容器内应用程序的稳定性和可用性,并控制应用程序何时可以提供对外访问。

工作原理

  • 定义探针:用户在 Pod 中定义探针配置,包括探针类型、探测方式、探测间隔和阈值
  • 触发探针:Kubernetes 会根据定义的探针配置,定期触发健康检查
  • 执行探针:Kubernetes 会根据定义的探针配置,在容器中执行 EXEC 命令、建立 TCP 连接或发送 HTTP Get 请求
  • 结果处理:探针执行成功则等待下一次探测,探针执行失败则根据既定规则对容器进行处理

探针类型

1、存活探针(LivenessProbe)

LivenessProbe 用于判断容器是否存活,即是否处于 Running 状态。如果 LivenessProbe 检测到容器不健康,Kubernetes 会认为容器内应用程序已经崩溃或挂起,会通过 Kubelet 对该容器进行 Kill 和重启处理。

2、就绪探针(ReadinessProbe)

ReadinessProbe 用于判断容器是否可用,即是否处于 Ready 状态。如果 Pod 中的全部容器都达到 Ready 状态,Pod 才可以接收和处理请求,否则 Kubernetes 会认为容器内应用程序启动异常,会通过 Kubelet 对该容器进行 Kill 和重启处理。

3、启动探针(StartupProbe)

某些应用程序启动非常慢,如果只配置 LivenessProbe 或 ReadinessProbe,很可能出现应用程序还没有完成启动,对应的容器就被 Kill 掉无限重启的情况。

配置有 StartupProbe 的 Pod,在应用程序没有成功启动之前,LivenessProbe 和 ReadinessProbe 均不生效,不会重启容器。


探测方式

1、EXEC 命令探测(ExecAction)

尝试在容器内执行一个 EXEC 命令,返回码为 0 表明容器健康。

2、TCP 连接探测(TCPSocketAction)

尝试与容器的指定端口建立 TCP 连接,如果能够建立表明容器健康。

3、HTTP 请求探测(HTTPGetAction)

尝试对容器的指定接口发送 HTTP Get 请求,如果响应码大于等于 200 且小于 400 表明容器健康。

资源清单(示例)

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  nanme: demo-deployment
spec:
...
    spec:
      containers:
      - name: demo-container
...
        startupProbe / livenessProbe / readinessProbe:
          exec:                              # EXEC 命令探测方式
            command: ["cat", "/health.txt"]
          或
          tcpSocket:                         # TCP 连接探测方式
            port: 80
          或
          httpGet:                           # HTTP 请求探测方式
            path: /health
            port: 80
          initialDelaySeconds: 5             # 首次探测前等待时间
          periodSeconds: 10                  # 探测间隔时间
          timeoutSeconds: 1                  # 探测超时时间
          successThreshold: 1                # 探测成功阈值
          failureThreshold: 3                # 探测失败阈值
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 实施运维知识交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档