Вызовите api rest для контейнерных колб DOCKER в модуле из другого api rest для контейнерных колб в том же кластере KUBERNETES

#python #docker #kubernetes #flask-restful

Вопрос:

Я работаю с Flask, настольной версией Docker с включенным Kubernetes. Моя цель состоит в том, чтобы :

  • Создайте два модуля
  • Каждый стручок содержит один контейнер
  • Каждый контейнер представляет собой api rest для колбы
  • Вызовите api rest в контейнере из api rest другого контейнера

Проблема в том, что я не смог выполнить вызов внутри одного api из-за недоступного адреса. Вот неработающий код в app.py файл :

 @app.route("/testpredict", methods=["POST"])
def testpredict():
    response = requests.post(url="http://deppredict:1080/predict")
    return response.text, 200
 

Я попытался позвонить на локальный хост, 127.0.0.1, http://kubernetes_master_address/api/v1/namespaces/namespace_name/services/[https:]service_name[:port_name]/proxy как указано в документах

Поэтому в качестве обходного пути я передал вызов на аутсорсинг, который сработал, но не является правильным способом сделать это, вот следующие шаги:

 kubectl create deployment deptestpredict --image=nameim
kubectl expose deployment deptestpredict --type=LoadBalancer --port=1081
kubectl exec -it deptestpredict-66db9b5899-f7tgj sh
  python3
  import requests
  res = requests.post('http://deppredict:1080/predict')
  res.text
 

Вот выходные данные кластера kubectl-информация

 Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
 

Поэтому мой вопрос в том, что я делаю не так в app.py.

Я определенно что-то упускаю. Пожалуйста, помогите 😀 Мы будем очень признательны за любую информацию или рекомендации. Заранее большое вам спасибо.

Комментарии:

1. что выводится, когда я запускаю команду kubectl cluster-info . ? это только для встроенной службы в kube-system пространстве имен в качестве того URL, который. вы упомянули выше

2. Привет @Thanh Нгуен Ван, я обновил сообщение с необходимыми выводами. Я работаю с пространством имен по умолчанию. Заранее благодарю вас за вашу помощь.

Ответ №1:

Я смог выполнить вызов внутри веб-api, используя имя службы kubernetes http://nameOfTheService:1080/predict