问题排查

本页面介绍使用 Config Connector 时可能会遇到的一些常见错误以及问题排查说明。

常见的错误消息

没有与种类 Foo 匹配的结果

出现此错误时,Kubernetes 集群没有安装“Foo”资源类型的 CRD。

首先,验证该种类是否在 Config Connector 资源中。

如果列出了该种类,则表示问题为 Config Connector 安装已过时或无效。使用 GKE 插件的升级应该会自动进行。如需了解手动安装的升级,请参阅在其他 Kubernetes 发行版上安装

没有显示任何资源 status

如果应用的资源未显示 status 字段,很可能是因为属于配置连接器的 Pod 未正确运行。

如需排查问题,请检查 cnrm-system 命名空间是否存在任何运行状况不佳的 Pod:

kubectl get pods -n cnrm-system --field-selector status.phase!=Running

spec.labels 未应用于底层 Google Cloud 资源

Config Connector 会将 metadata.labels 中找到的标签传播到底层 Google Cloud API。请勿在资源的 spec 中指定标签,并且会忽略 spec.labels 中指定的任何标签。

如需了解详情,请参阅对象元数据

常见问题解答

XX 版的 Config Connector 何时作为 GKE 插件提供?

Config Connector 插件的版本与 GKE 版本相关联,最多 10 周的延迟(根据渠道及渠道版本不同)。

如需对版本进行更多控制,请参阅从插件切换到手动安装

指标

系统会公开指标,供 Prometheus 抓取

日志记录

属于 Config Connector 的所有 Pod 都以 JSON 格式记录。

具体来说,在您调试特定资源的协调问题时,cnrm-controller-manager Pod 的日志非常有用。

在检查日志时,过滤以下字段很有帮助:

  • logger:包含资源的种类。例如,PubSubTopic 资源的 loggerpubsubtopic-controller
  • resource.namespace:包含资源的命名空间。
  • resource.name:包含资源的名称。

特定资源的日志消息

如果您使用的是 GKE,则可以通过以下查询查询特定资源的日志

# Filter to include only logs coming from the cnrm-controller-manager Pods
resource.type="k8s_container"
resource.labels.container_name="manager"
resource.labels.namespace_name="cnrm-system"
labels.k8s-pod/cnrm_cloud_google_com/component="cnrm-controller-manager"

# Filter to include only logs coming from a particular GKE cluster
resource.labels.cluster_name="GKE_CLUSTER_NAME"
resource.labels.location="GKE_CLUSTER_LOCATION"

# Filter to include only logs for a particular Config Connector resource
jsonPayload.logger="RESOURCE_KIND-controller"
jsonPayload.resource.namespace="RESOURCE_NAMESPACE"
jsonPayload.resource.name="RESOURCE_NAME"

请替换以下内容:

  • GKE_CLUSTER_NAME 替换为运行 Config Connector 的 GKE 集群的名称
  • GKE_CLUSTER_LOCATION 替换为运行 Config Connector 的 GKE 集群的位置。例如 us-central1
  • RESOURCE_KIND 替换为小写的资源种类。例如 pubsubtopic
  • RESOURCE_NAMESPACE 替换为资源的命名空间。
  • RESOURCE_NAME 替换为资源的名称。

更多帮助

如需其他帮助,您可以在 GitHub 上提交问题,也可以联系 Google Cloud 支持团队

提交支持工单时,请提供集群诊断脚本的输出。

对于基于 unix 的操作系统,该脚本可以使用以下命令运行:

source <(curl -s
  https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-config-connector/master/scripts/cluster-diagnostics.sh)