本页面介绍了监控 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条件的status为"False"。.status.resourceStatuses下的每个项的actuation均为Succeeded,reconcile均为Succeeded,status均为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 仅会记录重要事件。