#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