检查混合集群就绪情况
在应用配置并安装 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.3 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.yaml
serviceaccount/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.yaml
serviceaccount "apigee-k8s-cluster-ready-check" deleted job.batch "apigee-k8s-cluster-ready-check" deleted
现在,您已确保 Apigee Hybrid 集群已准备就绪。接下来,安装图表以将配置应用于 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 的连接并重新运行作业。