我使用以下命令创建了 GKE 集群:
gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b
现在我想将我的 PHP 应用程序连接到 Cloud SQL。为了授权从 Pod 中运行的 PHP 应用程序访问 Cloud SQL,我已完成以下步骤
- 创建了一个秘密
kubectl create secret generic stage-cloudsql-secret \
--from-literal=db_host=<YOUR-PRIVATE-IP-ADDRESS>
- 更新了容器部分中的这个秘密我的pod如下:
env:
- name: DB_HOST
valueFrom:
secretKeyRef:
name: stage-cloudsql-secret
key: db_host
我已经在 PHP 文件 (env.php) 中更新了 CloudSQL 私有 IP(以及数据库名称、用户名和密码),构建了 docker 镜像,并在 GKE 集群中创建了 pod。创建 pod 时,我从容器(失败的容器)收到以下错误:
SQLSTATE[HY000] [2002] Operation timed out
注 1:这是托管环境中运行的应用程序,我们正在迁移到 Google 云
笔记2:GKE 和 Cloud SQL 位于同一个 VPC 中(默认)
注 3:在集群中启用 IP 别名
注 4:我有一个容器,它在启动时在数据库中创建数据
更新 1
我已按照 Google 云文档中提到的步骤进行操作。关联
我已通过 SSH 进入容器并尝试使用私有 IP 访问(Ping)云 SQL。但我无法
更新 2
按照上述链接操作后,我改变了创建 secret 的方式(这次只是私有 ip)。我还更新了我的 env.php,如下所示
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => getenv('DB_HOST'),
以前的“主机”=> [Cloud SQL 的私有 IP]
这次创建 pod 时会显示以下错误
SQLSTATE[HY000] [2002] 没有该文件或目录
更新 3
我重新执行了所有步骤,并且它有效