【发布时间】:2021-12-23 12:45:07
【问题描述】:
可能需要一些时间来解释我要做什么,但请耐心等待。
我有一份名为 questo-server-deployment 的工作(我知道,令人困惑,但这是在不使用 minikube 上的入口的情况下访问部署的唯一方法)
here 你可以找到上述设置的整个 Kubernetes/Terraform 配置文件
我有 2 个端点从 node.js 应用程序 (questo-server-deployment) 中暴露出来
我使用10.97.189.215 发出请求,这是questo-server-service 外部IP 地址(如您在第一张图片中所见)
所以我有 2 个端点:
- health - 它只是从
node.js应用程序返回200 OK- 这部分很好地确认了节点应用程序按预期工作。 - dynamodb - 它应该能够向
questo-dynamodb-deployment(pod) 发送请求并得到响应,但它不能。
当我打印环境变量时,我得到以下信息:
➜ kubectl -n minikube-local-ns exec questo-server-deployment--1-7ptnz -- printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=questo-server-deployment--1-7ptnz
DB_DOCKER_URL=questo-dynamodb-service
DB_REGION=local
DB_SECRET_ACCESS_KEY=local
DB_TABLE_NAME=Questo
DB_ACCESS_KEY=local
QUESTO_SERVER_SERVICE_PORT_4000_TCP=tcp://10.97.189.215:4000
QUESTO_SERVER_SERVICE_PORT_4000_TCP_PORT=4000
QUESTO_DYNAMODB_SERVICE_SERVICE_PORT=8000
QUESTO_DYNAMODB_SERVICE_PORT_8000_TCP_PROTO=tcp
QUESTO_DYNAMODB_SERVICE_PORT_8000_TCP_PORT=8000
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
QUESTO_SERVER_SERVICE_SERVICE_HOST=10.97.189.215
QUESTO_SERVER_SERVICE_PORT=tcp://10.97.189.215:4000
QUESTO_SERVER_SERVICE_PORT_4000_TCP_PROTO=tcp
QUESTO_SERVER_SERVICE_PORT_4000_TCP_ADDR=10.97.189.215
KUBERNETES_PORT_443_TCP_PROTO=tcp
QUESTO_DYNAMODB_SERVICE_PORT_8000_TCP=tcp://10.107.45.125:8000
QUESTO_DYNAMODB_SERVICE_PORT_8000_TCP_ADDR=10.107.45.125
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
QUESTO_SERVER_SERVICE_SERVICE_PORT=4000
QUESTO_DYNAMODB_SERVICE_SERVICE_HOST=10.107.45.125
QUESTO_DYNAMODB_SERVICE_PORT=tcp://10.107.45.125:8000
KUBERNETES_SERVICE_PORT_HTTPS=443
NODE_VERSION=12.22.7
YARN_VERSION=1.22.15
HOME=/root
所以看起来配置知道 dynamodb 地址和端口:
QUESTO_DYNAMODB_SERVICE_PORT_8000_TCP=tcp://10.107.45.125:8000
您还会在我指定的上述环境变量中注意到:
DB_DOCKER_URL=questo-dynamodb-service
这应该是我分配给配置here(在配置映射中)的questo-dynamodb-service url:port,然后在questo-server-deployment(作业)中使用here
另外,当我登录时:
kubectl logs -f questo-server-deployment--1-7ptnz -n minikube-local-ns
我得到以下结果:
这表明应用程序 (node.js) 尝试连接到数据库 (dynamodb) 但使用了错误的端口 443 而不是 8000?
DB_DOCKER_URL 应包含questo-dynamodb-service 的完整地址(带端口)
我在这里做错了什么?
编辑----
我已按照答案中的建议将端口8000 明确分配给DB_DOCKER_URL,但现在我收到以下错误:
在我看来,Kubernetes 中存在某种默认行为,它尝试使用 https 在 pod 之间进行通信?
有什么想法需要在这里做什么吗?
【问题讨论】:
标签: node.js docker kubernetes amazon-dynamodb terraform