本頁面說明如何監控 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
記錄詳細程度可做為 spec.template.spec.containers[] 內的 args 之一,看起來像 -v=0,其中 0 是目前的記錄詳細程度。在本例中,記錄詳細程度值為 0 時,系統只會記錄重大事件。