為什麼在新增端點時會收到 not found
錯誤?
如果在新增服務或端點時收到 404 錯誤,請先建立命名空間和服務 (依序完成),再新增端點。您必須先建立服務,才能新增其他端點。
為什麼我查詢服務時,沒有任何端點?
請確認要求中的專案、區域、命名空間名稱和服務名稱皆正確無誤,且與您註冊端點的位置相符。所有 Service Directory 服務都位於區域命名空間,因此在一個區域註冊的服務與另一個區域的資料不相符。
我授予某人服務存取權,但對方持續收到 permission denied
。
這可能是因為幾個原因:首先,請確認區域是否正確。如果您在命名空間或服務上設定政策,該政策只會套用至該特定區域。如果使用者嘗試在其他區域註冊或查詢相同的服務,除非您也授予該使用者該區域服務的 IAM 存取權,否則他們將無法存取。如要偵錯存取問題,請嘗試針對服務和命名空間使用 TestIamPermissions
方法。
我新增了一些端點,然後移除服務後端。為什麼端點仍在?
Service Directory 不會自動執行健康檢查或心跳檢查,除非您明確刪除端點,否則不會刪除端點。請務必在服務後端/調度器中加入程式碼,以便在端點不再存在時,從服務目錄中移除端點。建議您在端點上使用生存時間註解欄位,記錄端點上次註冊或更新的時間。
我可以查詢端點,但每次嘗試連線都會失敗。
服務目錄無法確保從用戶端可達。服務會直接將端點註冊至 Service Directory。不過,透過 Service Directory 註冊的位址可能無法路由 (尤其是當用戶端和伺服器位於不同的私人網路時)。如果端點可從用戶端路由,則可能是端點不健康。請參閱以下問題。
如何為端點新增健康資料,讓客戶知道要連線至哪一個端點?
使用用戶端負載平衡時,建議服務後端偶爾更新端點的註解欄位,讓用戶端可根據這些欄位決定要連線至哪個後端。Service Directory 不會檢查或評估這類資料。
我已建立命名空間。為什麼無法將 Cloud DNS 私人區域指派給它?
請確認您具備命名空間的 servicedirectory.namespaces.associatePrivateZone
IAM 權限,因為這個權限可讓您建立相關聯的不公開區域。根據預設,「專案編輯者」、「專案擁有者」、「服務目錄管理員」和「服務目錄編輯者」角色都具備這項權限。
為何在對服務執行 DNS 查詢時,我沒有取得任何端點?
可能的原因有很多種,例如:
- 已刪除相關聯的命名空間。您可以在私人區域執行
get
指令來檢查這項資訊。如果已設定serviceDirectoryConfig.deletionTime
,則系統會刪除相關聯的命名空間及其所有端點。 - 請確認您是從可查詢私人區域的網路發出要求。您可以在私人區域上執行
get
指令,查看網路清單。 - 服務沒有 (有效的) 端點。透過 Service Directory API 在服務上執行
resolve
指令,確保服務不為空白,且至少有一個有效的端點 IP。DNS 支援功能僅適用於具備有效 IPv4 或 IPv6 IP 位址的端點。 - 請確認您查詢的區域正確無誤。舉例來說,假設您建立名為 example.com 的服務目錄區域,並且有另一個名為 billing.example.com 的 (標準) 私人區域。那麼,對 billing.example.com 的任何 DNS 查詢都會傳回屬於 billing.example.com 區域的資源記錄,而不是與 example.com 相關聯的服務目錄命名空間中的 billing 服務。詳情請參閱名稱解析順序。
為什麼我的 GKE 服務無法同步至 Service Directory?
可能的原因有很多種,例如:
- 請確認您已在 GKE 叢集中為要同步的命名空間部署
ServiceDirectoryRegistrationPolicy
。此外,請確認您要同步處理的服務與政策中的標籤選取器相符。 - 現有 Service Directory 命名空間已由手動建立,或使用其他整合服務建立,其名稱與您要同步的 GKE 命名空間相同。您必須重新命名或刪除現有的 Service Directory 命名空間,以免發生衝突。
- 服務目錄服務帳戶的權限已遭移除。
請確認
service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com
具有Service Directory Service Agent
IAM 權限。如要進一步瞭解身分與存取權管理,請參閱 身分與存取權管理說明文件。
後續步驟
- 如要進一步瞭解功能,請參閱「Service Directory 總覽」。
- 如需其他協助,請參閱「取得支援」一文。