如何使用 kubernetes 服务连接到您的 Cloud SQL 实例?

How to connect to your Cloud SQL instance with a kubernetes service?

我正在创建一个连接到 cloudsql 数据库的容器,当我 运行 带有 kubernetes 的图像时它没有我可以用来允许新图像连接到的外部 IP数据库。但由于这是初始化配置的一部分,我迫不及待地想知道要添加到白名单数据库的 public IP 是什么。

我知道有一些方法可以通过同一集群中的服务连接数据库,但我不知道如何连接google提供的cloudsql。

有两种方法可以解决:

第一个选项是使用 cloudsql 代理,使用以下可用说明:https://cloud.google.com/sql/docs/sql-proxy

在您的 docker 图像中,您需要确保 fuse 在您的安装中可用,但我的情况并非如此(使用 ubuntu:trusty-20160119 作为基础图像)。如果您需要这样做,请在您的 Dockerfile 中使用以下步骤:

# install fusermount
# RUN apt-get install build-essential -y
# RUN wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_5/fuse-2.9.5.tar.gz
# RUN tar -xzvf fuse-2.9.5.tar.gz
# RUN cd fuse-2.9.5 && ./configure && make -j8 && make install

然后在您的容器启动时,您必须创建一个脚本来打开套接字,如 https://cloud.google.com/sql/docs/sql-proxy#example_proxy_invocations_and_connection_strings 中所述。

第二种方式就是允许cloudsql白名单中支持kubernetes集群的节点ips。

我更喜欢第一个选项,因为它适用于我部署镜像的任何机器,如果我需要在 kubernetes 集群中交付更多节点,我不需要关心添加或删除 ips。