Kubernetes,活动性探测失败,但Pod处于运行状态

Est*_*ths 5 kubernetes

我正在尝试使用kubernetes进行蓝绿色部署,我已经按照https://www.ianlewis.org/en/bluegreen-deployments-kubernetes进行部署了,没关系。我添加了一个活力探测器来执行健康检查,

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: flask-1.3
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: app
        version: "1.3"
    spec:
      containers: 
        - name: appflask
          image: 192.168.99.100:5000/fapp:1.2
          livenessProbe:
            httpGet:
             path: /index2
             port: 5000
            failureThreshold: 1
            periodSeconds: 1
            initialDelaySeconds: 1
          ports:
            - name: http
              containerPort: 5000
Run Code Online (Sandbox Code Playgroud)

路径“ index2”不存在,我要测试失败的部署。问题是当我执行时:

 kubectl get pods -o wide
Run Code Online (Sandbox Code Playgroud)

几秒钟后,其中一个Pod处于“ RUNNING”状态

NAME                         READY   STATUS             RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES

flask-1.3-6c644b8648-878qz   0/1     CrashLoopBackOff   6          6m19s   10.244.1.250   node    <none>           <none>
flask-1.3-6c644b8648-t6qhv   0/1     CrashLoopBackOff   7          6m19s   10.244.2.230   nod2e   <none>           <none>
Run Code Online (Sandbox Code Playgroud)

几秒钟后,当实时失败时,一个pod正在运行:

NAME                         READY   STATUS             RESTARTS   AGE 

    IP             NODE    NOMINATED NODE   READINESS GATES

   flask-1.3-6c644b8648-878qz   1/1     Running            7          6m20s   10.244.1.250   node    <none>           <none>
    flask-1.3-6c644b8648-t6qhv   0/1     CrashLoopBackOff   7          6m20s   10.244.2.230   nod2e   <none>           <none>
Run Code Online (Sandbox Code Playgroud)

然后将其运行回到CrashLoopBackOff之后,问题是,如果livenesprobe总是失败,为什么为什么要在几秒钟内保持运行状态?

提前致谢

edb*_*ead 4

您应该查看Readiness 探针,或者同时查看两者。

就绪探针和活性探针可以对同一容器并行使用。使用两者可以确保流量不会到达尚未准备好的容器,并且容器在失败时重新启动。

Liveness 探针检查您的应用程序在已运行的 pod中是否处于健康状态。

就绪探针实际上会检查您的 Pod 是否已准备好接收流量。因此,如果没有/index2端点,它永远不会显示为正在运行