【问题标题】:Kubernetes pod in crashloopbackoffcrashloopbackoff 中的 Kubernetes pod
【发布时间】:2020-10-28 01:35:36
【问题描述】:

我是 Kubernetes 新手。

以下是我正在运行的 yaml:

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: k8-demo-aishwarya
    app.kubernetes.io/version: version1
  name: k8-demo-aishwarya
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
  selector:
    app.kubernetes.io/name: k8-demo-aishwarya
    app.kubernetes.io/version: version1
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: k8-demo-aishwarya
    app.kubernetes.io/version: version1
  name: k8-demo-aishwarya
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: k8-demo-aishwarya
      app.kubernetes.io/version: version1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: k8-demo-aishwarya
        app.kubernetes.io/version: version1
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: docker.io/aishvaryaps/spring-boot-on-kubernetes-example:0.12-SNAPSHOT
        imagePullPolicy: IfNotPresent
        name: k8-demo-aishwarya
        ports:
        - containerPort: 80
          name: http
          protocol: TCP

遇到 crashloopbackoff 错误

谁能指导我?

镜像没有问题,运行正常,我在 Docker 上测试过了。

Kubernetes pod 日志如下

1. Successfully assigned default/k8-demo-aishwarya-fdd8d58c6-lvxp9 to gke-cluster-3-pool-1-997819b9-j3b2
2. Container image "docker.io/aishvaryaps/spring-boot-on-kubernetes-example:0.12-SNAPSHOT" already present on machine
3. Created container k8-demo-aishwarya
4. Started container k8-demo-aishwarya
5. Back-off restarting failed container

【问题讨论】:

  • 在普通 Docker 上运行该映像时会发生什么?你有失败 pod 的 kubectl logs 吗?
  • 最好kubectl logs --previous 以确保在退出之前收集所有容器日志:)
  • kubectl logs default/k8-demo-aishwarya-fdd8d58c6-lvxp9 请输出。谢谢。

标签: docker kubernetes service deployment crashloopbackoff


【解决方案1】:

请查看 POD 的日志以获取更多详细信息,但我认为这是由于处理正在容器内结束并打印 Hello World by Aishwarya S! 您可以通过日志进行检查。

您可以通过在 YAML 中添加一行来继续运行 pod:

command: ["/bin/sh", "-ec", "sleep 1000"]

此命令保持 pod 运行

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: k8-demo-aishwarya
    app.kubernetes.io/version: version1
  name: k8-demo-aishwarya
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: k8-demo-aishwarya
      app.kubernetes.io/version: version1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: k8-demo-aishwarya
        app.kubernetes.io/version: version1
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: docker.io/aishvaryaps/spring-boot-on-kubernetes-example:0.12-SNAPSHOT
        command: ["/bin/sh", "-ec", "sleep 1000"]
        imagePullPolicy: IfNotPresent
        name: k8-demo-aishwarya
        ports:
        - containerPort: 80
          name: http
          protocol: TCP

【讨论】:

    【解决方案2】:

    容器正在运行,正在打印 hello world 消息并退出。请参阅下面的容器日志。

    $ docker ps -a
    CONTAINER ID        IMAGE                                                         COMMAND                  CREATED             STATUS                      PORTS               NAMES
    2b177abdbae1        aishvaryaps/spring-boot-on-kubernetes-example:0.12-SNAPSHOT   "/bin/sh -c 'java ${…"   12 seconds ago      Exited (0) 10 seconds ago                       dummy
    
    
    $ docker logs -f 2b1
    Hello World by Aishwarya S!
    

    如果要保持容器运行,容器内的进程应该继续运行。您可能需要从 while 或 for 循环中打印消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-26
      • 2019-03-31
      • 2022-07-11
      • 2018-10-03
      • 2017-12-09
      • 2020-05-04
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多