구성 컨트롤러 문제 해결

이 페이지에서는 구성 컨트롤러 관련 문제를 해결하는 방법을 보여줍니다.

설치 문제 해결

이름이 지정된 네트워크 기본값 없음

구성 컨트롤러 인스턴스를 만들 때 기본 네트워크를 사용할 수 없다는 오류가 발생할 수 있습니다.

Error 400: Project \"PROJECT_ID\" has no network named \"default\"., badRequest\n\n  on main.tf line 35, in resource \"google_container_cluster\" \"acp_cluster\"

이 오류는 --network 플래그를 사용하여 기존 네트워크를 지정하지 않았고 Google Cloud의 기본 네트워크가 삭제 또는 사용 중지된 경우에 발생합니다. 기본적으로 구성 컨트롤러는 기본 네트워크에서 구성 컨트롤러 인스턴스를 지원하는 Google Kubernetes Engine(GKE) Enterprise 버전 클러스터를 만듭니다.

기존 네트워크에서 인스턴스를 만들려면 구성 컨트롤러 인스턴스를 만들 때 --network=NETWORK 플래그를 추가합니다. NETWORK를 기존 네트워크 이름으로 바꿉니다.

기본 네트워크에서 구성 컨트롤러 인스턴스를 만들려면 다음 명령어를 사용하여 기본 네트워크를 다시 만듭니다.

gcloud compute networks create default --subnet-mode=auto

이 명령어가 작동하려면 --subnet-mode=auto 플래그로 자동 서브넷을 사용 설정해야 합니다.

기본 네트워크를 다시 만든 후에는 구성 컨트롤러 인스턴스를 만들 때 --network 플래그를 생략할 수 있습니다.

MasterIpv4CidrBlock 값이 잘못됨

구성 컨트롤러 만들기에서는 제어 영역 IPv4 CIDR172.16.0.128/28의 기본 서브넷을 사용합니다. IPv4 CIDR 블록에서 충돌이 발생하면 다음 오류와 함께 구성 컨트롤러 만들기가 실패합니다.

Cloud SSA\n\nError: Error waiting for creating GKE cluster: Invalid value for field PrivateClusterConfig.MasterIpv4CidrBlock: 172.16.0.128/28 conflicts with an existing subnet in one of the peered VPCs.

이 오류가 표시되면 다른 비공개 IPv4 CIDR을 선택하고 gcloud anthos config controller create 명령어의 --master-ipv4-cidr-block 플래그를 사용합니다.

이미 사용 중인 IPv4 CIDR 블록을 찾으려면 다음 단계를 완료합니다.

  1. 피어링 이름을 찾습니다.

    gcloud compute networks peerings list --network=NETWORK
    

    NETWORK를 조회할 네트워크 이름으로 바꿉니다.

    출력은 다음과 비슷합니다.

    NAME                                    NETWORK   PEER_PROJECT               PEER_NETWORK                            PEER_MTU  IMPORT_CUSTOM_ROUTES  EXPORT_CUSTOM_ROUTES  STATE   STATE_DETAILS
    gke-n210ce17a4dd120e16b6-7ebf-959a-peer  default  gke-prod-us-central1-59d2  gke-n210ce17a4dd120e16b6-7ebf-0c27-net            False                 False                 ACTIVE  [2021-06-08T13:22:07.596-07:00]: Connected.
    
  2. 피어링에 사용되는 IPv4 CIDR을 표시합니다.

    gcloud compute networks peerings list-routes PEERING_NAME \
        --direction=INCOMING \
        --network=NETWORK \
        --region=REGION
    

    다음을 바꿉니다.

    • PEERING_NAME: 조회하려는 피어링의 이름
    • NETWORK: 조회하려는 네트워크의 이름
    • REGION: 구성 컨트롤러 인스턴스가 있는 리전의 이름

구성 컨트롤러 실행 중 문제 해결

노드 풀 IP 부족

다음 오류 메시지가 표시되면 노드 풀에 IP 주소가 부족하기 때문일 수 있습니다.

Can't scale up because instances in managed instance groups hosting node pools ran out of IPs

이 문제는 --cluster-ipv4-cidr-block 플래그를 생략한 경우에 발생할 수 있습니다. 이 플래그를 생략하면 구성 컨트롤러가 기본적으로 /20 포드 CIDR 범위로 지정됩니다. 이 범위에서는 노드가 최대 16개까지 제공됩니다.

노드가 더 필요한 경우, 생성 후 CIDR 블록을 수정할 수 없으므로 구성 컨트롤러 인스턴스를 삭제합니다. 구성 컨트롤러 인스턴스를 다시 만들 때는 선택적인 매개변수 --cluster-ipv4-cidr-block을 사용하고 CIDR range or netmask size를 지정합니다.

대시보드 정보 누락

Google Cloud 콘솔 대시보드에 구성 컨트롤러 세부정보가 표시되지 않으면 구성 컨트롤러에서 사용한 기본 서비스 계정에 필요한 Google Cloud Observability 권한이 없을 수 있습니다.

이러한 권한을 부여하려면 다음 명령어를 사용합니다.

# Cloud Monitoring metrics permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/monitoring.metricWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/stackdriver.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/opsconfigmonitoring.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Logging permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/logging.logWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Trace permissions\
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/cloudtrace.agent \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

다음을 바꿉니다.

  • PROJECT_ID: 구성 컨트롤러 인스턴스를 만든 프로젝트의 ID입니다.
  • PROJECT_NUMBER: Google Cloud 프로젝트 번호입니다.

구성요소 문제 해결

구성 컨트롤러 인스턴스가 정책 컨트롤러, 구성 동기화, 구성 커넥터로 사전 설치되기 때문에 이러한 구성요소에 문제가 발생할 수 있습니다. 이러한 구성요소의 문제 해결 방법은 다음 페이지를 참조하세요.

다음 섹션에서는 이러한 구성요소에 구성 컨트롤러를 사용할 때 발생할 수 있는 일반적인 문제에 대한 안내를 제공합니다.

동기화 오류

정보 소스의 구성(예: Git 저장소 또는 OCI 이미지)은 구성 동기화와 함께 구성 컨트롤러 인스턴스에 동기화됩니다. nomos status 명령어를 사용하여 이 동기화 프로세스의 오류를 확인합니다.

nomos status  --contexts $(kubectl config current-context)

구성 커넥터 리소스 문제 해결

변경할 수 없는 필드 및 리소스

기본 Google Cloud 리소스의 일부 필드(예: 프로젝트 ID 또는 VPC 네트워크 이름)를 변경할 수 없습니다. 구성 커넥터는 이러한 필드에 대한 수정을 차단하고 변경사항을 활성화할 수 없습니다. 이러한 변경할 수 없는 필드 중 하나를 수정하려면 Git을 통해 원래 리소스를 삭제한 후에 원하는 값을 다시 추가해야 합니다.

리소스 중단

경우에 따라 리소스가 올바르게 삭제되지 않을 수 있습니다(nomos status로 보고된 대로). 이 문제는 리소스에서 종료자를 삭제한 후 리소스를 수동으로 삭제하면 해결될 수 있습니다.

예를 들어 중단된 IAMPolicyMember를 삭제하려면 다음 명령어를 실행합니다.

kubectl patch IAMPolicyMember logging-sa-iam-permissions \
    -p '{"metadata":{"finalizers":[]}}' --type=merge -n config-control
kubectl delete IAMPolicyMember logging-sa-iam-permissions -n config-control

다음 단계