[踩坑筆記] GKE 1.9.x 後無法與同個 Network 的其他 GCE VMs 溝通

Zz Chen
smalltownslowmedia
Published in
3 min readJun 25, 2018

如果您在使用的 GCP 專案中,混合使用了「GCE (Google Compute Engine) 的 VMs」和「GKE (Google Kubernetes Engine)」,這篇文章可能可以幫助到您。

最近在幫某系統從原本的 VM (GCE) 容器化後遷移到 Kubernetes (GKE) + Helm 的解決方案,在重構的時候,我選擇將資料庫的部分先保留在原本 的 VM 上,只選擇容器化資料庫以外的應用。

在完成遷移以後,想說順手把 GKE Cluster 升級 (GKE 1.8.x -> 1.9.x) 到新的試試看相容性,果不其然發現 API server 的 POD 都連不上在同個 Project 內、GKE Cluster 外的 VM 資料庫。

經過交叉比對 GKE cluster 參數和 debug 以後都沒有線索,有種預感應該是防火牆規則造成的,所以就查到 Firewall 的部分,果不其然:

Firewall設定,上方GKE-1.8.10、下方GKE-1.9.6

原來 GKE 官方在 1.9.x 之後,因為安全性的理由,預設了 Firewall 不再開放同專案內皆可存取的「Apply to all」,所以只要針對要請求的 server 加入Firewall 規則就沒問題啦!

下面是後來查到 GKE 官方的 Release note 有提到這樣的變動。

GKE Release Note (february-8–2018)

Beginning with Kubernetes version 1.9.x, automatic firewall rules have changed such that workloads in your Kubernetes Engine cluster cannot communicate with other Compute Engine VMs that are on the same network, but outside the cluster. This change was made for security reasons.

[1] https://cloud.google.com/kubernetes-engine/release-notes#february-8-2018

[2] https://cloud.google.com/kubernetes-engine/docs/troubleshooting#autofirewall

--

--

Zz Chen
smalltownslowmedia

熱血創業咖、熱愛開源專案,喜愛鑽研新技術,捲起袖子將新技術應用於日常專案的黑手