本页面介绍了监控 RootSync
和 RepoSync
对象的不同方式。例如,您可能希望验证可靠来源中的最新提交是否已应用于集群并成功进行协调。
查看已同步的提交
您可以通过检查 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
列中的两个值相同,则预期提交已部署到集群。
确认提交中的资源已协调
由于 ResourceGroup 会捕获可靠来源中声明的托管式资源的协调状态,因此您可以检查它们以确认提交中的资源是否已协调。
ResourceGroup 对象与 RootSync
或 RepoSync
对象具有相同的命名空间和名称。例如,对于命名空间 config-management-system
中名为 root-sync
的 RootSync
对象,相应的 ResourceGroup 对象也是命名空间 config-management-system
中的 root-sync
。
如需获取
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
字段下的子字段,请参阅对象的状态。
查看对象详情
如需查看 RootSync
和 RepoSync
对象的详细信息并详细了解潜在的错误,请使用 kubectl describe
命令。
此命令的输出包含事件,这些事件对于调试容器面临内存限制 (OOMKilled)、调度失败或映像拉取错误等问题特别有用。
如需获得更易读的格式,请通过将 -o yaml
附加到以下命令,将输出转换为 YAML。当您需要检查特定参数、注解或资源规范时,此格式特别有用。
如需查看
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
查看日志
对于您创建的每个 RootSync
和 RepoSync
对象,Config Sync 会创建一个协调器 Deployment 来执行同步。本部分介绍如何查看这些协调器的日志。查看日志可提供有关进度、警告和错误的额外信息(除了 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
:容器名称必须是以下值之一:reconciler
、git-sync
、hydration-controller
、oci-sync
或helm-sync
。如需详细了解这些容器,请参阅协调器容器。
配置 RootSync 或 RepoSync 协调器日志级别
如需在容器日志中包含更多信息,请配置日志详细程度。默认情况下,大多数容器的日志详细程度默认值为 0
。默认值为 5
的 git-sync
和 otel-agent
容器除外。
更改日志详细程度时,请注意,提高日志详细程度会导致日志记录费用更高,因为记录的数据量更多。
如需更改日志详细程度,请使用 .spec.override.logLevels
字段,如以下示例所示:
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
name: root-sync
namespace: config-management-system
spec:
override:
logLevels:
- containerName: "reconciler"
logLevel: 0
- containerName: "git-sync"
logLevel: 10
containerName
字段中的值必须是以下值之一:reconciler
、git-sync
、hydration-controller
、oci-sync
或 helm-sync
。
如需确认已配置日志详细程度,请运行以下命令:
kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml
日志详细程度显示为 spec.template.spec.containers[]
中的一个 args
,类似于 -v=0
,其中 0 是当前日志详细程度。在此示例中,日志详细程度值为 0 仅会记录重要事件。