Google Distributed Cloud 軟體是以 Kubernetes 為基礎,您可以將其部署在 VMware 或裸機伺服器上。雖然 Distributed Cloud 在地端執行,但我們設計時會讓它與 Google Cloud 保持連線,原因包括監控和管理。不過,您可能需要瞭解如果因任何原因(例如技術問題) 而中斷與 Google Cloud 的連線,會發生什麼情況。本文說明在 Distributed Cloud 軟體專屬部署 (在裸機或 VMware 上) 中,叢集失去連線會造成哪些影響,以及在這種情況下可使用的解決方法。
如果架構師需要為非預期或強制中斷連線做好準備,並瞭解其後果,這項資訊就非常實用。 Google Cloud 不過,您不應計畫使用與Google Cloud 中斷連線的純軟體 Distributed Cloud 部署作業,做為名義上的工作模式。請注意,我們設計 Distributed Cloud 時,會充分運用 Google Cloud 服務的擴充性和可用性。本文根據各種 Google Cloud 元件的設計和架構撰寫,這些元件可在暫時中斷期間與 Distributed Cloud 相容運作。我們無法保證這份文件內容完整。
本文假設您已熟悉 GKE。如果不是,建議您先閱讀 GKE 總覽。
授權驗證和用量計算
如果您已在 Google Cloud 專案中啟用 Anthos API (anthos.googleapis.com),叢集中執行的計量控制器會定期產生並更新授權權利。中斷連線的容許時間為 12 小時。此外,系統也需要連線才能管理用量和帳單。
下表列出暫時中斷與 Google Cloud連線時,授權和用量計費相關功能的行為:
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 執照驗證 | 只要anthos.googleapis.com在 Google Cloud 專案中啟用,計量控制器就會定期產生及重新整理授權權利自訂資源。 |
使用授權自訂資源的元件支援寬限期:只要在寬限期內重新整理授權自訂資源,元件就能繼續運作。 | 無限制。寬限期過後,元件就會開始記錄錯誤。您無法再升級叢集。 | 無 |
| 用量計算與計費 | 計量控制器會向 Google Cloud Service Control API 回報叢集的 vCPU 容量,以利計費。 | 叢集內代理程式會在連線中斷期間將帳單記錄保留在叢集中,並在叢集重新連線至 Google Cloud時擷取記錄。 | 無限制。不過,根據「進階軟體」的《服務專屬條款》,您必須提供用量資訊,才能符合規定。 | 無 |
叢集生命週期
本節涵蓋建立、更新、刪除及調整叢集大小等情境,以及監控這些活動的狀態。
在大多數情況下,您可以使用 bmctl、gkectl 和 kubectl 等 CLI 工具,在暫時中斷連線期間執行作業。您也可以使用這些工具監控作業狀態。重新連線後,Google Cloud 控制台會更新,顯示連線中斷期間執行的作業結果。
| 動作 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 建立叢集 | 您可以使用 bmctl 或 gkectl CLI 工具建立叢集。這項操作需要連線至 Google Cloud。 |
無法建立叢集。 | 未有 | 無 |
| 升級叢集 | 您可以使用 bmctl 或 gkectl CLI 工具升級叢集。這項操作需要連線至 Google Cloud。 |
您無法升級叢集。 | 未有 | 無 |
| 刪除叢集 | 您可以使用 bmctl 或 gkectl CLI 工具刪除叢集。這項作業不需要連線至 Google Cloud。 |
您可以刪除叢集。 | 無限制 | - |
| 查看叢集狀態 | 您可以在控制台的 Google Kubernetes Engine 叢集清單中,查看叢集的相關資訊。 | 控制台不會顯示叢集資訊。 | 無限制 | 直接查詢叢集,取得所需資訊。kubectl |
| 從叢集中移除節點 | 您不需要連線至 Google Cloud ,即可從叢集移除節點。 | 您可以從叢集中移除節點。 | 無限制 | - |
| 將節點新增至叢集 | 新節點會從 Container Registry 提取容器映像檔,確保正常運作。 系統會執行預檢,確認與「 Google Cloud」之間有連線。 | 新增節點時執行的前置檢查會驗證與 Google Cloud的連線。因此,中斷連線時無法在叢集中新增節點。 | 未有 | 無 |
應用程式生命週期
暫時中斷連線 Google Cloud 通常不會影響管理在本機叢集中執行的應用程式。只有 連線閘道會受到影響。如果您使用 Container Registry、 Artifact Registry、Cloud Build 或 Cloud Deploy 管理Google Cloud中的容器映像檔或 CI/CD 管道,連線中斷時這些服務將無法使用。如何處理這些產品的連線中斷問題,不在本文的討論範圍內。
| 動作 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 應用程式部署 | 您可以使用 kubectl 在本機部署應用程式、透過 CI/CD 工具部署,或是使用連線閘道部署。 |
無法連線至閘道。只要直接連線至 Kubernetes API,所有其他部署方法仍可正常運作。 | 無限制 | 如果使用連線閘道,請改為kubectl在本機使用。 |
| 移除應用程式 | 您可以使用 kubectl、透過 CI/CD 工具或使用連線閘道,在本機移除應用程式。 |
無法連線至閘道。只要直接連線至 Kubernetes API,所有其他部署方法仍可正常運作。 | 無限制 | 如果使用連線閘道,請改為kubectl在本機使用。 |
| 應用程式向外擴充 | 您可以使用 kubectl、透過 CI/CD 工具,或使用連線閘道,在本機擴大應用程式規模。 |
無法使用連線閘道。只要直接連線至 Kubernetes API,所有其他部署方法仍可正常運作。 | 無限制 | 如果使用連線閘道,請改為kubectl在本機使用。 |
記錄和監控
稽核功能可協助貴機構遵守法規要求和法規遵循政策。Distributed Cloud 提供應用程式記錄、Kubernetes 記錄和稽核記錄,有助於稽核。許多客戶選擇使用 Google 的 Cloud Logging 和 Cloud Monitoring,避免在內部部署環境中管理記錄和監控基礎架構。其他客戶則偏好將記錄檔集中管理到地端系統進行彙整。為支援這些客戶,Distributed Cloud 支援直接整合 Prometheus 等服務。在此模式下,暫時中斷與 Google Cloud的連線時,記錄或監控功能不會受到影響。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 使用 Cloud Logging 記錄應用程式 | 系統會將記錄檔寫入 Cloud Logging。 | 系統會將記錄緩衝處理至本機磁碟。 | 每個節點的本機緩衝區為 4.5 小時或 4 GiB。緩衝區填滿或中斷連線時間達 4.5 小時後,系統就會捨棄最舊的項目。 | 使用本機記錄解決方案。 |
| 使用 Cloud Logging 記錄系統/Kubernetes 記錄 | 系統會將記錄寫入 Cloud Logging。 | 系統會將記錄緩衝處理至本機磁碟。 | 每個節點的本機緩衝區為 4.5 小時或 4 GiB。緩衝區填滿或中斷連線時間達 4.5 小時後,系統就會捨棄最舊的項目。 | 使用本機記錄解決方案。 |
| 使用 Cloud 稽核記錄進行稽核記錄 | 系統會將記錄寫入 Cloud Logging。 | 系統會將記錄緩衝處理至本機磁碟。 | 每個控制層節點 10 GiB 的本機緩衝區。緩衝區填滿時,系統會捨棄最舊的項目。 | 設定將記錄檔轉送至本機記錄解決方案。 |
| 使用其他供應商的服務進行應用程式記錄 | 您可以使用 Elastic、Splunk、Datadog 或 Loki 等第三方供應商。 | 沒有影響 | 無限制 | - |
| 使用其他供應商的系統/Kubernetes 記錄功能 | 您可以使用 Elastic、Splunk 或 Datadog 等第三方供應商。 | 沒有影響 | 無限制 | - |
| 寫入 Cloud Monitoring 的應用程式和 Kubernetes 指標 | 系統會將指標寫入 Cloud Monitoring。 | 系統會將指標緩衝到本機磁碟。 | 每個節點的系統指標為 24 小時或 6 GiB 的本機緩衝區,每個節點的應用程式指標為 1 GiB 的本機緩衝區。緩衝區填滿或連線中斷 24 小時後,系統就會捨棄最舊的項目 | 使用本機監控解決方案。 |
| 存取及讀取 Kubernetes 和應用程式工作負載的監控資料 | 所有指標都會顯示在控制台和 Cloud Monitoring API 中。 | 系統不會在連線中斷期間更新 Cloud Monitoring 中的指標。 | 每個節點的系統指標為 24 小時或 6 GiB 的本機緩衝區,每個節點的應用程式指標為 1 GiB 的本機緩衝區。緩衝區填滿或連線中斷 24 小時後,系統就會捨棄最舊的項目 | 使用本機監控解決方案。 |
| 指標的快訊規則和呼叫 | Cloud Monitoring 支援快訊。您可以為任何指標建立快訊。系統可以透過不同管道傳送快訊。 | 系統不會在裝置未連線時觸發警報。系統只會根據已傳送至 Cloud Monitoring 的指標資料觸發快訊。 | 使用本機監控和快訊解決方案。 |
設定與政策管理
Config Sync 和 Policy Controller 可讓您大規模管理所有叢集的設定和政策。您可以在 Git 存放區中儲存設定和政策,系統會自動將這些項目同步至叢集。
Config Sync
Config Sync 會使用叢集內代理程式直接連線至 Git 存放區。您可以使用 Google Cloud CLI 或 kubectl 工具,管理存放區網址或同步參數的變更。
暫時中斷連線期間,只要叢集內代理程式仍可連線至 Git 存放區,同步作業就不會受到影響。不過,如果您使用 gcloud CLI 或控制台變更同步處理參數,叢集不會在連線中斷期間套用這些參數。您可以使用 kubectl 暫時覆寫這些值。重新連線會覆寫所有本機變更。
Policy Controller
Policy Controller 可為您的叢集強制執行完全程式化的政策。這些政策可以做為「防護機制」,用來防止任何違反安全性、作業或法規遵循控管的變更。
| 動作 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 從 Git 存放區同步設定 | 叢內代理程式會直接連線至 Git 存放區。您可以使用 Google Cloud API 變更存放區網址或同步處理參數。 | 設定同步功能不會受到影響。如果您使用 gcloud CLI 或在控制台中變更同步處理參數,叢集不會在連線中斷期間套用這些參數。您可以使用 kubectl 暫時覆寫這些值。重新連線會覆寫所有本機變更。 |
無限制 | 請勿使用 Fleet API 進行 Config Sync,且只能透過 Kubernetes API 進行設定。 |
| 對 Kubernetes API 的要求強制執行政策 | 叢集內代理程式會與 Kubernetes API 整合,因此可強制執行限制。您可以使用本機 Kubernetes API 管理政策。您可以使用 Google CloudAPI 管理 Policy Controller 的系統設定。 | 政策強制執行作業不會受到影響。您仍可使用本機 Kubernetes API 管理政策。系統不會使用 Google Cloud API 將變更內容傳播至叢集的 Policy Controller 系統設定,但您可以暫時在本機覆寫這些設定。重新連線會覆寫所有本機變更。 | 無限制 | 請勿使用 Fleet API 設定 Policy Controller,只能透過 Kubernetes API 進行設定。 |
| 使用 Google CloudAPI 安裝、設定或升級 Config Sync | 您可以使用 Google Cloud API 管理叢集內代理程式的安裝和升級作業。您也可以使用這個 API (或 gcloud CLI 或控制台) 管理這些代理程式的設定。 | 叢集內代理程式仍會正常運作。您無法使用 Google Cloud API 安裝、升級或設定叢內代理程式。使用 API 進行的任何待處理安裝、升級或設定作業,都會在重新連線後繼續進行。 | 未有 | 請勿使用 Fleet API 設定 Policy Controller,只能使用 Kubernetes API 進行設定。 |
| 在主控台中查看系統或同步狀態 | 您可以使用 Google Cloud API 或控制台,查看叢集內代理程式的健康狀態和同步狀態。 | Google Cloud API 或控制台中的狀態資訊會過時。API 顯示連線錯誤。您仍可使用本機 Kubernetes API,取得各叢集的資訊。 | 未有 | 使用 nomos CLI 或本機 Kubernetes API。 |
安全性
本節說明身分、驗證、授權和密鑰管理等安全功能,在暫時與 Google Cloud中斷連線時會受到哪些影響。
身分識別、驗證和授權
Distributed Cloud 可以直接連線至 Cloud Identity,以取得應用程式和使用者角色,使用 Connect 管理工作負載,或使用 OIDC 進行端點驗證。中斷連線 Google Cloud 會切斷與 Cloud Identity 的連線,導致這些功能無法使用。如要透過暫時中斷連線,為工作負載提供額外的復原能力,可以使用 GKE Identity Service 與 LDAP 或 OIDC 提供者 (包括 ADFS) 整合,設定使用者驗證。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| Cloud Identity 做為身分識別提供者,使用連線閘道 | 您可以透過 Cloud Identity 做為身分識別提供者,並透過連線閘道連線,存取 Distributed Cloud 資源。 | 連線閘道必須連線至 Google Cloud。中斷連線期間,您無法連線至叢集。 | 未有 | 使用 GKE Identity Service 與其他身分提供者聯合。 |
| 使用第三方識別資訊提供者進行身分驗證 | 支援 OIDC 和 LDAP。您可以使用 gcloud CLI 登入。
如果是 OIDC 提供者,您可以使用控制台登入。然後,您就可以照常對叢集 API 進行驗證 (例如使用 kubectl)。 |
只要您和叢集都能存取身分識別提供者,您還是可以針對叢集 API 進行驗證。您無法透過控制台登入。您只能在本機更新叢集的 OIDC 或 LDAP 設定,無法使用控制台。 | 無限制 | - |
| 授權 | Distributed Cloud 支援角色型存取權控管 (RBAC)。 角色可以指派給使用者、群組或服務帳戶。系統會從身分識別提供者擷取使用者身分和群組。 | RBAC 系統位於 Kubernetes 叢集本機,與 Google Cloud 中斷連線不會影響該系統。不過,如果該應用程式依賴 Cloud Identity 提供的身分,則中斷連線後就無法使用。 | 無限制 | - |
密鑰和金鑰管理
密鑰和金鑰管理是安全防護機制的重要環節。如果與Google Cloud 中斷連線,Distributed Cloud 的行為取決於您使用哪些服務。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 使用 Cloud Key Management Service 和 Secret Manager 管理密鑰和金鑰 | 您可直接使用 Cloud Key Management Service 管理加密編譯金鑰,並使用 Secret Manager 管理密鑰。 | Cloud Key Management Service 和 Secret Manager 皆無法使用。 | 未有 | 請改用本機系統。 |
| 使用 Hashicorp Vault 和 Google Cloud 服務管理密鑰和金鑰 | 您可將 Hashicorp Vault 設定為使用 Cloud Storage 或 Spanner 儲存密碼,並使用 Cloud Key Management Service 管理金鑰。 | 如果 Hashicorp Vault 在您的地端叢集上執行,且中斷連線也會影響該叢集,則中斷連線期間無法使用密碼儲存和金鑰管理功能。 | 未有 | 請改用本機系統。 |
| 使用 Hashicorp Vault 和內部部署服務管理密鑰和金鑰 | 您可設定 Hashicorp Vault,使用密鑰的內部部署儲存空間後端,以及內部部署金鑰管理系統 (例如硬體安全模組)。 | 與「 Google Cloud 」中斷連線不會造成任何影響。 | 無限制 | - |
網路和網路服務
本節將介紹地端叢集的網路和網路服務,包括暫時中斷與Google Cloud連線時的影響。內容涵蓋負載平衡、Cloud Service Mesh 和其他網路服務。
負載平衡
如要向使用者公開發布地端叢集中代管的 Kubernetes Service,您可以採取下列做法:
裸機:
使用提供的套裝組合負載平衡器、MetalLB 或與 BGP 搭配使用的套裝組合。
VMware:
使用隨附的負載平衡器 MetalLB。
即使與Google Cloud中斷連線,這些負載平衡選項仍可運作。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| L4 套裝組合負載平衡器 | 完全在本機提供 L4 負載平衡,不依附於Google Cloud API 或網路。 | 沒有變更 | 無限制 | - |
| 手動或整合式負載平衡器 | 支援 F5 BIG-IP 和其他地端部署的負載平衡器。 | 沒有變更 | 無限制 | - |
Cloud Service Mesh
您可以透過 Cloud Service Mesh,管理、監控及保護在內部部署叢集中執行的服務通訊。Distributed Cloud 不支援所有 Cloud Service Mesh 功能:詳情請參閱支援功能清單。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 部署或更新政策 (轉送、授權、安全性、稽核等) | 您可以使用控制台、kubectl、asmcli 或 istioctl 管理 Cloud Service Mesh 政策。 |
您只能使用 kubectl 或 istioctl 管理 Cloud Service Mesh 政策。 |
無限制 | 使用 kubectl 或 istioctl |
| 憑證授權單位 (CA) | 您可以透過叢集內 CA 或 Cloud Service Mesh 憑證授權單位,管理 Cloud Service Mesh 使用的憑證。 | 如果您使用叢內 CA,則不會受到影響。 如果您使用 Cloud Service Mesh 憑證授權單位,憑證會在 24 小時後失效。新的服務執行個體無法擷取憑證。 |
叢集內憑證授權單位無限制。 Cloud Service Mesh 憑證授權單位服務會在 24 小時內降級,24 小時後則會停止服務。 |
使用叢集內 CA。 |
| Cloud Service Mesh 的 Cloud Monitoring | 您可以使用 Cloud Monitoring 儲存、探索及運用 Cloud Service Mesh 提供的 HTTP 相關指標。 | 系統不會儲存指標。 | 未有 | 使用相容的本機監控解決方案,例如 Prometheus。 |
| Cloud Service Mesh 稽核記錄 | Cloud Service Mesh 依賴本機 Kubernetes 記錄設施。行為取決於您為地端叢集設定記錄的方式。 | 取決於您為地端叢集設定記錄作業的方式。 | - | - |
| 輸入閘道 | 您可以使用 Istio Ingress Gateway 定義外部 IP。 | 沒有影響 | 無限制 | - |
| Istio 容器網路介面 (CNI) | 您可以設定 Cloud Service Mesh 使用 Istio CNI,而非 iptables 管理流量。 | 沒有影響 | 無限制 | - |
| 網頁應用程式的 Cloud Service Mesh 使用者驗證 | 您可以透過 Cloud Service Mesh 進入閘道與自己的身分識別提供者 (透過 OIDC) 整合,驗證及授權網格中的網頁應用程式使用者。 | 沒有影響 | 無限制 | - |
其他網路服務
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| DNS | Kubernetes DNS 伺服器會在叢集內執行。 | Kubernetes DNS 服務會在叢集內部執行,因此可正常運作。 | 無限制 | - |
| 輸出 Proxy | 您可以將內部部署叢集設定為使用 Proxy 進行輸出連線。 | 如果 Proxy 在地端執行,叢集在暫時中斷連線期間仍可使用該 Proxy。不過,如果 Proxy 失去與 Google Cloud的連線,本文中的所有情境仍適用。 | 無限制 | - |
Google Cloud Marketplace
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 從 Cloud Marketplace 部署及管理應用程式和服務 | 您可以在控制台中使用 Cloud Marketplace,探索、取得及部署解決方案。 | 您無法使用 Cloud Marketplace。Cloud Marketplace 的部分解決方案可能有自己的連線需求,本文未列出這些需求。 | 未有 | 無 |
支援
本節說明與 Google Cloud 支援團隊或作業合作夥伴互動時,可能需要經歷的各種情境,以解決 GKE on GDC 叢集相關案件。
| 功能 | 連結行為 | 暫時中斷連線的行為 | 可容許的最大中斷次數 | 連線中斷的暫時解決方法 |
|---|---|---|---|---|
| 與支援團隊分享叢集快照 | 您可以使用 bmctl check
cluster 或 gkectl diagnose snapshot 指令在本機建立叢集快照。透過一般支援程序分享這張快照。 |
由於快照是本機作業,因此您仍可產生快照。如果您無法存取 Google Cloud 和支援網頁介面,只要訂閱進階或 Premium 支援方案,即可致電支援團隊。 | 無限制 | - |
| 與支援團隊分享相關記錄資料 | 您可以從叢集在本機收集記錄,並透過一般支援程序分享這些記錄。 | 您還是可以從叢集收集記錄。如果您無法存取 Google Cloud 和支援網頁介面,只要訂閱進階或 Premium 支援方案,就能透過電話與支援團隊聯絡。 | 無限制 | - |