Kubernetes就绪探针和存活探针

探针原理介绍

  • 就绪探针 Readiness Probe 流量接入的依据;了就绪探针之后,K8S可以判断POD是否已经就绪,来决策是否向POD做流量转发。否则,可能会造成POD没有就绪,K8S已经在做流量转发,应用访问报错。这种场景,多发生的replicaSet扩容,增加POD数量的时候。
  • 存活探针 Liveness Probe Kill容器(POD)的依据;

下图所示样例,需要加入到微服务POD YAML发布文件里,发布之后,K8S对定期向POD发出请求,来检查POD状态,健康。

官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
在这里插入图片描述

编辑微服务发布文件

新增readinessProbe段。
petclinic-svc.yml文件修改内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: petclinic
spec:
  replicas: 1
  selector:
    matchLabels:
      app: petclinic
  template:
    metadata:
      labels:
        app: petclinic
    spec:
      containers:
      - name: petclinic
        # Run this image
        image: spring2go/spring-petclinic:1.0.0.RELEASE
        readinessProbe:
          httpGet:
            # pod目录下,springboot用于健康检查的endpoint,不用通过网关,所以可以直接写endpoint路径。
            path: /actuator/health
            # 微服务内部启用端口,查看下面service部分
            port: 8080
        envFrom:
          - configMapRef:
              name: petclinic-config
---
apiVersion: v1
kind: Service
metadata:
  # Unique key of the Service instance
  name: petclinic
spec:
  ports:
    # Accept traffic sent to port 80
    - name: http
      # port为集群内部服务前通信的端口
      port: 8080
      targetPort: 8080
      nodePort: 31080
  selector:
    # 下面标签app: petclinic表示本服务会路由指向所有app标签为petclinic的pod。
    app: petclinic
  type: NodePort

可以查看POD详情,找到Readiness探针。

kubectl describe po pod_name

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