监控 RootSync 和 RepoSync 对象

本页面介绍了监控 RootSync 和 RepoSync 对象时可以使用的不同方式。 例如,您可能希望验证可靠来源中的最新提交内容是否应用于集群并成功进行协调。

查看日志

本部分介绍如何查看 RootSync 和 RepoSync 对象的日志。 查看日志可发现有关潜在错误的信息。

  • 如需查看 RootSync 或 RepoSync 协调器的日志,请运行以下命令:

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    请替换以下内容:

    • RECONCILER_NAME:RootSync 或 RepoSync 对象的协调器名称。

      • 对于 RootSync,协调器名称为 root-reconciler-ROOT_SYNC_NAME;如果 RootSync 的名称为 root-sync,则为 root-reconciler

      • 对于 RepoSync,协调器名称为 ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH;如果 RepoSync 的名称为 repo-sync,则为 ns-reconciler-NAMESPACE,其中 NAMESPACE 是您在其中创建 RepoSync 对象的命名空间。

    • CONTAINER_NAME:容器名称。

      • git-syncgit-sync 容器将配置从 Git 代码库拉取到协调器容器可以读取的本地目录。

      • oci-syncoci-sync 容器将配置从 OCI 映像拉取到协调器容器可以读取的本地目录。

      • helm-synchelm-sync 容器将配置从 Helm 图表拉取到协调器容器可以读取的本地目录。

      • hydration-controllerhydration-controller 容器渲染从代码库中拉取的任何 Helm 或 Kustomize 配置,然后将渲染的配置保存在共享卷中以供 reconciler 容器进一步处理。

      • reconcilerreconciler 容器会将这些配置应用到集群。

      • otel-agentotel-agent 容器是一个用于检索和导出 Config Sync 指标的 OpenTelemetry 代理。

查看已同步的提交

您可以通过检查 RootSync 或 RepoSync 对象中的 .status.sync 字段来检查将哪个提交同步到集群。

  • 如需查看 RootSync 对象的已同步提交,请运行以下命令:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAME 替换为 RootSync 对象的名称。

  • 如需查看 RepoSync 对象的已同步提交,请运行以下命令:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    请替换以下内容:

    • REPO_SYNC_NAME:RepoSync 对象的名称。
    • REPO_SYNC_NAMESPACE:您在其中创建了命名空间代码库的命名空间。

这些命令的输出会显示来源提交的值和同步提交。例如,如果您运行了 RepoSync 的命令,则会看到类似于以下内容的输出:

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

RENDERINGCOMMIT 列中的值是 hydration-controller 处理的提交。如果不需要渲染,则该值与 SOURCECOMMIT 列相同。SOURCECOMMIT 列中的值是应同步到集群的可靠来源的提交内容。SYNCCOMMIT 列中的值是当前部署到集群的提交。如果 SOURCECOMMITSYNCCOMMIT 列中的两个值相同,则预期提交已部署到集群。

确认提交中的资源已协调

对于每个 RootSync 或 RepoSync 对象,都有一个唯一的 ResourceGroup 对象捕获可靠来源中声明的代管式资源的协调状态。ResourceGroup 对象与 RootSync 或 RepoSync 对象具有相同的命名空间和名称。例如,对于命名空间 config-management-system 中名为 root-sync 的 RootSync 对象,相应的 ResourceGroup 对象也是命名空间 config-management-system 中的 root-sync。成功应用最新提交后,ResourceGroup 对象包含上次提交中的代管式资源的组、种类、命名空间和名称。

您可以运行以下命令来获取 ResourceGroup 对象。

  • 如需获取 RootSync 对象的 ResourceGroup 对象,请运行以下命令:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • 如需获取 RepoSync 对象的 ResourceGroup 对象,请运行以下命令:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    请替换以下内容:

    • ROOT_SYNC_NAME:您要查找的 ResourceGroup 对象的名称。
    • REPO_SYNC_NAME:您要查找的 ResourceGroup 对象的名称。
    • REPO_SYNC_NAMESPACE:您要查找的 ResourceGroup 对象的名称。

如需确认提交中的资源已协调,请在输出中查找以下内容:

  • .status.observedGeneration 等于 ResourceGroup 对象中 .metadata.generation 字段的值。
  • Stalled 条件和 Reconciling 条件都将 status 设置为 "False"
  • .status.resourceStatuses 字段中的每个项目的状态都是 Current

查看错误

