我使用以下命令創建了 GKE 集群:
gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b
現在我想將我的 PHP 應用程式連接到雲端 SQL。為了授權從 Pod 中執行的 PHP 應用程式存取雲端 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
我已按照谷歌雲端文件中提到的步驟進行操作。關聯
我透過 SSH 連接到容器,並嘗試使用私人 IP 存取 (Ping) 雲端 SQL。但我不能
更新2
按照上面的連結後,我改變了創建秘密的方式(這次只是私有IP)。我還更新了我的 env.php 如下
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => getenv('DB_HOST'),
之前的 'host' => [Cloud SQL 的私有 IP]
這次建立 pod 時顯示以下錯誤
SQLSTATE[HY000] [2002] 沒有這樣的檔案或目錄
更新3
我已經重做了所有步驟並且它的工作