从同一个 KUBERNETES 集群中的另一个容器化瓶托 api 调用 pod 中的 DOCKER 容器化瓶托 api
Call a DOCKER containerized flask rest api in a pod from another containerized flask rest api in same KUBERNETES cluster
我正在使用 Flask,Docker-桌面版本,启用了 Kubernetes。
我的目标是:
- 创建两个pods
- 每个 pod 包含一个容器
- 每个容器都是一个烧瓶架api
- 从另一个容器的restapi调用一个容器中的restapi
问题是由于无法访问地址,我无法在一个 api 中进行调用。这是 app.py 文件中的 not 工作代码:
@app.route("/testpredict", methods=["POST"])
def testpredict():
response = requests.post(url="http://deppredict:1080/predict")
return response.text, 200
我尝试通过 docs
中建议的本地主机 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 cluster-info
的输出
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.
中做错了什么
我确实漏掉了什么。请帮忙:D
任何见解或指导将不胜感激。 非常感谢。
我能够通过使用 kubernetes 服务的名称 http://nameOfTheService:1080/predict
在网络中进行调用 api
我正在使用 Flask,Docker-桌面版本,启用了 Kubernetes。 我的目标是:
- 创建两个pods
- 每个 pod 包含一个容器
- 每个容器都是一个烧瓶架api
- 从另一个容器的restapi调用一个容器中的restapi
问题是由于无法访问地址,我无法在一个 api 中进行调用。这是 app.py 文件中的 not 工作代码:
@app.route("/testpredict", methods=["POST"])
def testpredict():
response = requests.post(url="http://deppredict:1080/predict")
return response.text, 200
我尝试通过 docs
中建议的本地主机 127.0.0.1http://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 cluster-info
的输出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.
中做错了什么我确实漏掉了什么。请帮忙:D 任何见解或指导将不胜感激。 非常感谢。
我能够通过使用 kubernetes 服务的名称 http://nameOfTheService:1080/predict