步骤 10:检查集群就绪情况

检查混合集群就绪情况

在应用配置并安装 Hybrid 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: 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.14.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 $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 Pod 的名称。

  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 集群已准备就绪。接下来,安装图表以将配置应用于 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 10 (下一步)第 11 步:设置 Workload Identity