Клиент Python Django Eureka Client не отсоединяется от сервера Eureka Server в кластере Kubernetes

Я хочу зарегистрировать клиент python django eureka на сервере java spring eureka. При регистрации проекта django на сервере eureka на localhost проблем нет, при запуске проекта django он регистрируется на сервере eureka. при остановке проекта django с помощью CTRL + C, он удаляется с сервера eureka. Проблема в том, что регистрируя проект django через кластер Kubernetes, я запускаю pod командой "kubectl apply -f kub8s-media.yaml" и он успешно регистрируется, но когда я хочу остановить проект с помощью "kubectl delete -f kub8s-media.yaml" или перезапустить с помощью "kubectl rollout restart deployment kub8s-deploy" проект django не снимается с регистрации на сервере eureka

Dockerfile

FROM python

RUN mkdir /backend-media

COPY . /backend-media

WORKDIR /backend-media

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

EXPOSE 8001

RUN pip install -r requirements.txt

CMD ["python", "manage.py", "runserver", "0.0.0.0:8001"]

kub8s-media.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-media-deploy
spec:
  selector:
    matchLabels:
      app: backend-media
  replicas: 1
  template:
    metadata:
      labels:
        app: backend-media
    spec:
      containers:
      - name: backend-media-app
        ports:
          - containerPort: 8001
        image: aalfaa00/media:latest



---
apiVersion: v1
kind: Service
metadata:
  name: backend-media-svc
  labels:
    app: backend-media
spec:
  type: NodePort
  ports:
    - port: 8001
      protocol: TCP
  selector:
    app: backend-media

eureka.py

import random
import string
import os
import py_eureka_client.eureka_client as eureka_client


N = 32
res = ''.join(random.choices(string.ascii_lowercase + string.digits, k=N))


server_port = 8001


def eureka_init():
    if os.environ.get("RUN_MAIN"):
        eureka_client.init(eureka_server="http://192.168.49.2:32451",
                        app_name="service",
                        instance_port=server_port,
                        instance_id=("media:" + str(res)))
        print("Eureka client is running")


def stop_eureka():
    if os.environ.get("RUN_MAIN"):
        eureka_client.stop()
        print("Stopping Eureka client")

manage.py

import os
import sys
from media_service.eureka import eureka_init, stop_eureka


def main():
    """Run administrative tasks."""
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'media_service.settings')
    if os.environ.get('RUN_MAIN'):
        print('run')
        eureka_init()
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)
    stop_eureka()

if __name__ == '__main__':
    main()

Вернуться на верх