K8S系列之探针

K8S的探针包括存活探针(Liveness)检查容器是否需要重启,就绪探针(Readiness)确认容器是否能提供服务,启动探针(Startup)则监控容器启动状态。探针可通过脚本、HTTP、TCP或gRPC方式执行检测,确保应用和服务的稳定性和效率。
摘要由CSDN通过智能技术生成

什么是探针

探针是一种用于探测、检测、测量或监测某些物理或化学性质的工具或设备,通常由一个或多个传感器和一个数据采集和处理单元组成。探针可以被用于各种应用,例如对生物体进行检测、监测环境污染、测试材料性能等。在计算机领域中,探针也可以指一种用于监测应用程序或系统性能的工具。

K8S的3大探针

Liveness

存活探针可以检查容器是否存活,是否需要重新启动容器;有助于提高应用的可用性。

Readiness

就绪探针只有等容器可以提供服务了,才会使用K8S的服务注册机制提供服务,例如:service后端的pod,只有就绪探针没有问题才能提供服务。(如果应用有自己的注册中心,这个配置估计达不到想象中的效果)

Startup

启动探针可以了解容器何时准备启动,如果配置了这类探针,你就可以控制容器在启动成功后再进行存活性和就绪态检查, 确保这些存活、就绪探针不会影响应用的启动。 启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉。

K8S探针探测的4大形式

脚本

定义一组需要容器内执行的脚本命令

apiVersion: v1

kind: Pod

metadata:

  labels:

    test: liveness

  name: liveness-exec

spec:

  containers:

  - name: liveness

    image: registry.k8s.io/busybox

    args:

    - /bin/sh

    - -c

    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600

    livenessProbe:

      exec:

        command:

        - cat

        - /tmp/healthy

      initialDelaySeconds: 5

      periodSeconds: 5

执行如下命令

/bin/sh -c "touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600"

http

container需要提供http get接口,kubelet会调用http请求,根据response status来判断之后的操作。

apiVersion: v1

kind: Pod

metadata:

  labels:

    test: liveness

  name: liveness-http

spec:

  containers:

  - name: liveness

    image: registry.k8s.io/liveness

    args:

    - /server

    livenessProbe:

      httpGet:

        path: /healthz

        port: 8080

        httpHeaders:

        - name: Custom-Header

          value: Awesome

      initialDelaySeconds: 3

      periodSeconds: 3

tcp

测试端口的连通性,判断进程是否可用

apiVersion: v1

kind: Pod

metadata:

  labels:

    test: liveness

  name: liveness-http

spec:

  containers:

  - name: liveness

    image: registry.k8s.io/liveness

    args:

    - /server

    livenessProbe:

      httpGet:

        path: /healthz

        port: 8080

        httpHeaders:

        - name: Custom-Header

          value: Awesome

      initialDelaySeconds: 3

      periodSeconds: 3

gRPC

开启GRPCContainerProbe来支持grpc调用

apiVersion: v1

kind: Pod

metadata:

  name: etcd-with-grpc

spec:

  containers:

  - name: etcd

    image: registry.k8s.io/etcd:3.5.1-0

    command: [ "/usr/local/bin/etcd", "--data-dir",  "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0:2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug"]

    ports:

    - containerPort: 2379

    livenessProbe:

      grpc:

        port: 2379

      initialDelaySeconds: 10

总览

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值