Всякий раз, когда я создаю модуль, его статус меняется на «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
Что я делаю не так?
2 ответа
Развертывание по дизайну будет стремиться поддерживать работу всех своих реплик.
Если ваш модуль завершится успешно или нет, развертывание перезапустит его.
Если развертывание обнаружит, что модуль неоднократно перезапускался, он добавит задержки к попыткам перезапуска, поэтому CrashLoopBackoff
Если модуль должен запускаться только один раз до завершения, вместо этого он должен быть сконструирован как Job
.
Дополнительная литература: https://kubernetes.io/docs/concepts/workloads/controllers/ работа/
Я нашел исправление для этого, основная проблема заключалась в том, что я не добавил команду для запуска сервера django, поэтому модули вылетали из образа внутри модуля, не зная, что запускать.
Я изменил свой файл yml на:
containers:
- name: backand
image: localhost:32000/backend:latest
command: ["python", "manage.py", "runserver"]
ports:
- containerPort: 8000
Новые вопросы
docker
Docker - это инструмент для создания и запуска контейнеров. Вопросы, касающиеся Dockerfiles, операций и архитектуры принимаются. Вопросы о запуске Docker в производстве могут найти лучшие ответы на ServerFault (https://serverfault.com/). Тег docker редко используется один и часто в паре с другими тегами, такими как docker-compose и kubernetes.