K8S系列之探针

什么是探针

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

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

总览

K8S系列之探针_第1张图片

你可能感兴趣的:(K8S,kubernetes,docker,容器)