您正在查看 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
問題
- Apigee UI 中未填入 API 產品、開發人員和應用程式。
- 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 上,則子網路可能未啟用私人 Google 存取權。 |
全部 | 不明的網路故障 | 如果叢集網路在連上網際網路時發生不明故障,就可能發生這個問題。 |
原因:沒有可連上網際網路的網路路徑
診斷
- 視使用的平台而定,確認叢集網路是否有可用來連線至網際網路的網路路徑。舉例來說,如要進一步瞭解 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 API 端點清單是否已列入 Apigee 安裝平台的防火牆許可清單。對於 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 -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*