繁体   English   中英

Kubernetes 服务无法发现外部名称

[英]Kubernetes service with external name not discoverable

我正在将 nodejs 应用程序部署到 kubernetes 集群中。 此应用程序需要访问db.external-service.com下公共可用的外部数据库。 为此,创建了ExternalName类型的服务。

kind: Service
apiVersion: v1
metadata:
  name: postgres
spec:
  type: ExternalName
  externalName: db.external-service.com

在部署中,为应用程序提供数据库主机名的环境变量设置为此服务的名称。

env:
  - name: DB_HOST
    value: postgres

问题是,当 nodejs 应用程序尝试连接到数据库时,会出现此错误消息。

Error: getaddrinfo ENOTFOUND postgres

已经尝试使用完整的主机名postgres.<my-namespace>.svc.cluster.local但没有成功。

这个设置有什么问题?

编辑:

  • 如果我在我的 pod 配置中直接使用db.external-service.com后面的普通 ip 地址,它就可以工作
  • 如果我直接在我的 pod 配置中使用主机名,它不起作用
  • 我可以用我的一个 pod ping 主机名: kubectl exec my-pod-xxx -- ping db.external-service.com有正确的 ip 地址

事实证明,Kubernetes 工作节点不在数据库的允许列表中。 所以连接超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM