暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大话 Kubernetes 探针:守护容器健康的小卫士

IT那活儿 2024-06-18
84
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!  

  
引言:
在浩瀚的 Kubernetes 星辰大海中,容器如同一颗颗闪耀的星辰,为我们提供着各种各样的服务。
然而,星辰也有可能陨落,容器也有可能出现故障。为了守护这些星辰,Kubernetes 赋予了我们强大的武器 —— 探针。



探针的奥秘

探针是 Kubernetes 中一种用于检查容器健康状况的机制。它可以定期检查容器是否存活、是否准备好接受流量,以及是否已启动成功。根据检查结果,探针可以采取相应的措施,例如重启容器、将容器从服务端点列表中移除等。

探针的三种化身:

  • Liveness 探针

    如同一位尽职尽责的医生,Liveness 探针会定期检查容器的生命体征。如果容器连续几次检查都失败,Liveness 探针就会判定容器病危,并启动重启程序,让它恢复健康。

  • Readiness 探针

    如同一位餐厅服务员,Readiness 探针会检查容器是否准备好接受服务请求。如果容器还没有准备好,Readiness 探针就会将其从服务列表中移除,避免它提供不佳的服务体验。

  • Startup 探针

    如同一位慈祥的护士,Startup 探针会在容器出生后立即检查它是否健康。如果检查发现问题,Startup 探针会及时通知医生,避免问题进一步恶化。

探针的强大力量:

  • 自动修复故障

    当容器出现故障时,探针可以自动将其重启,确保服务始终可用。

  • 精准控制流量

    探针可以根据容器的健康状况,将流量路由到健康的容器,避免将流量分配给故障容器,影响用户体验。

  • 保障服务可靠

    探针可以帮助我们及早发现并解决容器问题,提高服务可靠性,为用户提供更加稳定的服务。

探针的应用场景:

探针可以应用于各种场景,例如:

  • Web 应用程序

    我们可以使用 Liveness 探针来检查 Web 应用程序是否正常运行,并使用 Readiness 探针来检查应用程序是否已完成初始化并准备好接受请求。

  • 数据库

    我们可以使用 Liveness 探针来检查数据库是否正常运行,并使用 Readiness 探针来检查数据库是否已准备好接受连接。

  • 缓存

    我们可以使用 Liveness 探针来检查缓存是否正常运行,并使用 Readiness 探针来检查缓存是否已加载完成。

探针的配置秘籍

我们可以通过 Pod spec 中的 readinessProbe 和 livenessProbe 字段来配置探针。探针支持多种参数,例如超时时间、失败阈值等,需要根据实际情况进行设置。

探针实战演练:

为了更深入地理解探针的使用,我们来进行一个实战演练。假设我们有一个 Web 应用程序,部署在 Kubernetes 集群中。

我们可以使用以下配置来为应用程序配置 Liveness 和 Readiness 探针:

YAML
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app
    image: nginx
    ports:
    - containerPort: 80
    readinessProbe:
      httpGet:
        path: healthz
        port: 80
        initialDelaySeconds: 10
        periodSeconds: 5
        timeoutSeconds: 1
    livenessProbe:
      exec:
        command: ["/bin/sh", "-c", "curl -f http://localhost:80/healthz || exit 1"]
        initialDelaySeconds: 10
        periodSeconds: 5
        timeoutSeconds: 1

配置解析:

  • readinessProbe
    Readiness 探针配置,使用 HTTP GET 方法检查容器是否准备好接受请求。
  • httpGet
    HTTP GET 探针配置,指定要检查的 URL 路径、端口、超时时间等参数。
  • initialDelaySeconds
    探针首次执行的延迟时间,单位为秒。
  • periodSeconds
    探针执行的周期,单位为秒。
  • timeoutSeconds
    探针执行的超时时间,单位为秒。
  • livenessProbe
    Liveness 探针配置,使用 exec 命令检查容器是否存活。
  • exec
    Exec 探针配置,指定要执行的命令、超时时间等参数。

实战效果:

  • 当应用程序正常运行时,Readiness 探针和 Liveness 探针都会返回成功状态。


END


本文作者:李 震(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论