首页 > 其他分享 >在K8S中,Pod 的健康检查方式有哪些?

在K8S中,Pod 的健康检查方式有哪些?

时间:2024-10-08 13:33:43浏览次数:7  
标签:容器 initialDelaySeconds 8080 Probe 探针 periodSeconds 健康检查 Pod K8S

在 Kubernetes 中,Pod 的健康检查是通过探针(Probe)来实现的,主要有三种类型的探针:存活探针(Liveness Probe)、就绪探针(Readiness Probe)和启动探针(Startup Probe)。以下是这些探针的详细介绍和配置方式:

  1. 存活探针(Liveness Probe)

    • 目的:确定容器是否正在运行并能够响应请求。如果存活探针失败,Kubernetes 会根据 Pod 的重启策略重启容器。

    • 探测方式

      • ExecAction:在容器内执行命令,如果命令执行成功(返回码为0),则认为容器健康。例如,可以检查某个特定文件是否存在或执行某个脚本。
      • HTTPGetAction:向容器的特定端口和路径发送 HTTP GET 请求,如果响应码在200-399之间,则认为容器健康。
      • TCPSocketAction:尝试与容器的指定端口建立 TCP 连接,如果连接成功,则认为容器健康。
    • 配置示例

      livenessProbe:
        exec:
          command:
          - cat
          - /tmp/healthy
        initialDelaySeconds: 5
        periodSeconds: 5
      
  2. 就绪探针(Readiness Probe)

    • 目的:确定容器是否准备好接收流量。如果就绪探针失败,Pod 将不会被加入到任何服务的负载均衡池中。

    • 探测方式:与存活探针相同,可以是 ExecAction、HTTPGetAction 或 TCPSocketAction。

    • 配置示例

      readinessProbe:
        httpGet:
          path: /healthz
          port: 8080
        initialDelaySeconds: 3
        periodSeconds: 3
      
  3. 启动探针(Startup Probe)

    • 目的:确定容器中的应用程序是否已经启动。如果应用程序启动缓慢,使用启动探针可以避免在应用程序完全启动前就进行存活探针和就绪探针的检查。

    • 探测方式:可以是 ExecAction、HTTPGetAction 或 TCPSocketAction。

    • 配置示例

      startupProbe:
        httpGet:
          path: /healthz
          port: 8080
        initialDelaySeconds: 15
        periodSeconds: 10
        failureThreshold: 30
      

除了这些基本的配置,探针还可以配置其他参数,如 initialDelaySeconds(首次探测前的等待时间)、periodSeconds(探测间隔时间)、timeoutSeconds(探测超时时间)、successThreshold(探测成功阈值)、failureThreshold(探测失败阈值)等。

例如,以下是一个完整的探针配置示例,包含了存活探针和就绪探针:

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: registry.k8s.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 10

综上所述,在这个示例中,readinessProbelivenessProbe 都使用了 TCP 套接字来检查容器的 8080 端口是否开放,从而判断容器是否就绪和存活。

标签:容器,initialDelaySeconds,8080,Probe,探针,periodSeconds,健康检查,Pod,K8S
From: https://www.cnblogs.com/huangjiabobk/p/18451470

相关文章

  • k8s pods 迭代penging
    节点磁盘空间不足,导致的集群GC清理失败,如果频繁发生,您需要扩容磁盘空间了kubectldeletensns_id--force一直Terminating?finalizers:-finalizers.kubesphere.io/namespaceskubectleditdeploykiali-operator-nistio-systemdefault8m31sWarningVolumeFailedDelet......
  • 如何使用minikube搭建k8s集群
    使用minikube搭建K8s(Kubernetes)集群是一个在本地快速设置Kubernetes环境的方法,特别适合用于学习和开发。以下是详细步骤:一、环境准备操作系统:如LinuxCentOS7.964位。CPU和内存:至少2核CPU和4GiB内存,建议2核CPU和更多内存以获得更好的性能。硬盘:至少需要20GB的硬盘空间。网......
  • 在K8S中,什么是静态Pod?
    在Kubernetes(K8S)中,静态Pod(StaticPod)是一种特殊的Pod类型,它并不是通过KubernetesAPIServer进行管理的,而是直接存在于节点上的。静态Pod的配置文件通常放置在节点上的特定目录中,由`kubelet`直接读取并创建和管理Pod。#####1.静态Pod的特点1.**直接管理**......
  • 在K8S中,kube-proxy ipvs和 iptables 有何异同?
    在Kubernetes(K8s)中,kube-proxy是负责服务发现和负载均衡的关键组件,它支持多种代理模式,其中IPVS和iptables是两种常用的模式。以下是kube-proxy在IPVS和iptables模式下的异同点:1.相同点服务发现和负载均衡:IPVS和iptables模式都用于实现Kubernetes中的服务发现和负载均衡功能。......
  • 基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云平台系统(附配置告警至QQ、钉钉)
    目录一、机器规划二、部署安装node-exporter、prometheus、Grafana、kube-state-metrics1、创建monitor-sa命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据3、k8s集群中部署prometheus3.1、创建一个sa账号3.2、将sa账号moni......
  • 在K8S中,kube-proxy有何作用?
    在Kubernetes(K8S)中,kube-proxy是一个关键组件,它负责实现KubernetesService的通信和负载均衡机制。以下是kube-proxy的主要作用和工作原理:服务代理和负载均衡:kube-proxy作为集群内部的负载均衡器,负责将进入的请求转发到后端的Pod。它为每个Service提供一个稳定的IP地......
  • 在K8S中,kube-proxy ipvs原理是什么?
    在Kubernetes(K8S)中,kube-proxy的IPVS模式是一种高性能的负载均衡解决方案,它利用Linux内核的IPVS(IPVirtualServer)功能来实现服务的负载均衡。以下是kube-proxy在IPVS模式下的工作原理:监听API服务器:kube-proxy启动后会持续监听KubernetesAPI服务器上的Service资源......
  • 在K8S中,kube-proxy iptables原理是什么?
    在Kubernetes中,kube-proxy使用不同模式来实现其功能,其中iptables模式是早期广泛使用的模式之一。下面详细介绍kube-proxy使用iptables模式的基本原理。1.iptables原理概述iptables是Linux内核的一部分,用于定义网络封包过滤规则。它是一个用户空间的应用程序,用来设......
  • k8s_deployConfig
    K8s_Deploy:环境变量ingress暴露port暴露requests和limitshost绑定环境变量:spec.template.spec.containers.env常量定义,比如灰度环境定义:-name:APP_ENVvalue:GRAY有时需要获取容器的一些信息,参数名自定义,则可参数引用:-name:POD_NAME......
  • 多Master节点的k8s集群部署-完整版
    多Master节点的k8s集群部署一、准备工作1.准备五台主机(三台Master节点,一台Node节点,一台普通用户)如下:角色IP内存核心磁盘Master01192.168.116.1414G4个55GMaster02192.168.116.1424G4个55GMaster03192.168.116.1434G4个55GNode192.168.116.14......