您目前查看的是 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
問題
- API 產品、開發人員、應用程式不會在 Apigee UI 中填入。
- API Proxy 部署作業未完成。
- 執行管理 API 要求來讀取及寫入 API 產品、開發人員和應用程式時會失敗。
錯誤訊息
本節說明沒有網路連線時可能顯示的錯誤訊息。
ApigeeIssue
如果這個問題回報為 ApigeeIssue,執行下列指令時:
kubectl -n APIGEE_NAMESPACE get apigeeissues
其中 APIGEE_NAMESPACE 是 Kubernetes 資源群組的名稱。
系統會顯示下列錯誤碼:
NAME SEVERITY AGE URL control-plane-connectivity-failure Error 1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity
API 產品、開發人員和應用程式 Apigee UI 頁面
API 產品、開發人員和應用程式 Apigee UI 頁面會顯示下列錯誤:
Error: no connections available from the Apigee connect agent(s): refer to documentation to triage further.
apigee-synchronizer 記錄
您可能會在記錄中看到下列錯誤訊息:apigee-synchronizer
{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev", "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor", "method":"doSend","severity":"SEVERE","message":"request failed [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]", "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE", "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out ... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251) at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84) at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)
apigee-watcher 記錄
您可以在 apigee-watcher 記錄中看到下列錯誤訊息:
{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60", "msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending mp status to mgmt: INTERNAL: failed to send runtime status Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\": dial tcp 172.217.24.42:443: i/o timeout","stacktrace": "edge-internal.git.corp.google.com/apigee-watcher.git/watcher. (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}
可能原因
| 平台 | 原因 | 說明 |
|---|---|---|
| 全部 | 沒有可連上網際網路的網路路徑 | 如果沒有網際網路的網路路徑,Apigee 執行階段平面元件就無法與 Apigee 控制平面 API 通訊。 |
| 全部 | Apigee API 端點未列入允許清單 | 如果設有防火牆,Apigee API 端點可能未加入允許清單。 |
| GKE | 未啟用私人 Google 存取權 | 如果部署作業是在 GKE 上進行,子網路可能未啟用 Private Google Access。 |
| 全部 | 不明網路故障 | 如果連線至網際網路時,叢集網路發生不明故障,就可能發生這個問題。 |
原因:沒有可連上網際網路的網路路徑
診斷
- 視使用的平台而定,確認叢集網路是否有可連上網際網路的網路路徑。舉例來說,如要進一步瞭解 GKE 網路,請參閱 網路總覽。
- 請洽詢基礎架構和網路團隊,確認叢集網路是否使用轉送 Proxy 伺服器連線至網際網路。
解析度
- 請洽詢網路管理員,並盡可能新增網際網路的網路路徑。
-
如果叢集網路和網際網路之間的通訊使用轉送 Proxy 伺服器,請使用
overrides.yaml檔案在 Apigee 中 設定轉送 Proxy 伺服器設定,並使用 Helm 指令將變更套用至執行階段層面:模擬測試:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP \ -f OVERRIDES_FILE \ --dry-run=server
請務必加入顯示的所有設定,包括
--atomic,以便在動作失敗時回溯。您的安裝項目可能使用與 ENV_GROUP 不同的 ENV_GROUP_RELEASE_NAME 設定。如需設定相關資訊,請參閱「使用 Helm 安裝 Apigee Hybrid」。
安裝圖表:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP \ -f OVERRIDES_FILE
原因:Apigee API 端點未加入許可清單
診斷
請洽詢網路管理員,並確認 Apigee 安裝所在平台的防火牆是否已將 Apigee API 端點清單加入允許清單。如果是 GKE,這可能是指 Cloud Next Generation Firewall。
解析度
如果上述 Apigee API 端點清單未加入許可清單,請與網路管理員聯絡並完成該項要求。
原因:未啟用私人 Google 存取權
診斷
- 如果 Apigee 部署在無法存取網際網路的 私人 GKE 叢集上,則必須啟用 私人 Google 存取權,Apigee 執行階段層級元件才能在內部存取 Google API。
-
前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
- 按一下網路名稱。
- 在「子網路」分頁的「私人 Google 存取權」欄中,確認相關子網路已啟用。如果不是,這就是導致失敗的原因。
解析度
-
前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面。
- 按一下網路名稱。
- 按一下子網路的名稱。
- 按一下「Edit」(編輯)。
- 選取「私人 Google 存取權已啟用」。
- 按一下 [儲存]。啟用後,這個問題就會解決。
原因:不明網路連線失敗
診斷
請與網路管理員聯絡,確認叢集網路中是否有任何不明故障。
解析度
請與網路管理員合作,解決叢集網路中的問題。網路問題修正後,這個問題就會解決。
必須收集診斷資訊
如果按照上述操作說明後問題仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:
- Google Cloud 專案 ID。
- Apigee Hybrid 機構的名稱。
- 在所有 Kubernetes 叢集節點上執行的下列指令輸出內容:
ping apigee.googleapis.com
traceroute apigee.googleapis.com
telnet apigee.googleapis.com 443
overrides.yaml檔案,並遮蓋任何私密資訊。- 所有命名空間中的 Kubernetes Pod 狀態:
kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
- Kubernetes 叢集資訊傾印:
產生 Kubernetes 叢集資訊傾印:
kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump
將 Kubernetes 叢集資訊傾印內容壓縮為 ZIP 檔案:
zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*