监控 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-sync
:git-sync
容器将配置从 Git 代码库拉取到协调器容器可以读取的本地目录。oci-sync
:oci-sync
容器将配置从 OCI 映像拉取到协调器容器可以读取的本地目录。helm-sync
:helm-sync
容器将配置从 Helm 图表拉取到协调器容器可以读取的本地目录。hydration-controller
:hydration-controller
容器渲染从代码库中拉取的任何 Helm 或 Kustomize 配置,然后将渲染的配置保存在共享卷中以供reconciler
容器进一步处理。reconciler
:reconciler
容器会将这些配置应用到集群。otel-agent
:otel-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
列中的值是当前部署到集群的提交。如果 SOURCECOMMIT
和 SYNCCOMMIT
列中的两个值相同,则预期提交已部署到集群。
确认提交中的资源已协调
对于每个 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 字段为 Reconciling 或 Stalled 时:
Syncing 时:
|
查看对象详情
如需查看 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