gpt4 book ai didi

kubernetes - 多个K8S容器通过代理连接到Google Cloud SQL

转载 作者:行者123 更新时间:2023-12-03 16:38:10 27 4
gpt4 key购买 nike

我想将我的Kubernetes集群连接到Google Cloud SQL。

我至少有10个不同的已部署Pod,它们当前使用JDBC URL +用户名/密码连接到MySQL [已部署到k8s的docker镜像]。

是否可以使用Google Cloud SQL代理的单个实例,并通过该代理将所有Pod连接到Cloud SQL数据库?理想情况下,我想用代理替换在容器中运行的mysql。

我希望不必在每个部署中都运行代理。我发现的唯一样本似乎表明需要在每个部署中声明代理。

最佳答案

我找到了解决方案。

使用下面的yml部署代理,并将部署作为服务公开。最重要的是,使代理监听0.0.0.0,而不是默认的127.0.0.1。根据Google Cloud SQL文档的所有 secret

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mysql
spec:
replicas: 1
template:
metadata:
name: mysql
labels:
name: mysql
spec:
containers:
- image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
name: cloudsql-proxy
command: ["/cloud_sql_proxy", "--dir=/cloudsql",
"-instances=MYSQL:ZONE:DATABASE_INSTANCE=tcp:0.0.0.0:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
volumeMounts:
- name: cloudsql-oauth-credentials
mountPath: /secrets/cloudsql
readOnly: true
- name: ssl-certs
mountPath: /etc/ssl/certs
ports:
- containerPort: 3306
name: mysql
volumes:
- name: cloudsql-oauth-credentials
secret:
secretName: cloudsql-oauth-credentials
- name: ssl-certs
hostPath:
path: /etc/ssl/certs

该解决方案比在与客户端软件相同的部署中部署代理要贵一些,因为存在额外的TCP连接。

但是有很多好处:
  • 简单得多,不需要修改现有的K8S部署文件
  • 允许将实现切换到MySQL Docker容器或使用Google Cloud SQL代理,而无需对客户端配置进行任何修改。
  • 关于kubernetes - 多个K8S容器通过代理连接到Google Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173305/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com