簡體   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