Kubenetes Pod显示状态为“已完成”,没有任何工作

时间:2019-10-28 12:20:39

标签: kubernetes

我正在托管一个Angular网站,该网站连接到Kubernetes集群中的C#后端。当我在网站上使用无法详细描述的某个功能时,窗格显示状态为“已完成”,然后进入“ CrashLoopBackOff”,然后重新启动。问题是,没有为该Pod设置任何作业(实际上,直到一个小时前,我什至不知道Jobs是一件事情)。所以我的主要问题是:Pod如何在不运行任何作业的情况下进入“已完成”状态?

我的.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-demo
  namespace: my-namespace
  labels:
    app: my-demo
spec:
  replicas: 1
  template:
    metadata:
      name: my-demo-pod
      labels:
        app: my-demo
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: my-demo-container
        image: myregistry.azurecr.io/my.demo:latest
        imagePullPolicy: Always
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        ports:
          - containerPort: 80
      imagePullSecrets:
      - name: my-registry-secret
  selector:
    matchLabels:
      app: my-demo
---
apiVersion: v1
kind: Service
metadata:
  name: my-demo-service
  namespace: my-namespace
spec:
  ports:
  - protocol: TCP
    port: 80
    name: my-demo-port
  selector:
    app: my-demo

1 个答案:

答案 0 :(得分:0)

Completed状态指示由cmdENTRYPOINT调用的应用程序以非错误(即0)状态代码退出。这个Completed-> CrashLoopBackoff-> Running周期通常指示在容器开始时调用的进程不会守护自己并退出,Kubernetes将该进程视为“完成”,因此状态。

检查Dockerfile中的ENTRYPOINT或pod模板中的cmd是否正在为要守护的进程调用正确的进程(带有适当的标志)。您还可以查看前一个pod的日志(即使用kubectl logs --previous),以查看应用程序提供了什么输出