如何使用集群 ip 连接到数据库服务
how to connect to database service using cluster ip
这可能是一个非常基本的问题,但我找不到任何地方所以我很抱歉..
我已经在 Google Kubernetes Engine
上使用 helm 安装了 postresql
$ helm install --name staging stable/postgresql
我的部署:
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
staging-backend 7 7 7 0 3h
staging-postgresql 1 1 1 0 3h
我的服务:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
staging-postgresql ClusterIP xx.x.xxx.xx <none> 5432/TCP 3h
我尝试使用群集 IP 连接 staging-backend
和 staging-postgresql
,但它似乎不起作用。或者我应该使用外部 IP..??我在哪里可以找到外部 IP..??
谢谢你..
在 Kubernetes 中,您可以通过两种方式查找服务的 IP。
- 环境变量
Kubernetes 自动生成环境变量,其中包含访问服务所需的所有数据。如果您在 pod 中执行 运行 env
命令,那么您应该会看到类似的输出:
KUBERNETES_SERVICE_PORT=443
STAGING_POSTGRESQL_SERVICE_HOST=10.0.162.149
KUBERNETES_SERVICE_HOST=10.0.0.1
STAGING_POSTGRESQL_SERVICE_PORT=5432
KUBERNETES_SERVICE_PORT_HTTPS=443
在您的应用中使用 STAGING_POSTGRESQL_SERVICE_HOST
环境变量来获取服务的 IP。
- DNS(首选)
Kubernetes 自动为所有服务分配 DNS 名称。使用您的服务名称而不是 IP,它将被解析为服务 IP。
例如 运行 ping staging-postgresql
在任何 pod 中。
您可以阅读有关使用服务的更多信息 here。
这可能是一个非常基本的问题,但我找不到任何地方所以我很抱歉..
我已经在 Google Kubernetes Engine
上使用 helm 安装了 postresql$ helm install --name staging stable/postgresql
我的部署:
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
staging-backend 7 7 7 0 3h
staging-postgresql 1 1 1 0 3h
我的服务:
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
staging-postgresql ClusterIP xx.x.xxx.xx <none> 5432/TCP 3h
我尝试使用群集 IP 连接 staging-backend
和 staging-postgresql
,但它似乎不起作用。或者我应该使用外部 IP..??我在哪里可以找到外部 IP..??
谢谢你..
在 Kubernetes 中,您可以通过两种方式查找服务的 IP。
- 环境变量
Kubernetes 自动生成环境变量,其中包含访问服务所需的所有数据。如果您在 pod 中执行 运行 env
命令,那么您应该会看到类似的输出:
KUBERNETES_SERVICE_PORT=443
STAGING_POSTGRESQL_SERVICE_HOST=10.0.162.149
KUBERNETES_SERVICE_HOST=10.0.0.1
STAGING_POSTGRESQL_SERVICE_PORT=5432
KUBERNETES_SERVICE_PORT_HTTPS=443
在您的应用中使用 STAGING_POSTGRESQL_SERVICE_HOST
环境变量来获取服务的 IP。
- DNS(首选)
Kubernetes 自动为所有服务分配 DNS 名称。使用您的服务名称而不是 IP,它将被解析为服务 IP。
例如 运行 ping staging-postgresql
在任何 pod 中。
您可以阅读有关使用服务的更多信息 here。