如何使用cluster ip连接到数据库服务

时间:2018-02-01 21:34:05

标签: kubernetes kubernetes-helm

这可能是一个非常基本的问题,但我找不到任何地方,所以我道歉..

我在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-backendstaging-postgresql连接,但似乎无效。或者我应该使用外部IP .. ??我在哪里可以找到外部IP .. ??

谢谢你..

1 个答案:

答案 0 :(得分:5)

在Kubernetes中,您有两种方法可以找到您的服务IP。

  1. 环境变量
  2. 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。

    1. DNS(首选)
    2. Kubernetes自动为所有服务分配DNS名称。使用您的服务名称而不是IP,它将被解析为服务IP。

      例如,在任何广告连播中运行ping staging-postgresql

      您可以阅读有关使用服务here的更多信息。