本頁面說明如何監控 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
欄中的兩個值相同,表示預期的提交內容已部署至叢集。
確認提交中的資源已完成協調
由於 ResourceGroups 會擷取真實現來源中宣告的受管理資源的協調狀態,因此您可以檢查這些資源,確認提交中的資源是否已完成協調。
ResourceGroup 物件的命名空間和名稱與 RootSync
或 RepoSync
物件相同。舉例來說,如果命名空間 config-management-system
中有名為 root-sync
的 RootSync
物件,則命名空間 config-management-system
中對應的 ResourceGroup 物件也會是 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
」底下的每個項目都有Succeeded
的actuation
、Succeeded
的reconcile
,以及Current
的status
。
查看錯誤
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
或root-reconciler
(如果RootSync
的名稱為root-sync
)。如果是
RepoSync
,調解器名稱為ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
或ns-reconciler-NAMESPACE
(如果RepoSync
的名稱是repo-sync
),其中NAMESPACE
是您建立RepoSync
物件的命名空間。
CONTAINER_NAME
:容器名稱必須是下列其中一個值:reconciler
、git-sync
、hydration-controller
、oci-sync
或helm-sync
。如要進一步瞭解這些容器,請參閱「協調器容器」。
設定 RootSync 或 RepoSync 調解器記錄層級
如要在容器記錄中加入更多資訊,請設定記錄詳細程度。根據預設,大多數容器的記錄詳細程度預設值為 0
。例外狀況是 git-sync
和 otel-agent
容器,預設值為 5
。
變更記錄詳細程度時,請注意記錄詳細程度越高,記錄的資料量就越大,因此記錄費用也會越高。
如要變更記錄詳細程度,請使用 .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
記錄詳細程度可做為 args
之一,位於 spec.template.spec.containers[]
內,看起來像 -v=0
,其中 0 是目前的記錄詳細程度。在本例中,記錄詳細程度值為 0 時,系統只會記錄重大事件。