Kubernetes 探针使用介绍

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 当我们在 K8s 上运行应用时,应用是否运行正常这是我们比较关心的,但是如果我们只是通过查看应用的运行状态,这是很难判断出应用是否处于运行状态的;因为在某些时候,容器正常运行并不能代表应用健康,所以我们可以通过 Kubernetes 提供的探针。

Kubernetes 探针使用介绍



一、基本介绍


二、K8s 探针使用介绍


一、基本介绍



当我们在 K8s 上运行应用时,应用是否运行正常这是我们比较关心的,但是如果我们只是通过查看应用的运行状态,这是很难判断出应用是否处于运行状态的;因为在某些时候,容器正常运行并不能代表应用健康,所以我们可以通过 Kubernetes 提供的探针。


使用探针来判断容器内运行的应用是否运行正常。官方文档


Kubernetes 的探针有三种类型:


  • 就绪探针(Readiness Probe):判断容器是否已经就绪,若未就绪,容器将会处于未就绪。
  • 存活探针(Liveness Probe):判断容器内的应用程序是否正常,若不正常,K8s 将会重新重启容器。
  • 启动探针(Startup Probe):判断容器内的应用是否启动完成(在启动探针判断成功前,就绪探针和存活探针将不会执行)


探针方式:


  • exec:通过在容器内执行指定命令,来判断命令退出时返回的状态码,如果为 0 表示正常。
  • httpGet:通过对容器的 IP 地址、端口和 URL 路径来发送 GET 请求;如果响应的状态码在 200 ~ 399 间,表示正常。
  • tcpSocket:通过对容器的 IP 地址和指定端口,进行 TCP 检查,如果端口打开,表示正常。


配置项:


  • initialDelaySeconds:等待我们定义的时间 结束后便开始探针检查;
  • periodSeconds:探针的 间隔时间;
  • timeoutSeconds:探针的 超时时间,当超过我们定义的时间后,便会被视为失败;
  • successThreshold:探针的 最小连续成功数量;
  • failureThreshold:探针的 最小连续失败数量;


下面我们分别对这三种探针使用了不同的探针方式,主要是为了方便给大家做一个简单的介绍,并不是固定写法;同时,这三种探针是可以配合使用的;像一般比较常见的便是 就绪探针和存活探针配合使用(启动探针是在 K8s 1.6 版本后增加的)


二、K8s 探针使用介绍



1)就绪探针:


[root@k8s-master01 ~]# vim tomcat-service.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tomcat-service
spec:
  containers:
  - name: tomcat-service
    image: tomcat:8.5.32
    ports:
    - containerPort: 8080
    readinessProbe:
      failureThreshold: 3
      tcpSocket:
        port: 8080
      initialDelaySeconds: 20
      periodSeconds: 3
      successThreshold: 1
      timeoutSeconds: 2
[root@k8s-master01 ~]# kubectl create -f tomcat-service.yaml


image.png


我们可以通过 describe 来查看 Pod 的信息


[root@k8s-master01 ~]# kubectl describe pod tomcat-service


image.png


2)存活探针:


[root@k8s-master01 ~]# vim tomcat-web-server.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tomcat-web-server
spec:
  containers:
  - name: tomcat-web-server
    image: tomcat:8.5.32
    ports:
    - containerPort: 8080
    livenessProbe:
      failureThreshold: 3
      httpGet:
        path: /
        port: 8080
        scheme: HTTP            # 可以使用 HTTP 或 HTTPS 方式
      initialDelaySeconds: 20
      periodSeconds: 3
      successThreshold: 1
      timeoutSeconds: 2
[root@k8s-master01 ~]# kubectl create -f tomcat-web-server.yaml


image.png


  • 上面重启是因为,当存活探针或启动探针判断不成功时,便会将容器关闭;后面将牵扯到容器的重启策略。
  • 容器默认的重启策略为 Always(即,当容器退出时,将要退出的容器进行重启)


3)启动探针:


[root@k8s-master01 ~]# vim tomcat-async-service.yaml
apiVersion: v1
kind: Pod
metadata:
  name: tomcat-async-service
spec:
  containers:
  - name: tomcat-async-service
    image: tomcat:8.5.32
    ports:
    - containerPort: 8080
    startupProbe:
      failureThreshold: 3
      exec:
        command: ['/bin/sh','-c','echo Hello World']
      initialDelaySeconds: 20
      periodSeconds: 3
      successThreshold: 1
      timeoutSeconds: 2
[root@k8s-master01 ~]# kubectl create -f tomcat-async-service.yaml


image.png


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
运维 Kubernetes Cloud Native
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
124 0
|
3月前
|
Kubernetes 容器
探究kubernetes 探针参数periodSeconds和timeoutSeconds
探究kubernetes 探针参数periodSeconds和timeoutSeconds
62 1
|
3月前
|
Kubernetes 负载均衡 网络协议
在K8S中,Pod的探针有哪些及用途?
在K8S中,Pod的探针有哪些及用途?
|
3月前
|
Kubernetes 网络协议 Python
运维开发.Kubernetes探针与应用
运维开发.Kubernetes探针与应用
132 2
|
3月前
|
Kubernetes 监控 网络协议
在K8S中,Pod有几种探针?
在K8S中,Pod有几种探针?
|
3月前
|
Kubernetes 网络协议 容器
在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
在k8S中,Pod中的LivenessProbe探针常见方式有哪些?
|
3月前
|
Kubernetes 监控 网络协议
在K8S中,Pod不同探针有何区别?
在K8S中,Pod不同探针有何区别?
|
6月前
|
运维 Kubernetes 网络协议
Kubernetes详解(十八)——Pod就绪性探针实战
Kubernetes详解(十八)——Pod就绪性探针实战
111 5
|
6月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes详解(十七)——Pod存活性探针应用实战
Kubernetes详解(十七)——Pod存活性探针应用实战
113 4
|
6月前
|
运维 Kubernetes 网络协议
Kubernetes详解(十八)——Pod就绪性探针实战
Kubernetes详解(十八)——Pod就绪性探针实战
119 3

推荐镜像

更多