檢查混合式叢集是否已準備就緒
套用設定及安裝 Hybrid Helm 圖表前,請先確認 Kubernetes 叢集已準備好安裝 Apigee Hybrid。
如要檢查叢集是否已準備就緒,請建立含有 Kubernetes 工作定義的 YAML 檔案,並使用 kubectl 指令套用該檔案,藉此檢查叢集。接著,您會使用 kubectl get jobs 指令檢查 Kubernetes 測試工作的狀態。
- 使用下列指令,確認
kubectl已設為正確的環境。 目前的環境應設為要部署 Apigee Hybrid 的叢集。kubectl config current-context
結果應包含您要部署 Apigee Hybrid 的叢集名稱。舉例來說,在 GKE 上,內容名稱通常採用
gke_project-id_cluster-location_cluster-name形式,如下所示:gke_my-project_us-central1_my-cluster
如果環境中的名稱叢集名稱不相符,下列指令會取得叢集的
gcloud憑證,並設定kubectl環境:地區性叢集
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
區域叢集
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- 在 helm-charts 目錄中,建立
cluster-check目錄:mkdir $APIGEE_HELM_CHARTS_HOME/cluster-check
- 在
$APIGEE_HELM_CHARTS_HOME/cluster-check目錄中,建立名為apigee-k8s-cluster-ready-check.yaml的檔案,並在當中加入下列內容:apiVersion: v1 kind: ServiceAccount metadata: name: apigee-k8s-cluster-ready-check --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: cluster-check-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: "" kind: ServiceAccount namespace: default name: apigee-k8s-cluster-ready-check --- apiVersion: batch/v1 kind: Job metadata: name: apigee-k8s-cluster-ready-check spec: template: spec: hostNetwork: true serviceAccountName: apigee-k8s-cluster-ready-check containers: - name: manager image: gcr.io/apigee-release/hybrid/apigee-operators:1.12.4 command: - /manager args: - --k8s-cluster-ready-check env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP securityContext: runAsGroup: 998 runAsNonRoot: true runAsUser: 999 restartPolicy: Never backoffLimit: 1 - 使用下列
kubectl指令套用apigee-k8s-cluster-ready-check.yaml。這會執行測試:kubectl apply -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml
輸出內容應顯示服務帳戶和工作已建立。例如:
kubectl apply -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yamlserviceaccount/apigee-k8s-cluster-ready-check created job.batch/apigee-k8s-cluster-ready-check created - 使用下列指令檢查 Kubernetes 工作狀態:
kubectl get jobs apigee-k8s-cluster-ready-check
如果叢集已準備就緒,輸出內容應如下所示:
NAME COMPLETIONS DURATION AGE apigee-k8s-cluster-ready-check 1/1 8s 1h23m
如果測試失敗且叢集尚未準備就緒,輸出內容會類似於:
NAME COMPLETIONS DURATION AGE apigee-k8s-cluster-ready-check 0/1 44s 44s
查看完成次數:
- 1/1 成功,您的叢集已準備好安裝 Apigee Hybrid。
- 0/1 測試失敗。叢集尚未準備就緒。請按照下列步驟排解叢集問題。
- 如果測試失敗,請使用下列指令檢查記錄。
- 取得叢集前置檢查工作的 Pod 名稱:
kubectl get pods | grep apigee-k8s-cluster-ready-check
- 取得 Pod 的 Kubernetes 記錄:
kubectl logs pod_name
其中 pod_name 是 apigee-k8s-cluster-ready-check Pod 的名稱。
- 取得叢集前置檢查工作的 Pod 名稱:
- 請先清除這些使用者,再繼續進行下一步。使用下列指令刪除 Kubernetes 工作:
kubectl delete -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml
輸出內容應顯示服務帳戶和工作已刪除。例如:
kubectl delete -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yamlserviceaccount "apigee-k8s-cluster-ready-check" deleted job.batch "apigee-k8s-cluster-ready-check" deleted
您現在已確認 Apigee Hybrid 叢集已準備就緒。接下來,請安裝圖表,將設定套用至混合式執行階段。
疑難排解
- Cassandra DNS 檢查:如果發現類似
DNS resolution was successful but IP doesn't match POD IP、could not resolve hostname或error determining hostname的錯誤記錄,表示叢集 DNS 未針對多區域設定正確設定。如果您不打算設定多地區,可以忽略這項錯誤。 - 控制平面連線檢查:如果發現類似
error creating TCP connection with host的錯誤記錄,則需要解決叢集與 apigee.googleapis.com 的連線問題,然後重新執行作業。