Anthos Config Management のログの表示

ログの表示

Anthos Config Management は、Kubernetes と同じロギング規則に従います。 デフォルトでは、ログの詳細度は 2 に設定されています。

登録された各クラスタでは、config-management-system 名前空間内の Pod で複数の Deployment が実行されます。これらの Deployment は、Deployment の名前からわかるように、それぞれ異なるサブシステムを表します。

  • git-importer: リポジトリで見つかったコンフィグを CustomResourceDefinition(CRD)としてクラスタにインポートします。
  • monitor: モニタリングと指標のエンドポイントを公開します。
  • syncer: クラスタの構成が git-importer で作成された CRD と同期していることを確認します。

タスクが Deployment によって分割されている場合でも、Deployment のログの照会はできません。ただし、ラベルセレクタを使用することはできます。各 Deployment にはラベル セレクタ app=[Deployment name] があります。

Deployment のログを見るには、その Deployment のラベルセレクタを使用します。次の例では、syncer Deployment のログを示しています。

kubectl logs --namespace config-management-system -l app=syncer

git-importer Pod には、importergit-sync という 2 つの異なるコンテナがあります。これらのコンテナのいずれかのログのみを表示するには、-c オプションを使用します。次の例は、importer コンテナのログを示しています。

kubectl logs --namespace=config-management-system \
  -l app=git-importer \
  -c importer

ログの詳細度の変更

デフォルトのログの詳細度は 2 です。デバッグのために詳細度を高くする場合は、次の手順に従います。

  1. config-management-operator Deployment を編集します。

    kubectl edit deployment -n=kube-system config-management-operator
    

    インタラクティブ エディタで、replicas の値を 0 に変更します。これにより、Operator は以下で行った変更を元に戻せなくなります。

  2. Anthos Config Management に関連するすべての Deployment のリストを取得します。Deployment の名前と数はどちらも変更される可能性があります。

    kubectl get deployments -n=config-management-system
    
  3. デバッグまたはモニタリングする Deployment ごとに、オブジェクトを編集します。 syncer は、変更する Deployment の名前で置き換えます。

    kubectl edit deployment syncer
    
  4. 関連する Deployment をすべて変更したら、config-management-operator オブジェクトを再度編集し、replicas を 1 に設定します。

    kubectl get deployments -n=config-management-system
    

デバッグが終了した後、ノードのディスク容量を節約するためにログの詳細度を 2 に戻せます。そのためには、同じ手順を繰り返して値を 2 に設定します。

オブジェクトを更新した Git commit の特定

Operator がリポジトリの更新を理由に Kubernetes オブジェクトに変更を適用すると、Git commit のハッシュが configmanagement.gke.io/sync-token アノテーションに保存されます。このハッシュを表示するには、kubectl get を使用します。

kubectl get clusterrolebinding namespace-readers -oyaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRoleBinding","metadata":{"annotations":{"configmanagement.gke.io/managed":"enabled","configmanagement.gke.io/cluster-name":"config-management-cluster","configmanagement.gke.io/source-path":"cluster/namespace-reader-clusterrolebinding.yaml","configmanagement.gke.io/sync-token":"5edf7fda0cfccc351adfa2811954c80c812c26c5"},"creationTimestamp":null,"name":"namespace-readers"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"namespace-reader"},"subjects":[{"apiGroup":"rbac.authorization.k8s.io","kind":"User","name":"cheryl@foo-corp.com"}]}
    configmanagement.gke.io/managed: enabled
    configmanagement.gke.io/cluster-name: config-management-cluster
    configmanagement.gke.io/source-path: cluster/namespace-reader-clusterrolebinding.yaml
    configmanagement.gke.io/sync-token: 5edf7fda0cfccc351adfa2811954c80c812c26c5
  creationTimestamp: 2019-02-11T19:39:37Z
  name: namespace-readers
  resourceVersion: "6301538"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/namespace-readers
  uid: c45257a4-2e34-11e9-8a5e-42010a800134
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: namespace-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: cheryl@foo-corp.com

次に、git show [HASH] などのコマンドを使用して commit に関する情報を確認できます。

次のステップ