如何将运行状况检查放入部署清单中?

时间:2019-07-17 19:12:26

标签: kubernetes

我仍在学习kubernetes,并且从pod迁移到部署配置。 在我喜欢进行健康检查的豆荚上,这是一个使用弹簧靴致动器的示例:

livenessProbe:
      httpGet:
        path: /actuator/health
        port: 8080
    initialDelaySeconds: 60
    timeoutSeconds: 1
    periodSeconds: 30
    failureThreshold: 3

问题是上述配置仅适用于Pod。如何在部署中使用它们?

1 个答案:

答案 0 :(得分:3)

Deployment将创建一个ReplicaSet,副本集将维护您的Pods

Liveness and readiness probes在容器级别配置,并且当所有容器就绪时,Pod被视为已就绪。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

Spring执行器运行状况检查API是应用程序的一部分,捆绑在一个容器中。

Kubernetes将检查Pod中每个容器的活动性和就绪状态探针,如果其中任何一个探针在certain amount of time and attempts之后未能成功返回,它将杀死该Pod并启动一个新容器。

在部署级别设置探针没有意义,因为您可能在同一部署下运行多个Pod,并且如果其中一个Pod不健康,您也不想杀死健康的Pod。

使用相同pod配置的部署描述符如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: liveness-deployment
  labels:
    app: liveness
spec:
  replicas: 3
  selector:
    matchLabels:
      app: liveness
  template:
    metadata:
      labels:
        app: liveness
    spec:
      containers:
      - name: liveness
        image: k8s.gcr.io/busybox
        args:
        - /bin/sh
        - -c
        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
        livenessProbe:
          exec:
            command:
            - cat
            - /tmp/healthy
          initialDelaySeconds: 5
          periodSeconds: 5