mongodb - 与 minikube 相比,在云中运行时 Pod 不通信
问题描述
编辑 - 我已将 LoadBalancer 应用于我的每个服务,并且只有我的前端运行正确的图像。我的其他图片正在运行烧瓶,但我无法打开我最新图片中的网址。我的图像托管在 Docker 存储库上,并且我正在运行谷歌云。
我正在尝试将我在 minikube 上本地运行的服务部署到云中。在本地运行时,一切都按预期工作,但是,当我移至云端时,当我收到请求时,我似乎无法从我的任何 pod 中获得响应。我可能在这里做一些愚蠢的事情,因为我从来没有在云上尝试过 Kube。有人可以阐明一下吗?看来 kube 无法解析我的服务的地址。
我的部署.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
app: frontend
spec:
ports:
- port: 5000
name: http
selector:
app: frontend
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: frontend
spec:
replicas: 1
template:
metadata:
labels:
app: frontend
version: v1
spec:
containers:
- name: frontend
image: jor2/frontend
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: backend
labels:
app: backend
spec:
ports:
- port: 5000
name: http
selector:
app: backend
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: backend
spec:
replicas: 1
template:
metadata:
labels:
app: backend
version: v1
spec:
containers:
- name: backend
image: jor2/backend
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: admin-backend
labels:
app: admin-backend
spec:
ports:
- port: 5000
name: http
selector:
app: admin-backend
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: admin-backend
spec:
replicas: 1
template:
metadata:
labels:
app: admin-backend
version: v1
spec:
containers:
- name: admin-backend
image: jor2/admin-backend
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: utils-backend
labels:
app: utils-backend
spec:
ports:
- port: 5000
name: http
selector:
app: backend
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: utils-backend
spec:
replicas: 1
template:
metadata:
labels:
app: utils-backend
version: v1
spec:
containers:
- name: utils-backend
image: jor2/utils-backend
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: mongo
spec:
ports:
- port: 27017
targetPort: 27017
selector:
name: mongo
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongo
spec:
replicas: 1
template:
metadata:
labels:
name: mongo
version: v1
spec:
containers:
- image: mongo
name: mongo
ports:
- containerPort: 27017
前端尝试向后端服务发送请求
from flask import Flask, render_template, request, flash, redirect, url_for, session, jsonify
import requests
app = Flask(__name__)
app.url_map.strict_slashes = False
HEADERS = dict()
@app.route("/view_users/", methods=['GET'])
def view_users():
users = invoke_backend(page_name="view_users", service="utils")
return jsonify(users)
def invoke_backend(page_name, id="", service="", headers={}):
url = create_url(page_name, id, service)
try:
res = requests.get(url, headers=headers)
except Exception:
return "Error with {}.".format(url)
try:
response = res.json()
except ValueError:
return "Decoding JSON has failed."
return response
def create_url(page_name, id="", service=""):
if service == "admin":
be_host = os.getenv('ADMIN_BACKEND_SERVICE_HOST', 'admin-backend')
be_port = os.getenv('ADMIN_BACKEND_SERVICE_PORT', '5000')
url = 'http://{host}:{port}/{page_name}/{id}'.format(host=be_host, port=be_port, page_name=page_name, id=id)
return url
elif service == "frontend":
be_host = os.getenv('FRONTEND_SERVICE_HOST', 'frontend')
be_port = os.getenv('FRONTEND_SERVICE_PORT', '5000')
url = 'http://{host}:{port}/{page_name}/{id}'.format(host=be_host, port=be_port, page_name=page_name, id=id)
return url
elif service == "utils":
be_host = os.getenv('UTILS_BACKEND_SERVICE_HOST', 'utils-backend')
be_port = os.getenv('UTILS_BACKEND_SERVICE_PORT', '5000')
url = 'http://{host}:{port}/{page_name}/{id}'.format(host=be_host, port=be_port, page_name=page_name, id=id)
return url
be_host = os.getenv('BACKEND_SERVICE_HOST', 'backend')
be_port = os.getenv('BACKEND_SERVICE_PORT', '5000')
url = 'http://{host}:{port}/{page_name}/{id}'.format(host=be_host, port=be_port, page_name=page_name, id=id)
return url
if __name__ == '__main__':
app.secret_key = 'secret123'
app.run(debug=True, host='0.0.0.0')
解决方案
我在 utils-backend 部署配置中有错误的选择器。在测试并发现问题后将我的错误缩小到 utils 后端。
selector:
app: backend
修订:
selector
app: utils-backend
推荐阅读
- reactjs - 从数据库获取数据时反应原生firebase如何分配值
- javascript - 点击链接返回一个函数,React / Javascript
- php - 获取输入值并将其作为属性在 functions.php 中使用
- visual-studio-code - VSCode 调试控制台不断跳到顶部
- python - 如何在基类中使用子类的函数属性?
- php - PHP多维数组按值排序
- ruby-on-rails - 获取关系计数的活动记录查询
- c# - SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_Users_Companies_CompanyId”冲突
- sql - 如何根据psql中的一条记录的值排除具有相同ID的所有行?
- javascript - Zapier 自定义响应对象