k8s之pod探针

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: k8s之pod探针

在Kubernetes中,探针(Probe)用于检查容器的健康状态。Kubernetes提供了三种类型的探针:存活探针(Liveness Probe)、就绪探针(Readiness Probe)和启动探针(Startup Probe)。这些探针可以用来监测容器的健康状况,并根据需要对容器进行重启、停止访问或将其加入负载均衡。

以下是每种类型的探针的简要说明:

  1. 存活探针(Liveness Probe): 存活探针用于检测容器是否处于运行状态。如果存活探针失败,Kubernetes会自动重启容器。存活探针通常用于监测应用程序内部的健康状态,例如检查关键进程是否在运行、数据库连接是否正常等。
  2. 就绪探针(Readiness Probe): 就绪探针用于检测容器是否已准备好接收流量。当就绪探针失败时,Kubernetes会将容器从服务的负载均衡中排除,直到就绪探针成功为止。就绪探针通常用于确保应用程序在开始接收流量之前已经完成了初始化、加载数据或建立必要的连接。
  3. 启动探针(Startup Probe): 启动探针用于检测容器是否已成功启动并变为可用状态。与存活探针和就绪探针不同,启动探针在容器启动时运行一次,而不是周期性地运行。如果启动探针失败,Kubernetes会重启容器。启动探针通常用于在应用程序初始化或长时间启动的情况下进行健康检查。

对于每种探针类型,您可以指定以下属性:

  • 探测方式(Probe Type): 可以选择使用HTTP探测、TCP套接字探测或命令执行探测。
  • 探测操作(Probe Action): 对于HTTP探测,您可以指定要发出的HTTP请求。对于TCP探测和命令执行探测,您可以定义相应的检查逻辑。
  • 探测周期(Probe Period): 指定多久执行一次探测操作。
  • 探测超时(Probe Timeout): 指定探测操作的超时时间。
  • 探测阈值(Probe Threshold): 指定连续多少次探测操作失败后被视为失败。

您可以通过在Pod的定义中使用livenessProbe、readinessProbe和startupProbe字段来添加探针配置。

下面是一个示例,展示了如何在Pod定义中添加探针配置:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-container
    image: my-image
    livenessProbe:
      httpGet:
        path: /health
        port: 8080
      initialDelaySeconds: 10   # running x秒之后才开始执行
      periodSeconds: 15   # 每隔x秒    
#      timeoutSeconds: 5              # x秒之后未返回结果,失败超时
#      successThreshold: 5            # 成功阈值,连续x次探测成功才算成功
#      failureThreshold: 5              # 失败阈值
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    startupProbe:
      command:
        - "my-app"
        - "check"
      initialDelaySeconds: 20
      periodSeconds: 30

在上述示例中,我们定义了一个名为my-app的Pod,并在其中的my-container容器中配置了三种类型的探针。

  • 存活探针(Liveness Probe)使用HTTP GET请求来检查容器的存活状态。它将在容器启动后的10秒后开始执行第一次探测,每隔15秒执行一次。
  • 就绪探针(Readiness Probe)使用TCP套接字检查容器是否准备好接收流量。它将在容器启动后的5秒后开始执行第一次探测,每隔10秒执行一次。
  • 启动探针(Startup Probe)使用自定义命令检查容器是否成功启动。它将在容器启动后的20秒后开始执行第一次探测,每隔30秒执行一次。

根据您的应用程序和需求,您可以根据上述示例自定义探针配置。根据实际情况,可能需要根据应用程序的健康检查端点、监听的端口或特定命令来配置探针。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
JSON Kubernetes Shell
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
|
2月前
|
Kubernetes Shell Perl
【Azure K8S|AKS】进入AKS的POD中查看文件,例如PVC Volume Mounts使用情况
【Azure K8S|AKS】进入AKS的POD中查看文件,例如PVC Volume Mounts使用情况
|
5天前
|
Kubernetes Docker Python
dockercompose与k8s的pod文件的爱恨情仇
dockercompose与k8s的pod文件的爱恨情仇
|
2月前
|
Kubernetes Docker Perl
在K8S中,如果是因为开发写的镜像问题导致pod起不来该怎么排查?
在K8S中,如果是因为开发写的镜像问题导致pod起不来该怎么排查?
|
2月前
|
Kubernetes 安全 Docker
在K8S中,在服务上线的时候Pod起不来怎么进行排查?
在K8S中,在服务上线的时候Pod起不来怎么进行排查?
|
2月前
|
存储 Kubernetes 调度
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
|
2月前
|
消息中间件 Kubernetes 容器
在K8S中,同⼀个Pod的不同容器互相可以访问是怎么做到的?
在K8S中,同⼀个Pod的不同容器互相可以访问是怎么做到的?
|
3天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
180 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
1月前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
52 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
下一篇
无影云桌面