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

檢查混合式叢集完備性

在套用設定並安裝混合式執行階段之前,請先確認 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 容器的名稱。

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

您現在已確認 Apigee 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) 步驟 9:安裝混合式執行階段 10