문제 해결

이 페이지에서는 Config Connector를 사용할 때 발생하는 몇 가지 일반적인 오류와 문제 해결 안내를 설명합니다.

일반적인 오류 메시지

Foo 종류에 일치하는 항목이 없습니다.

이 오류가 발생하면 Kubernetes 클러스터에 'Foo' 리소스 종류에 대한 CRD가 설치되지 않습니다.

우선 해당 종류가 Config Connector 리소스에 있는지 확인하세요.

해당 종류가 표시되면 문제가 오래되었거나 잘못된 Config Connector 설치입니다. GKE 부가기능으로 업그레이드하는 경우 자동으로 진행됩니다. 수동 설치에 대한 업그레이드는 다른 Kubernetes 배포판에 설치를 참조하세요.

리소스에 status가 표시되지 않습니다.

적용된 리소스에 status 필드가 표시되지 않는 경우 이는 Config Connector의 일부인 pod가 제대로 작동하지 않기 때문일 수 있습니다.

문제를 해결하려면 cnrm-system 네임스페이스에 비정상 pod가 있는지 검사합니다.

kubectl get pods -n cnrm-system --field-selector status.phase!=Running

spec.labels는 기본 Google Cloud 리소스에 적용되지 않습니다.

Config Connector는 metadata.labels에 있는 라벨을 기본 Google Cloud API에 전파합니다. 리소스의 spec에 라벨을 지정해서는 안 되며 spec.labels에 지정된 라벨은 무시됩니다.

자세한 내용은 객체 메타데이터를 참조하세요.

FAQ

Config Connector의 XX 버전이 GKE 부가기능으로 제공되는 때는 언제인가요?

Config Connector 부가기능의 버전이 GKE 버전에 연결되고 최근 버전으로부터 최대 10주간 지연됩니다(채널 및 채널의 버전에 따라 다름).

버전을 보다 세부적으로 제어하려면 부가기능에서 수동 설치로 전환을 참조하세요.

측정항목

Prometheus에서 스크랩을 위한 측정항목이 노출됩니다.

로깅

Config Connector에 포함된 모든 pod가 JSON 형식으로 로깅됩니다.

특히 cnrm-controller-manager pod 또는 pod의 로그는 특정 리소스 조정과 관련된 문제를 디버깅할 때 유용합니다.

다음 필드를 필터링하면 로그를 검토할 때 유용합니다.

  • logger: 리소스 종류를 포함합니다. 예를 들어 PubSubTopic 리소스에는 pubsubtopic-controllerlogger가 포함됩니다.
  • resource.namespace: 리소스의 네임스페이스를 포함합니다.
  • resource.name: 리소스 이름을 포함합니다.

특정 리소스에 대한 로그 메시지

GKE를 사용하는 경우 다음 쿼리를 사용하여 특정 리소스에 대한 로그를 쿼리할 수 있습니다.

# Filter to include only logs coming from the cnrm-controller-manager Pods
resource.type="k8s_container"
resource.labels.container_name="manager"
resource.labels.namespace_name="cnrm-system"
labels.k8s-pod/cnrm_cloud_google_com/component="cnrm-controller-manager"

# Filter to include only logs coming from a particular GKE cluster
resource.labels.cluster_name="GKE_CLUSTER_NAME"
resource.labels.location="GKE_CLUSTER_LOCATION"

# Filter to include only logs for a particular Config Connector resource
jsonPayload.logger="RESOURCE_KIND-controller"
jsonPayload.resource.namespace="RESOURCE_NAMESPACE"
jsonPayload.resource.name="RESOURCE_NAME"

다음을 바꿉니다.

  • GKE_CLUSTER_NAME은 Config Connector를 실행하는 GKE 클러스터의 이름입니다.
  • GKE_CLUSTER_LOCATION을 Config Connector를 실행하는 GKE 클러스터 위치로 바꿉니다. 예를 들면 us-central1입니다.
  • RESOURCE_KIND: 리소스 종류가 소문자로 표시됩니다. 예를 들면 pubsubtopic입니다.
  • RESOURCE_NAMESPACE을 리소스의 네임스페이스로 바꿉니다.
  • RESOURCE_NAME을 리소스의 이름으로 바꿉니다.

추가 도움말

추가 도움을 받으려면 GitHub에 문제를 제출하거나 Google Cloud 지원팀에 문의하세요.

티켓을 제출할 때 클러스터 진단 스크립트 출력을 포함하세요.

Unix 기반 운영체제의 경우 다음 명령어를 사용하여 스크립트를 실행할 수 있습니다.

source <(curl -s
  https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-config-connector/master/scripts/cluster-diagnostics.sh)