您正在查看 Apigee 和 Apigee Hybrid 說明文件。
查看
Apigee Edge 說明文件。
問題
你可能會觀察到下列任一症狀:
- 用戶端應用程式會收到逾時錯誤,做為 Apigee hybrid 上 API 呼叫的回應。
- 在混合式安裝期間,您在叢集上套用設定 (
overrides.yaml
) 時,會看到Error from server (invalid)
或The Job "apigee-resources-install" is invalid
等錯誤。
錯誤訊息
您可能會看到下列其中一種錯誤:
API 呼叫的錯誤回應
Apigee hybrid 上的 API 要求可能會失敗,並顯示以下錯誤訊息:
* Connection failed * connect to 34.84.67.39 port 443 failed: Operation timed out * Failed to connect to example.apis.com port 443: Operation timed out * Closing connection 0 curl: (7) Failed to connect to example.apis.com port 443: Operation timed out
將設定 (overrides.yaml) 套用至叢集時發生的錯誤
在安裝期間將設定 (overrides.yaml
檔案) 套用至叢集時,您可能會看到下列其中一個錯誤:
錯誤 #1
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
... ... Error from server (Invalid): error when applying patch: to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-10-1.4.6", Namespace: "istio-system" to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-11-1.4.6", Namespace: "istio-system" to: Resource: "batch/v1, Resource=jobs", GroupVersionKind: "batch/v1, Kind=Job" Name: "istio-init-crd-14-1.4.6", Namespace: "istio-system"
錯誤 #2
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
... ... The Job "apigee-resources-install" is invalid: spec.template: Invalid value: core.PodTemplateSpec{ObjectMeta:v1.ObjectMeta{Name:"apigee-resources-install", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0,
可能原因
如果 istio-ingressgateway
服務處於 pending
狀態,且無法繫結至外部 IP 位址,就可能發生這些錯誤,如下所示:
kubectl get services -n istio-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.198.5.104 <pending> 15020:31927/TCP, 12h 80:31381/TCP, 443:31391/TCP, 31400:31401/TCP, 15443:32623/TCP
istio-ingressgateway
服務處於 pending
狀態的可能原因如下:
原因 | 說明 |
---|---|
istio-system 命名空間中處於錯誤/待處理狀態的工作 | istio-system 命名空間中的 incomplete/erroneous 工作可能會導致 istio-ingressgateway 服務永遠處於 pending 狀態,且無法繫結至外部 IP 位址。 |
apigee-resources-install 工作在 apigee-system 命名空間中處於錯誤/待處理狀態 | apigee-system 命名空間中的 incomplete 工作可能會導致 istio- ingressgateway 服務永遠處於 pending 狀態,且無法繫結至外部 IP 位址。 |
指派給外部負載平衡器的 IP 位址範圍不正確 | istio-operator.yaml 檔案可能會設定錯誤的 IP 位址範圍,導致 istio-ingressgateway 服務永遠處於 pending 狀態,並在安裝期間無法繫結至外部 IP 位址。 |
原因:istio-system 命名空間中的工作處於錯誤/待處理狀態
診斷
- 請使用下列指令,檢查
istio-system
命名空間中的工作狀態:kubectl get jobs -n istio-system
- 工作狀態必須為
complete
。如果工作狀態為erroneous/pending
狀態,則表示這是問題的原因。
解決方法
- 如果任何工作處於
pending
或erroneous
狀態,請使用下列指令刪除這些工作:kubectl -n istio-system delete job JOB_NAME_FROM_STEP_1
- 套用
overrides.yaml
檔案,重新執行安裝作業:使用 Helm 更新
apigee-serving-cert
:helm install operator apigee-operator/ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE \ --dry-run=server
請務必加入所有顯示的設定,包括
--atomic
,以便在失敗時回復動作。安裝圖表:
helm upgrade operator apigee-operator/ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
原因:apigee-system 命名空間中的 apigee-resources-install 工作可能處於錯誤狀態
診斷
- 使用下列指令,檢查
apigee-system
命名空間中的工作狀態:kubectl get jobs -n apigee-system
- 工作狀態必須為
complete
。如果工作狀態處於erroneous/pending
狀態,則表示這是問題的原因。以下範例輸出內容顯示工作apigee-resources-install
已成功完成。kubectl get jobs -n apigee-system NAME COMPLETIONS DURATION AGE apigee-resources-install 1/1 23s 16d
解決方法
- 如果工作處於
pending
或erroneous
狀態,請使用下列指令刪除工作:kubectl -n apigee-system delete job JOB_NAME_FROM_STEP_1
- 套用
overrides.yaml
檔案,重新執行安裝作業:apigeectl apply -f overrides.yaml
原因:指派給外部負載平衡器的 IP 位址範圍不正確
診斷
- 請檢查
istio- operator.yaml
檔案中為負載平衡器設定的 IP 位址。例如,以下程式碼片段顯示istio-operator.yaml
檔案中設定 IP 位址的位置:-name: istio-ingressgateway enabled: true k8s: service: type: LoadBalancer loadBalancerIP: 10.195.24.23
istio-ingressgateway
服務在istio-operator.yaml
檔案中設為負載平衡器 (由 type 表示)。在 ASM 安裝期間,系統會使用已設定的 IP 位址建立負載平衡器,並連線與istio- ingressgateway
服務通訊。因此,您設定的 IP 位址應正確無誤,並保留給負載平衡器使用。- 請與網路團隊聯絡,確認為
loadBalancerIP
設定的 IP 位址是否正確。如果不正確,負載平衡器服務就無法繫結 IP 位址。這會導致istio-ingressgateway
服務永遠處於pending
狀態。
解決方法
- 請與網路團隊合作,在
istio- operator.yaml
檔案中設定正確的 IP 位址。 - 重新執行
Apigee 輸入閘道的安裝作業,並套用
overrides.yaml
檔案:helm upgrade $ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE
必須收集診斷資訊
如果問題在按照上述操作說明後仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:
- Google Cloud 專案 ID
- Apigee Hybrid 機構的名稱
- Kubernetes 叢集名稱
- 如果 Kubernetes 叢集位於不同的 Google Cloud 專案中,請輸入 Google Cloud 專案名稱
overrides.yaml
檔案- 在 ASM 安裝期間使用的
Istio-operator .yaml
檔案。 - 收集
istio-system
命名空間中每個istio-ingressgateway
Pod 的記錄:kubectl logs NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.log
- 收集
istio-system
命名空間中每個 Pod 的說明:kubectl describe pod NAME_OF_ISTIO_INGRESSGATEWAY_POD -n istio-system > /tmp/NAME_OF_ISTIO_INGRESSGATEWAY_POD.yaml
- 收集
istio-system
命名空間中的服務清單:kubectl get svc -n istio-system