【发布时间】:2021-11-02 17:24:35
【问题描述】:
我之前经常使用 Cloud Foundry,当一个应用程序与一个服务绑定时,所有的服务连接信息都会被注入到应用程序的环境变量中。在 Kubernetes 世界中,我认为这对于普通服务来说是一样的。 对我来说,我尝试使用无头服务来描述使用以下服务 yaml 的外部 PostgreSQL。
---
kind: "Service"
apiVersion: "v1"
metadata:
name: "postgresql"
spec:
clusterIP: None
ports:
- protocol: "TCP"
port: 5432
targetPort: 5432
nodePort: 0
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
name: "postgresql"
subsets:
-
addresses:
- ip: "10.29.0.123"
ports:
- port: 5432
将无头服务部署到集群后,容器没有任何环境变量,我猜是因为ClusterIP = None。 应用程序可以使用 postgresql:5432 通过 DNS 访问,但我只是想知道为什么 Kubernetes 不将无头服务及其端点注入应用程序的环境变量,因此应用程序可以从中获取 ip 和端口? 有什么办法吗?
谢谢!
【问题讨论】:
-
你有什么理由使用无头服务?除非你知道你在做什么(在这种情况下你不会问这个问题 IMO),你最好使用普通的 ClusterIP 服务。
-
如果我对外部 PostgreSQL 使用普通的 ClusterIP 服务,Kubernetes 也会转发流量吗?
标签: kubernetes