使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

监控 RootSync 和 RepoSync 对象

本页面介绍了监控 RootSync 和 RepoSync 对象时可以使用的不同方式。 例如,您可能希望验证已将 Git 代码库中的最新提交应用于集群并已成功进行协调。

查看日志

本部分介绍如何查看 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 列中的值是 Git 代码库中应同步到集群的提交。SYNCCOMMIT 列中的值是当前部署到集群的提交。如果 SOURCECOMMITSYNCCOMMIT 列中的两个值相同,则预期提交已部署到集群。

确认提交中的资源已协调

对于每个 RootSync 或 RepoSync 对象,都有一个唯一的 ResourceGroup 对象捕获 Git 代码库中声明的代管式资源的协调状态。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 是否已准备好处理流量。

对于同步到集群的 Git 代码库,所有资源的协调状态会汇总到一个名为 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

后续步骤