Всякий раз, когда я создаю модуль, его статус меняется на «CrashLoopBackOff» после «Завершено». Я использую microk8s. Я загрузил образ в реестр microk8s. Я создаю модуль, выполнив эту команду: «kubectl create -f backend-deployment.yml»

Backend.Dockerfile (это файл докера от 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

Что я делаю не так?

0
Usama Hameed 2 Фев 2022 в 15:39

2 ответа

Развертывание по дизайну будет стремиться поддерживать работу всех своих реплик.

Если ваш модуль завершится успешно или нет, развертывание перезапустит его.

Если развертывание обнаружит, что модуль неоднократно перезапускался, он добавит задержки к попыткам перезапуска, поэтому CrashLoopBackoff

Если модуль должен запускаться только один раз до завершения, вместо этого он должен быть сконструирован как Job.

Дополнительная литература: https://kubernetes.io/docs/concepts/workloads/controllers/ работа/

2
Blender Fox 2 Фев 2022 в 15:51
Я где-то читал, что не добавил команду для запуска сервера django в dockerfile, поэтому модуль переходит в CrashLoopBackoff.
 – 
Usama Hameed
2 Фев 2022 в 15:56
1
Если вы не объявили, что образ запускает что-либо, это также приведет к преждевременному завершению модуля, поскольку ему нечего делать :)
 – 
Blender Fox
2 Фев 2022 в 15:57

Я нашел исправление для этого, основная проблема заключалась в том, что я не добавил команду для запуска сервера django, поэтому модули вылетали из образа внутри модуля, не зная, что запускать.

Я изменил свой файл yml на:


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

1
Usama Hameed 3 Фев 2022 в 12:47