步驟 8:檢查叢集是否就緒

檢查混合式叢集是否已準備就緒

套用設定及安裝 Hybrid 執行階段前,請先確認 Kubernetes 叢集已準備好安裝 Apigee Hybrid。

如要檢查叢集是否已準備就緒,請建立含有 Kubernetes 工作定義的 YAML 檔案,並使用 kubectl 指令套用該檔案來檢查叢集。然後使用 kubectl get jobs 指令檢查 Kubernetes 測試工作的狀態。

  1. 使用下列指令,確認 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
  2. 在混合式檔案目錄中,建立 cluster-check 目錄:
    mkdir $HYBRID_FILES/cluster-check
  3. $HYBRID_FILES/cluster-check 目錄中,建立名為 apigee-k8s-cluster-ready-check.yaml 的檔案,並在當中加入下列內容:
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      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.10.0
              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
    
  4. 使用下列 kubectl 指令套用 apigee-k8s-cluster-ready-check.yaml。這會執行測試:
    kubectl apply -f $HYBRID_FILES/cluster-check/apigee-k8s-cluster-ready-check.yaml
  5. 使用下列指令檢查 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 測試失敗。叢集尚未準備就緒。請繼續執行下列步驟,排解叢集問題。

  6. 如果測試失敗,請使用下列指令檢查記錄:
    1. 取得叢集前置檢查工作的 Pod 名稱:
      kubectl get pods | grep apigee-k8s-cluster-ready-check
    2. 取得 Pod 的 Kubernetes 記錄:
      kubectl logs pod_name

      其中 pod_name 是 apigee-k8s-cluster-ready-check Pod 的名稱。

  7. 請先清除這些使用者,再繼續進行下一步。使用下列指令刪除 Kubernetes 工作:
    kubectl delete -f $HYBRID_FILES/cluster-check/apigee-k8s-cluster-ready-check.yaml

您現在已確認 Apigee Hybrid 叢集準備就緒。接著,請將設定套用至 Hybrid 執行階段,並完成 Apigee Hybrid 的安裝作業。

疑難排解

  1. Cassandra DNS 檢查:如果發現類似於 DNS resolution was successful but IP doesn't match POD IPcould not resolve hostnameerror determining hostname 的錯誤記錄,表示叢集 DNS 未針對多區域設定正確設定。如果您不打算設定多個區域,可以忽略這項錯誤。
  2. 控制平面連線檢查:如果發現類似於 error creating TCP connection with host 的錯誤記錄,則需要解決叢集與 apigee.googleapis.com 的連線問題,然後重新執行作業。
1 2 3 4 5 6 7 8 (NEXT) Step 9: Install the hybrid runtime 10 11