完成后 pod 的状态更改为 CrashLoopBackOff

status of pod changes to CrashLoopBackOff after completed

每当我创建 Pod 时,Pod 的状态都会在 'Completed' 之后变为 '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

后端-deployment.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

我做错了什么?

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

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

如果 Deployment 检测到 pod 重复重启,它会增加重启尝试的延迟,因此 CrashLoopBackoff

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

进一步阅读:https://kubernetes.io/docs/concepts/workloads/controllers/job/

我找到了解决方法,主要问题是我没有将命令添加到 运行 django 服务器,这就是 pods 导致 pod 内的图像崩溃的原因 不知道什么 运行.

我将我的 yml 文件更改为:


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