RootSync 和 RepoSync 对象使用 status 字段跟踪将配置从可信来源同步到集群时遇到的错误。

  • 要查看 RootSync 对象的状态,请运行以下命令:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAME 替换为 RootSync 对象的名称。

  • 如需查看 RepoSync 对象的状态,请运行以下命令:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    请替换以下内容:

    • REPO_SYNC_NAME:RepoSync 对象的名称。
    • NAMESPACE:您在其中创建了命名空间代码库的命名空间。

下表介绍了 status 字段下的子字段:

字段 说明
status.rendering.errors 在渲染过程中遇到的错误是来自可信来源的 kustomize 配置。 这可能不包含遇到的所有错误,因为如果错误太多,Config Sync 会截断错误。
status.rendering.errorSummary.totalCount 跟踪在从可靠来源呈现配置过程中遇到的错误总数的整数。
status.rendering.errorSummary.truncated 指示 status.rendering.errors 字段是否包含从真实来源呈现配置过程中遇到的所有错误的布尔值。
status.rendering.errorSummary.errorCountAfterTruncation 跟踪 status.rendering.errors 字段中错误数量的整数。
status.source.errors 从可信来源读取和解析配置时遇到的错误。这可能无法包含遇到的所有错误,因为如果错误太多,Config Sync 会截断错误。
status.source.errorSummary.totalCount 跟踪在从可靠来源读取和解析配置时发生的错误总数的整数。
status.source.errorSummary.truncated 指示 status.source.errors 字段是否包含从真实来源读取和解析配置时遇到的所有错误。
status.source.errorSummary.errorCountAfterTruncation 跟踪 status.source.errors 字段中错误数量的整数。
status.sync.errors 从可靠来源应用配置时遇到的错误。这可能不包含遇到的所有错误,因为如果错误太多,Config Sync 会截断错误。
status.sync.errorSummary.totalCount 跟踪从可信来源应用配置时遇到的错误总数的整数。
status.sync.errorSummary.truncated 指示 status.sync.errors 字段是否包含从可信来源应用配置时遇到的所有错误的布尔值。
status.sync.errorSummary.errorCountAfterTruncation 跟踪 status.sync.errors 字段中错误数量的整数。
status.conditions 跟踪 RootSync 或 RepoSync 对象的当前状态的条件列表。
当条件的 type 字段为 ReconcilingStalled 时:
  • 条件的 errors 字段会跟踪协调 RootSync 或 RepoSync 对象时遇到的错误
  • 条件的 errorSummary 字段汇总了条件的 errors 字段中的错误
  • 条件的 errorsSourceRefs 字段为空
当条件类型为 Syncing 时:
  • 条件的 errors 字段为空
  • 条件的 errorsSourceRefs 字段跟踪错误的来源。错误来源可以是 status.rendering.errorsstatus.source.errorsstatus.sync.errors
  • 条件的 errorSummary 字段汇总了 errorsSourceRefs 字段中引用的错误。

查看对象详情

如需查看 RootSync 和 RepoSync 对象的详情,请使用 kubectl describe。该命令可以为您提供潜在错误的更多信息。

  • 如需查看 RootSync 对象的详情,请运行以下命令:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAME 替换为 RootSync 对象的名称。

  • 如需查看 RepoSync 对象的详情,请运行以下命令:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    请替换以下内容:

    • REPO_SYNC_NAME:RepoSync 对象的名称。
    • NAMESPACE:您在其中创建了命名空间代码库的命名空间。

查看资源是否准备就绪

如需了解同步到集群的资源是否准备就绪,请查看协调状态。例如,如果您查看协调状态,则系统可以显示同步的 Deployment 是否已准备好处理流量。

对于同步到集群的可靠来源,所有资源的协调状态会汇总到一个名为 ResourceGroup 的资源中。对于每个 RootSync 或 RepoSync 对象,系统会生成一个 ResourceGroup 来捕获应用于集群的资源集,并汇总其状态。

  • 如需查看 RootSync 对象的协调状态,请运行以下命令:

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAME 替换为 RootSync 对象的名称。

  • 如需查看 RepoSync 对象的协调状态,请运行以下命令:

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    请替换以下内容:

    • REPO_SYNC_NAME:RepoSync 对象的名称。
    • NAMESPACE:您在其中创建了命名空间代码库的命名空间。

在输出中,您会看到所有 ResourceGroup 资源状态。例如,以下输出显示名为 nginx-deployment 的 Deployment 已准备就绪:

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

后续步骤