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

檢查混合式叢集完備性

在套用設定並安裝混合式 Helm 圖表之前,請先確認 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. 在 helm-charts 目錄中建立 cluster-check 目錄:
    mkdir $APIGEE_HELM_CHARTS_HOME/cluster-check
  3. $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
    
  4. 使用下列 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.yaml
    serviceaccount/apigee-k8s-cluster-ready-check created
    job.batch/apigee-k8s-cluster-ready-check created
  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 $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.yaml
    serviceaccount "apigee-k8s-cluster-ready-check" deleted
    job.batch "apigee-k8s-cluster-ready-check" deleted

您現在已確認 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 9 9 10 11 12