首页 > 其他分享 >在K8S中,Pod有几种探针?

在K8S中,Pod有几种探针?

时间:2024-07-30 11:33:24浏览次数:19  
标签:容器 livenessProbe initialDelaySeconds 探针 periodSeconds readinessProbe Pod K8S

在 Kubernetes (K8s) 中,Pod 的容器可以通过探针(Probes)来检测容器的健康状况和就绪状态。探针主要用于确保容器能够正确启动并在运行过程中保持健康状态。Kubernetes 支持三种类型的探针:

  1. livenessProbe (存活探针)
  2. readinessProbe (就绪探针)
  3. startupProbe (启动探针)

每种探针都有其特定的作用和使用场景。

1. livenessProbe (存活探针)
  • 目的

    • 检查容器是否还活着,即是否处于正常运行状态。
    • 如果容器被认为是不健康的,Kubernetes 会杀死这个容器,并根据容器的重启策略(如 AlwaysOnFailure)来决定是否重启它。
  • 触发时机

    • 在容器运行期间定期执行。
  • 示例配置

    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
    
2. readinessProbe (就绪探针)
  • 目的

    • 检查容器是否已经准备好接收流量。
    • 只有当容器通过就绪探针检查时,Kubernetes 才会将其加入到 Service 的后端列表中。
  • 触发时机

    • 在容器运行期间定期执行。
  • 示例配置

    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
    
3. startupProbe (启动探针)
  • 目的

    • 检查容器是否成功启动并进入就绪状态。
    • 这种探针主要用于那些启动时间较长的应用程序,以避免在容器启动完成之前就执行 livenessProbe 或 readinessProbe。
  • 触发时机

    • 在容器启动后立即执行,并在容器被认为已准备好之前一直执行。
  • 示例配置

    startupProbe:
      exec:
        command:
          - cat
          - /tmp/healthy
      initialDelaySeconds: 1
      periodSeconds: 1
      failureThreshold: 30
    
4. 探针配置参数
  • httpGet

    • 通过 HTTP GET 请求来检查容器状态。
    • 需要指定路径和端口。
  • tcpSocket

    • 检查容器内的 TCP 端口是否打开。
    • 需要指定端口号。
  • exec

    • 在容器内执行命令。
    • 需要指定要执行的命令。
  • initialDelaySeconds

    • 探针开始执行前等待的秒数。
  • periodSeconds

    • 探针执行间隔的秒数。
  • timeoutSeconds

    • 探针执行的最大等待时间。
  • successThreshold

    • 探针连续成功执行的次数。
  • failureThreshold

    • 探针连续失败执行的次数,超过此次数后将采取行动。
4. 使用探针的好处
  • 提高应用的可靠性:通过探针可以及时发现容器的问题,并采取适当的措施,如重启容器。
  • 优化服务的可用性:只有当容器准备就绪时才将流量路由到该容器,确保服务始终可用。
  • 减少不必要的资源浪费:避免长时间运行不健康或未准备好状态的容器。
5. 示例 YAML 配置

以下是一个简单的 YAML 文件示例,展示了如何配置 livenessProbe 和 readinessProbe:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: my-app-image
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

综上所述,这些探针配置可以根据实际应用的需求进行调整,以确保容器的健康和就绪状态得到有效的监控。

标签:容器,livenessProbe,initialDelaySeconds,探针,periodSeconds,readinessProbe,Pod,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18331982

相关文章

  • 在K8S中,删除一个Pod会发生什么事情?
    在Kubernetes(K8S)中,删除一个Pod会触发一系列操作,包括向容器发送终止信号、清理资源以及可能的重新调度。以下将详细阐述具体过程:用户发出删除命令命令提交:用户通过kubectl命令行工具或者API接口发出删除Pod的请求,例如执行kubectldeletepod<pod-name>[3]。APIServer响应:Kub......
  • k8s工作负载控制器--Deployment
    目录一、引入背景二、主要功能三、资源清单四、实例1、流程2、创建Deployment资源清单3、创建Deployment4、检查Deployment是否创建成功(正在创建)5、查看Deployment的上线状态6、再次查看Deployment状态(创建完成)7、查看Deployment创建的ReplicaSet(rs)8、查看被创建的Pod的标签9、......
  • k8s命令行工具扩展
    工具kubectxwhat?切换context、namespace$kubectxminikubeSwitchedtocontext"minikube".$kubenskube-systemContext"test"set.Activenamespaceis"kube-system".fzfwhat?fzf:fuzzyfinder,一个通用的命令行模糊搜索工具主要用来列举env、cont......
  • 在K8S中,pause容器作用是什么?
    在Kubernetes(K8S)中,pause容器是一个特殊的、由系统提供的最小容器,它被用作Pod网络命名空间中的一个占位符。每个Pod都有一个pause容器,即使用户没有显式地定义它。pause容器的主要作用是确保Pod中的所有其他容器可以共享网络栈。以下是pause容器的一些关键作用:......
  • 在K8S中,服务是如何发布的?
    在K8S中,服务的发布包括定义Service资源、创建Service对象、配置路由规则以及通过Service的ClusterIP或NodePort暴露服务给外部访问。下面将详细探讨这一过程:定义Service资源ResourceDefinition:在Kubernetes中,要发布一个服务,首先需要定义一个Service资源。这通常是通过YAML......
  • 在K8S中,DNS组件有什么特性?
    在Kubernetes(K8S)中,DNS组件是集群的核心组成部分之一,它负责提供服务发现的功能,使Pod和服务能够通过域名相互通信。Kubernetes的DNS组件主要由以下几个部分组成:DNS服务器:kube-dns或coredns是Kubernetes社区中最常用的DNS服务器实现。DNS服务器监听在集群......
  • 在K8S中,在容器内如何获取pod和namespace名字?
    在K8S中,可以通过DownwardAPI将Pod和Namespace的名字注入到容器内的环境变量或文件中。这种方法允许容器内部的应用直接访问这些信息,从而进行相应的配置或处理。具体技术介绍如下:环境变量获取获取Pod名称:在Pod的配置中,可以通过设置一个环境变量,将Pod的名称注入到容器内。例......
  • kubeadm安装部署K8S-1.30.2
    1、环境准备1.1、节点规划#CentOSLinuxrelease7.9.2009(Core)master0110.202.30.22 #4C8Gnode0110.202.30.30 #4C8Gnode0210.202.30.31 #4C8G1.2、配置hosts主机名解析#vim/etc/hosts10.202.30.22master0110.202.30.30nod......
  • k8s修改pod的内核参数以优化服务网络性能
    k8s修改pod的内核参数以优化服务网络性能1、面对高并发场景:TIME_WAIT连接复用如果短连接并发量较高,它所在netns中TIME_WAIT状态的连接就比较多,而TIME_WAIT连接默认要等2MSL时长才释放,长时间占用源端口,当这种状态连接数量累积到超过一定量之后可能会导致无法新建连接。所......
  • 【K8s】专题七(4):Kubernetes 服务发现之 Ingress 进阶
    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!目录一、官方文档二、Ingress进阶使用(示例)1、Ingress实现重定向2、Ingress实现路由跳转3、Ingress实现自定义配置4、Ingress实现CORS5、Ingress实......