【发布时间】:2019-07-06 19:42:59
【问题描述】:
我正在尝试连接一个简单的应用程序来模拟一台主机上的一个 pod 中的前端容器,该容器向另一台主机上的另一个 pod 中的另一个后端容器发出请求。该集群由 kops 在 AWS 上创建。
服务已正确创建,我可以通过前端服务创建的 LB url 访问默认前端服务。但是,调用后端的请求 /greet 挂起并最终超时并出现 500 错误。
我检查了日志,但没有显示任何有用的信息。我是否遗漏了任何会阻止 pod 进行通信的东西?
sample-genericserver“前端”
@app.route('/greet')
def greet():
r = requests.get('http://sample-greeter')
print(r.content)
return r.content
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int("5000"), debug=True)
//frontend
kubectl run sample-genericserver --image=genericserver --replicas=1 --port=5000
kubectl expose deployment sample-genericserver --port=5000 --type=LoadBalancer
迎接“后端”
@app.route('/')
def hello_world():
return 'Greetings from BackendService'
if __name__ == "__main__":
app.run(host="0.0.0.0", port=int("8090"), debug=True)
//backend
$ kubectl run sample-greeter --image=greeter --replicas=1 --port=8090
$ kubectl expose deployment sample-greeter --port=8090
【问题讨论】:
-
您正在连接到端口 80,但
sample-greeter服务正在侦听端口 8090。 -
您是否创建了Service 并从后端 pod 公开了端口,以便其他服务能够与之通信。
-
谢谢大卫。我没有意识到我需要明确指定 8090 来调用 URL。 r = requests.get('sample-greeter:8090') 有效。
标签: docker kubernetes kops