【问题标题】:status of pod changes to CrashLoopBackOff after completed完成后 Pod 的状态变为 CrashLoopBackOff
【发布时间】:2022-02-03 17:47:14
【问题描述】:

每当我创建一个 Pod 时,Pod 的状态都会在“完成”后变为“CrashLoopBackOff”。 我正在使用 microk8s,我已将图像推送到 microk8s 注册表。我正在通过运行以下命令创建一个 pod:“kubectl create -f backend-deployment.yml”

backend.Dockerfile(这个docker文件是Django的):

From python:3
ENV PYTHONUNBUFFERED 1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . ./
EXPOSE 8000

后端部署.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name : backend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: backend
  template:
    metadata:
      labels:
        component: backend
    spec:
      containers:
        - name: backand
          image: localhost:32000/backend:latest
          ports:
          - containerPort: 8000

我做错了什么?

【问题讨论】:

    标签: docker kubernetes microk8s


    【解决方案1】:

    Deployment 的设计将努力保持其所有副本运行。

    如果您的 pod 完成,无论成功与否,Deployment 都会重新启动它。

    如果 Deployment 检测到 pod 已反复重启,它将为其重启尝试添加延迟,因此 CrashLoopBackoff

    如果 pod 应该只运行一次即可完成,则应将其构造为 Job

    延伸阅读:https://kubernetes.io/docs/concepts/workloads/controllers/job/

    【讨论】:

    • 我在某处读到我没有在 dockerfile 中添加运行 django 服务器的命令,这就是 pod 转到 CrashLoopBackoff 的原因。
    • 如果你没有声明镜像运行任何东西,这也会导致 Pod 提前终止,因为它无事可做:)
    【解决方案2】:

    我找到了一个修复它的主要问题是我没有添加命令来运行 django 服务器,这就是为什么 pod 崩溃了 pod 内的图像不知道要运行什么。

    我将我的 yml 文件更改为:

    
          containers:
            - name: backand
              image: localhost:32000/backend:latest
              command: ["python", "manage.py", "runserver"]
              ports:
              - containerPort: 8000
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2020-05-23
      • 2020-09-01
      • 1970-01-01
      • 2019-04-04
      • 2023-03-11
      • 2019-08-06
      • 2021-01-19
      相关资源
      最近更新 更多