首页 弹性容器实例 ACK和ASK用户使用ECI指南 容器配置 使用探针对容器进行健康检查

使用探针对容器进行健康检查

本文介绍如何配置Liveness Probe和Readiness Probe,对容器进行健康检查。

功能说明

Kubernetes中,容器的健康检查由kubelet定期执行,kubelet通过存活探针和业务探针来检查容器的状态和运行情况。

探针

说明

应用场景

应用存活探针( Liveness Probe)

用于检查容器是否正常运行。如果检查成功,则表示容器正常运行。如果检查失败,系统会根据配置的容器重启策略进行相应的处理。如果未配置该探针,则默认容器一直正常运行。

  • 当应用程序处于运行状态但无法进行进一步操作时,Liveness Probe将捕获到deadlock,重启对应的容器,使得应用程序在存在bug的情况下依然能够运行。

  • 长时间运行的应用程序最终可能会转换到broken状态,此时除了重新启动,无法恢复。Liveness Probe可以检测并补救这种情况。

应用业务探针(Readiness Probe)

用于检查容器是否已经就绪,可以为请求提供服务。如果检查成功,则表示容器已经准备就绪,可以接收业务请求。如果检查失败,则表示容器没有准备就绪,系统将停止向该容器发送任何请求,直至重新检查成功。

如果应用程序暂时无法对外部流量提供服务,例如应用程序需要在启动期间加载大量数据或配置文件,此时,如果不想终止应用程序,也不想向其发送请求,可以通过Readiness Probe来检测和缓解这种情况。

配置说明

您可以通过容器的livenessProbe和readinessProbe字段来设置Liveness Probe或者Readiness Probe。更多信息,请参见配置存活、就绪和启动探测器

配置示例如下:

  • 示例一:设置Liveness Probe

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
            args:
            - /bin/sh
            - -c
            - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
           #设置Liveness Probe,通过命令行方式进行检查
            livenessProbe:    
              exec:           
                command:
                - cat
                - /tmp/healthy
              initialDelaySeconds: 5    #容器启动5秒后开始检查
              periodSeconds: 5     #每5秒执行一次检查
  • 示例二:设置Readiness Probe

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: test
      labels:
        app: test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          name: nginx-test
          labels:
            app: nginx
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - name: nginx
            image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
            ports:
            - containerPort: 80
            args:
            - /bin/sh
            - -c
            - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
            #设置Readiness Probe,通过命令行方式进行检查
            readinessProbe:
              exec:           
                command:
                - cat
                - /tmp/healthy
              initialDelaySeconds: 5    #容器启动5秒后开始检查
              periodSeconds: 5     #每5秒执行一次检查
阿里云首页 弹性容器实例 相关技术圈