开发者社区> 问答> 正文

Kubernetes,活力探测失败但是pod处于Running状态

我正在尝试用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

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

kubectl get pods -o wide
几秒钟之一其中一个pods状态为“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
flask-1.3-6c644b8648-t6qhv 0/1 CrashLoopBackOff 7 6m19s 10.244.2.230 nod2e
几秒钟后,一个pod正在RUNNING,当live失败时:

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

flask-1.3-6c644b8648-t6qhv   0/1     CrashLoopBackOff   7          6m20s   10.244.2.230   nod2e   <none>           <none>

在运行回到CrashLoopBackOff之后,问题是,为什么如果livenesprobe总是失败,它会在几秒钟内保持运行?

展开
收起
k8s小能手 2019-01-09 13:58:51 5210 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    当您第一次启动pod(或容器)时,它将启动并进入“运行”状态。现在,如果容器中没有正在运行的进程,或者存在非连续进程(比如sleep 100),则当此进程完成时,kubernetes将考虑完成此pod。

    现在,由于您有一个部署,即将保持一定数量的副本运行,它会重新创建pod。但同样,没有进程在运行,所以再次完成。这是一个无限循环。

    如果要保持pod正常运行,即使内部没有进程,也可以tty: true在yaml文件中传递参数。

    apiVersion: v1
    kind: Pod
    metadata:
    name: debian
    labels:

    app: debian

    spec:
    containers:

    • name: debian
      image: debian
      tty: true # this line will keep the terminal open
      如果您在没有上面运行pod tty: true,同样会发生这种情况。
    2019-07-17 23:24:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载

相关镜像