このページでは、RootSync
オブジェクトと RepoSync
オブジェクトをモニタリングするさまざまな方法について説明します。たとえば、信頼できる情報源の最新の commit がクラスタに適用され、正常に調整されているかを確認することができます。
同期された commit を表示する
クラスタと同期された commit を確認するには、RootSync
オブジェクトまたは RepoSync
オブジェクトの .status.sync
フィールドを確認します。
RootSync
オブジェクトの同期された commit を表示するには、次のコマンドを実行します。kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
ROOT_SYNC_NAME
は、RootSync
オブジェクトの名前に置き換えます。RepoSync
オブジェクトの同期された commit を表示するには、次のコマンドを実行します。kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
次のように置き換えます。
REPO_SYNC_NAME
:RepoSync
オブジェクトの名前。REPO_SYNC_NAMESPACE
: Namespace リポジトリを作成した Namespace。
これらのコマンドの出力には、元の commit の値と同期された commit の値が表示されます。たとえば RepoSync のコマンドを実行すると、次のような出力が表示されます。
NAME RENDERINGCOMMIT SOURCECOMMIT SYNCCOMMIT
root-sync 66882815f0ef5517df27e864fb1315e97756ab72 66882815f0ef5517df27e864fb1315e97756ab72 66882815f0ef5517df27e864fb1315e97756ab72
RENDERINGCOMMIT
列の値は、hydration-controller
によって処理される commit です。レンダリングの必要がない場合、値は SOURCECOMMIT
列と同じです。SOURCECOMMIT
列の値は、クラスタと同期する必要がある信頼できる情報源からの commit です。SYNCCOMMIT
列の値は、クラスタにデプロイされている commit です。SOURCECOMMIT
列と SYNCCOMMIT
列の 2 つの値が同じ場合は、想定された commit がクラスタにデプロイ済みです。
commit のリソースが調整されていることを確認する
ResourceGroup は、信頼できる情報源で宣言されたマネージド リソースの調整ステータスをキャプチャするため、commit 内のリソースが調整されているかどうかを確認できます。
ResourceGroup オブジェクトには、RootSync
オブジェクトまたは RepoSync
オブジェクトと同じ Namespace と名前が設定されています。たとえば、Namespace config-management-system
の root-sync
という名前の RootSync
オブジェクトについては、対応する ResourceGroup オブジェクトも Namespace 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 オブジェクトの名前。
commit 内のリソースが調整されたことを確認するには、出力で次のことを確認します。
.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
: Namespace リポジトリを作成した Namespace。
status
フィールドのサブフィールドについて詳しくは、オブジェクトのステータスをご覧ください。
オブジェクトの詳細を表示する
RootSync
オブジェクトと RepoSync
オブジェクトの詳細を表示し、潜在的なエラーに関する詳細情報を確認するには、kubectl describe
コマンドを使用します。
このコマンドの出力にはイベントが含まれます。これは特に、メモリの制約(OOMKilled)に直面しているコンテナ、スケジューリングの失敗、イメージの pull エラーなどの問題のデバッグに活用できます。
判読を容易にするために、次のコマンドに -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
: Namespace リポジトリを作成した 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
: Namespace リポジトリを作成した Namespace。
出力には、ResourceGroup のすべてのリソースのステータスが表示されます。たとえば、次の出力は、nginx-deployment
という名前の Deployment の準備ができていることを示しています。
resourceStatuses:
- group: apps
kind: Deployment
name: nginx-deployment
namespace: default
status: Current
ログを表示する
作成した RootSync
オブジェクトと RepoSync
オブジェクトごとに、Config Sync は同期を実行するための Reconciler Deployment を作成します。このセクションでは、これらの Reconciler のログを表示する方法について説明します。ログを表示すると、RootSync
オブジェクトまたは RepoSync
オブジェクトのステータスで確認できない進行状況、警告、エラーに関する追加情報が得られるため、問題のデバッグに活用できます。
RootSync
Reconciler またはRepoSync
Reconciler のログを表示するには、次のコマンドを実行します。kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
次のように置き換えます。
RECONCILER_NAME
:RootSync
オブジェクトまたはRepoSync
オブジェクトの Reconciler 名。RootSync
の場合、Reconciler の名前はroot-reconciler-ROOT_SYNC_NAME
です。RootSync
の名前がroot-sync
の場合はroot-reconciler
です。RepoSync
の場合、Reconciler の名前はns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
またはns-reconciler-NAMESPACE
(RepoSync
の名前がrepo-sync
の場合)です。ここで、NAMESPACE
はRepoSync
オブジェクトを作成した Namespace です。
CONTAINER_NAME
: コンテナ名は、reconciler
、git-sync
、hydration-controller
、oci-sync
、helm-sync
のいずれかの値にする必要があります。これらのコンテナの詳細については、Reconciler コンテナをご覧ください。
RootSync または RepoSync Reconciler のログレベルを構成する
より多くの情報がコンテナログに含まれるようにするには、ログの詳細度を構成します。デフォルトでは、ほとんどのコンテナにはログの詳細度に関するデフォルト値の 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 の場合、重大なイベントのみがログに記録されます。