Anthos Config Management 로그 보기

로그 보기

Anthos Config Management는 Kubernetes와 동일한 로깅 규칙을 따릅니다. 기본적으로 로깅 세부정보 수준은 2로 설정됩니다.

등록된 각 클러스터에서 여러 배포가 config-management-system 네임스페이스의 Pod에서 실행됩니다. 이러한 각 배포는 배포 이름으로 표시되는 서로 다른 하위 시스템을 나타냅니다.

  • git-importer: 저장소에 있는 구성을 CustomResourceDefinition(CRD)으로 클러스터에 가져옵니다.
  • monitor: 모니터링 및 측정항목 엔드포인트를 노출합니다.
  • syncer: 클러스터 구성이 git-importer에 의해 생성된 CRD와 동기화되도록 유지됩니다.

태스크는 배포로 나뉘지만, 배포 로그를 쿼리할 수 없습니다. 그러나 라벨 선택기를 사용할 수 있습니다. 각 배포에는 라벨 선택기 app=[Deployment name]이 있습니다.

배포 라벨 선택기를 사용하여 로그를 볼 수 있습니다. 다음 예시에서는 syncer 배포의 로그를 보여줍니다.

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

git-importer Pod에는 컨테이너 두 개(importergit-sync)가 있습니다. 이 중 한 가지 컨테이너의 로그만 보려면 -c 옵션으로 컨테이너를 지정합니다. 다음 예시에서는 importer 컨테이너의 로그를 보여줍니다.

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

로깅 세부정보 수준 변경

기본 로깅 세부정보 수준은 2로 설정됩니다. 세부정보 수준을 높여 디버깅하려면 다음 단계를 수행합니다.

  1. config-management-operator 배포를 수정합니다.

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

    대화형 편집기에서 replicas 값을 0으로 변경합니다. 이렇게 하면 아래에서 변경한 내용을 Operator가 되돌릴 수 없습니다.

  2. Anthos Config Management와 관련된 모든 배포 목록을 가져옵니다. 배포 이름과 배포 수는 모두 변경될 수 있습니다.

    kubectl get deployments -n=config-management-system
    
  3. 디버깅 또는 모니터링 중인 각 배포의 객체를 수정합니다. syncer를 변경하려는 배포 이름으로 바꿉니다.

    kubectl edit deployment syncer
    
  4. 모든 관련 배포를 수정한 후 config-management-operator 객체를 다시 수정하고 replicas를 1로 설정합니다.

    kubectl get deployments -n=config-management-system
    

디버깅이 완료되면 노드의 디스크 공간을 절약하기 위해 로그 세부정보 수준을 다시 2로 낮추는 것이 좋습니다. 이렇게 하려면 절차를 다시 수행하여 값을 2로 설정합니다.

객체를 업데이트한 Git 커밋 찾기

Operator가 저장소 업데이트로 인해 Kubernetes 객체에 변경사항을 적용하면 Git 커밋의 해시가 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]와 같은 명령어를 사용하여 커밋에 대한 정보를 확인할 수 있습니다.

다음 단계