kubernetes 配置示例 - liveness 和 Readiness

liveness 探针是让用户自定义判断容器是否健康的条件,如果探测失败,Kubernetes 会重启容器。

Readiness 探针是让用户自定义判断容器什么时候可以被 Kubernetes 加入到service 负载均衡池中,对外提供服务。

liveness 示例:

apiVersin: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness
spec:
  restartPolicy: OnFailure
  containers:
  - name: liveness
    image: busybox
    # 首先创建文件,30秒后删除
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      # 探测方法,通过 cat 命令检查 /tmp/healthy 文件是否存在。如果命令执行成功,返回
      # 值为 0,Kubernetes 则认为探测成功。非 0 值时为失败,Kubernetes 将会重启 Pod
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 10  # 容器启动 10 秒后进行探测
      periodSeconds: 5  # 每 5 秒进行一次探测

readiness 示例和liveness 几乎一样,只是把 livenessProbe 替换成 readinessProbe 。下面示例使用另外一种探测方式。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  template:
    metadata:
      labels:
        run: web
    spec:
      containers:
      - name: web
        image: myhttpd
        ports:
        - containerPort: 8080
        readinessProbe:
          httpGet:
            scheme: HTTP  #指定协议
            path: /healthy  # 访问路径
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: web-svc
spec:
  selector:
    run: web
  ports:
  - protocol: TCP
    port: 8080
    tartargetPort: 80

此例中,Kubernetes 将访问  http://[container_ip]:8080/healthy  来判断,如果返回码不是 200~400,表示容器没有就绪,不接收 Service web-svc 的请求。

posted @ 2022-03-03 16:54  一剑侵心  阅读(261)  评论(0编辑  收藏  举报