Клиент 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()