프리플라이트 검사 실행 중

이 문서에서는 VMware용 Google Distributed Cloud(소프트웨어만 해당)에서 클러스터를 만들거나 업그레이드할 때 실행되는 프리플라이트 검사에 대한 정보를 제공합니다.

방화벽 규칙 검토

버전 1.29 이상에서는 클러스터를 생성, 업데이트, 업그레이드할 때 서버 측 프리플라이트 검사가 기본적으로 사용 설정됩니다. 서버 측 프리플라이트 검사에는 추가 방화벽 규칙이 필요합니다. 관리자 클러스터의 방화벽 규칙에서 '프리플라이트 검사'를 검색하고 필요한 모든 방화벽 규칙이 구성되었는지 확인합니다.

gkectl check-config 실행

gkectl을 사용하여 클러스터를 만들려면 gkectl create-config를 실행하여 구성 파일을 생성합니다. 구성 파일을 통해 설치를 유도할 수 있습니다. 즉, 개발자가 vSphere 환경, 네트워크 및 부하 분산기, 클러스터 모양에 대한 정보를 제공합니다. 관리자 워크스테이션을 만들기 전이나 만든 후에 구성 파일을 생성할 수 있습니다. 특정 검사를 통과하려면 관리자 워크스테이션에서 검사를 실행해야 합니다.

환경 및 클러스터 요구사항에 맞게 파일을 수정한 후 파일을 사용하여 온프렘 환경에서 클러스터를 만듭니다.

gkectl을 사용하여 클러스터를 만들기 전에 gkectl check-config를 실행하여 여러 프리플라이트 검사로 구성 파일 유효성을 검사합니다. 이 명령어를 실행했을 때 FAILURE 메시지가 반환되는 경우 문제를 해결하고 파일을 다시 검사하세요. 특정 기능 유효성 검사에서 경고 메시지를 반환하는 경우 근본적인 문제를 해결해야 해당 기능을 사용할 수 있습니다.

실행 전 검사 모드 및 유효성 검사 건너뛰기

gkectl check-config에는 기본 모드와 빠른 모드가 있습니다.

  • 기본 모드에서 이 명령어는 각 필드 유효성을 포괄적으로 검사합니다. 또한 기본 모드는 유효성 검사 중에 임시 vSphere 가상 머신(VM)을 만들므로 시간이 더 걸릴 수 있습니다.

  • 빠른 모드에서는 이 명령어가 테스트 VM을 만드는 검사를 건너뛰고 빠른 검사만 실행합니다. --fast 플래그를 전달하여 빠른 모드를 사용 설정합니다.

gkectl check-config --help에 설명된 다른 플래그를 전달하여 특정 유효성 검사를 건너뛸 수 있습니다.

관리자 워크스테이션과 테스트 VM 간의 트래픽

기본 모드에서 실행 전 검사는 클러스터에 대한 테스트 VM을 만듭니다. 각 테스트 VM은 포트 443과 구성 파일에서 지정된 노드 포트에서 리슨하는 HTTP 서버를 실행합니다.

여러 IP 주소가 테스트 VM에 할당됩니다. 구성 파일에서 클러스터 노드가 DHCP 서버에서 IP 주소를 가져오도록 표시된 경우 실행 전 검사에서는 DHCP 서버를 사용하여 테스트 VM에 IP 주소를 할당합니다. 구성 파일에서 클러스터 노드에 고정 IP 주소가 할당되도록 표시된 경우 실행 전 검사에서는 IP 블록 파일에서 지정한 고정 IP 주소를 테스트 VM에 할당합니다.

관리자 워크스테이션에서 실행되는 실행 전 검사는 VM에 할당된 여러 IP 주소를 사용하여 HTTP 요청을 테스트 VM으로 전송합니다. 요청은 포트 443과 구성 파일에서 지정된 노드 포트로 전송됩니다.

실행 전 검사는 언제 실행해야 하나요?

클러스터를 만들기 전에 실행 전 검사를 미리 실행하는 것이 좋습니다. 실행 전 검사를 미리 실행하면 vSphere 환경과 네트워크를 올바르게 구성했는지 확인할 수 있습니다.

버전 1.2.0-gke.6을 사용하는 경우 gkectl check-config를 두 번 실행합니다.

  1. gkectl check-config --fast를 실행합니다.

  2. gkectl prepare를 실행합니다.

  3. --fast 플래그 없이 gkectl check-config를 다시 실행합니다.

두 번 실행하는 이유는 gkectl prepare가 클러스터 노드 OS 이미지의 VM 템플릿을 vSphere 환경에 업로드하기 때문입니다. 전체 유효성 검사 집합을 실행하기 전에 VM 템플릿이 있어야 합니다.

버전 1.2.1 이상에서 check-config 명령어 자체는 VM 템플릿을 업로드하므로 gkectl prepare를 실행하기 전에 전체 유효성 검사 집합을 실행할 수 있습니다.

  1. --fast 플래그 없이 gkectl check-config를 실행합니다.

  2. gkectl prepare를 실행합니다.

실행 전 검사는 파일에 제공된 값의 유효성을 검사합니다. 파일에 실행 전 검사를 실행하기 위해 구성 파일의 모든 필드를 채울 필요는 없습니다. 대신 필드를 채울 때 파일 유효성을 반복적으로 검사할 수 있습니다. 예를 들어 vCenter 구성 유효성만 검사하려면 vcenter 필드만 채우고 해당 필드에 검사를 실행하면 됩니다.

클러스터를 만든 후에는 구성을 변경할 수 없습니다. 프리플라이트 검사를 실행하면 클러스터를 만들기 전에 구성에서 문제를 찾고 해결할 수 있습니다.

테스트 VM 디버깅 준비

버전 1.2.1부터 gkectl check-config 명령어에 --cleanup 플래그가 있습니다.

gkectl check-config에서 전체 유효성 검사 집합을 수행하면 테스트 VM과 관련 SSH 키가 생성됩니다. 디버깅을 위해 테스트 VM과 SSH 키를 보존하려면 --cleanup을 false로 설정합니다.

--cleanup의 기본값은 true입니다.

실행 전 검사 목록

실행 전 검사는 구성 파일의 각 필드 유효성을 검사합니다. 현재 검사는 다음과 같습니다.

카테고리 설명
구성 파일

일반적으로 각 필드와 사양에 예상 형식 및 값이 있는지 확인합니다.

--skip-validation-config 플래그로 건너뜁니다.

--skip-validation-proxy 플래그를 사용하여 proxy 필드 유효성 검사를 건너뜁니다.

인터넷

필요한 도메인에 대한 인터넷 액세스 유효성을 검사합니다. gkectl을 실행할 위치를 기준으로 프록시 구성 유효성을 검사합니다.

--skip-validation-internet 플래그로 건너뜁니다.

OS 이미지

OS 이미지가 존재하는지 확인합니다.

--skip-validation-os-images 플래그로 건너뜁니다.

Windows OS 버전

Windows OS 버전 유효성을 검사합니다.

gkeadm 명령줄 도구를 사용하여 관리자 워크스테이션을 만들 때 Windows 버전이 지원되는지 확인합니다. gkeadm 도구는 Windows 10, Windows Server 2019, Linux에서 사용할 수 있지만 Linux에는 실행 전 검사가 없습니다. 이 유효성 검사는 출시 버전 1.4.1부터 제공됩니다.

클러스터 버전

관리자 클러스터 버전, 사용자 클러스터 버전, gkectl 버전이 생성 및 업그레이드와 일치하는지 확인합니다.

--skip-validation-cluster-version 플래그로 건너뜁니다.

클러스터 상태

업그레이드 전 관리자 또는 사용자 클러스터가 정상인지 확인합니다.

  • 관리자 클러스터: 확인 대상에 Kubernetes 서비스, 구성요소 상태, DaemonSet, 배포, 머신, 포드가 포함됩니다.
  • 사용자 클러스터: 확인 대상에 Kubernetes 서비스, 클러스터 API 엔드포인트, StatefulSet, 배포, 머신 배포, 머신, 포드가 포함됩니다.

--skip-validation-cluster-health 플래그로 건너뜁니다.

인그레스 업그레이드하기 전에 사용자 클러스터에 Istio 게이트웨이 객체가 있는지 확인합니다.
예약된 IP

생성 및 업그레이드에 사용할 수 있는 충분한 IP 주소가 있는지 확인합니다.

--skip-validation-reserved-ips 플래그로 건너뜁니다.

Google Cloud
프로젝트 ID
[*].projectid
구성의 여러 필드에 제공된 프로젝트 ID 유효성을 검사합니다. 프로젝트 ID가 누락되면 유효성 검사를 건너뜁니다.
등록 서비스 계정
registerserviceaccountkeypath
서비스 계정이 필요한 IAM 역할을 보유하고 있는지 확인합니다. 필요한 API가 사용 설정되었는지 확인합니다.
연결 서비스 계정
agentserviceaccountkeypath
서비스 계정이 필요한 IAM 역할을 보유하고 있는지 확인합니다. 필요한 API가 사용 설정되었는지 확인합니다.
Google Cloud Observability 서비스 계정
stackdriver.serviceaccountkeypath
서비스 계정이 필요한 IAM 역할을 보유하고 있는지 확인합니다. 필요한 API가 사용 설정되었는지 확인합니다.
--skip-validation-gcp 플래그로 건너뜁니다.
gcr.io/gke-on-prem-release 액세스 권한 보유 Container Registry에서 호스팅되는 컨테이너 이미지 레지스트리에 대한 액세스 유효성을 검사합니다.

--skip-validation-docker 플래그로 건너뜁니다.

Docker 레지스트리
privateregistryconfig
구성된 경우 Docker 레지스트리에 대한 액세스 유효성을 검사합니다.

--skip-validation-docker 플래그로 건너뜁니다.

vCenter 모든 vcenter 필드가 있는지 확인하고 다음 사항도 확인합니다.
사용자 인증 정보
vcenter.credentials.[*]
제공된 사용자 인증 정보를 사용하여 vCenter Server 인증 유효성을 검사합니다.
vSphere 버전 vCenter 및 ESXi 버전이 지원되는지 확인합니다.
데이터센터
vcenter.datacenter
vSphere 데이터센터가 있는지 확인합니다.
Datastore
vcenter.datastore
vSphere Datastore가 있는지 확인합니다.
데이터 디스크
vcenter.datadisk
vSphere 가상 머신 디스크(VMDK)가 vSphere에 아직 없는지 확인합니다.
리소스 풀
vcenter.resourcepool
vSphere 리소스 풀이 있는지 확인합니다.
네트워크
vcenter.network
vSphere 네트워크가 있는지 확인합니다.

--skip-validation-infra 플래그로 건너뜁니다.

스토리지
vSphere CSI 드라이버 트리 내 또는 CSI vSphere PersistentVolume이 있으면 vSphere CSI 드라이버가 사용 설정되었는지 확인합니다. 즉, 사용자 클러스터 구성 파일에서 storage.vSphereCSIDisabledtrue로 설정되지 않았습니다.
StorageClass 매개변수

StorageClass에 지원되지 않는 다음 매개변수가 없는지 확인합니다.

  • hostfailurestotolerate
  • forceprovisioning
  • cachereservation
  • diskstripes
  • objectspacereservation
  • iopslimit
  • diskformat

클러스터에 앞의 매개변수와 함께 StorageClass가 있으면 볼륨을 마이그레이션해야 할 수도 있습니다.

자세한 내용은 트리 내 vSphere 볼륨 마이그레이션 고려사항1.15 업그레이드에 대한 알려진 문제 섹션을 참조하세요.

정적으로 생성된 vSphere 트리 내 PersistentVolume 및 PersistentVolumeClaim의 주석

업그레이드하기 전에 vSphere 트리 내 PersistentVolume 및 vSphere PersistentVolumeClaim의 주석을 확인합니다.

  • 정적으로 생성된 vSphere 트리 내 PersistentVolume에는 pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume 주석이 있습니다.
  • 정적으로 생성된 vSphere PersistentVolumesClaim에는 volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volumevolume.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume 주석이 있습니다.

클러스터에 이러한 주석 없이 vSphere 트리 내 PersistentVolume 또는 vSphere PersistentVolumeClaim이 있는 경우 계속하기 전에 PersistentVolume 및 PersistentVolumeClaim에 주석을 추가해야 합니다. 트리 내 vSphere 볼륨 마이그레이션 고려사항을 참조하세요

CSI 워크로드

클러스터가 vSphere CSI 드라이버를 통해 생성되고 동적으로 프로비저닝된 PersistentVolume을 사용하는 워크로드를 성공적으로 실행할 수 있는지 확인합니다.

이러한 검사는 트리 내 vSphere 볼륨이 있고 vSphere CSI 볼륨이 없는 경우에만 업그레이드 중에 실행됩니다.

이 검사는 다음을 확인합니다.

  1. 검사의 이전 실행에서 남아 있는 리소스가 없는지 확인합니다.
  2. 'csi.vsphere.vmware.com'으로 설정된 프로비저닝 도구 필드가 있는 StorageClass를 찾거나 만듭니다.
    1. 사용자 클러스터에서 CSI StorageClass standard-rwo를 선택합니다.
    2. 관리자 클러스터에서는 프로비저닝 도구 필드가 csi.vsphere.vmware.com으로 설정된 StorageClass를 찾습니다. 클러스터에 이러한 StorageClass가 없으면 테스트에서 일시적으로 새 CSI StorageClass를 만들고 검사에 사용합니다.
  3. 이전 단계에서 찾거나 만든 StorageClass를 사용하여 기본 네임스페이스에 PersistentVolumeClaim을 만들고 동적으로 생성된 PersistentVolume이 Bound 단계에 있을 때까지 기다립니다.
  4. 앞에서 만든 PersistentVolume을 마운트하는 기본 네임스페이스에 작성자 작업을 만듭니다. 작성자 포드가 예약되고 시작 시 마운트된 파일 시스템의 파일에 문자열을 씁니다.
  5. 작성자 작업과 연결된 포드를 해체합니다.
  6. 앞에서 만든 PersistentVolume을 마운트하는 기본 네임스페이스에 리더 작업을 만듭니다. 리더 포드가 예약되고 시작 시 작성자 포드에서 작성한 파일을 읽고 작성자 포드에서 작성한 데이터를 성공적으로 읽는지 확인합니다.
  7. 리더 작업과 연결된 포드를 해체합니다.
  8. PersistentVolumeClaim을 해체하면 PersistentVolume도 삭제됩니다.
  9. 테스트 중에 생성된 StorageClass를 해체합니다.

안티어피니티 그룹의 호스트

antiAffinityGroups가 사용 설정된 경우 물리적 vCenter 호스트 수가 최소 세 개 이상인지 확인합니다.

클러스터에 antiAffinityGroups를 중지하려면 antiAffinityGroups.enabled 및 이 출시 노트를 참조하세요.

--skip-validation-infra 플래그로 건너뜁니다.

부하 분산기

부하 분산 구성 유효성을 검사합니다.

  • 부하 분산 모드가 통합된 경우(lbmode: Integrated) 모든 bigip 필드가 adminclusterusercluster 사양에 있는지 확인합니다.
  • 부하 분산 모드가 수동인 경우(lbmode: Manual) 모든 manuallbspec 필드가 adminclusterusercluster 사양에 있는지 확인합니다.
통합 부하 분산
bigip.credentials.[*] F5 BIG-IP 사용자 인증 정보 유효성을 검사합니다.
bigip.partition 제공된 파티션이 있는지 확인합니다.
F5 BIG-IP 사용자 역할 제공된 F5 BIG-IP 사용자에게 관리자 또는 리소스 관리자 역할이 있는지 확인합니다.
bigip.vips.[*] 제공된 VIP 유효성을 검사합니다.

--fast 또는 --skip-validation-load-balancer 플래그로 건너뜁니다.

수동 부하 분산
네트워킹 구성 VIP, 노드 IP 등의 유효성을 검사합니다.

--fast 또는 --skip-validation-load-balancer 플래그로 건너뜁니다.

[*].manuallbspec.[*] 제공된 노드 포트의 유효성을 검사합니다.
--skip-validation-load-balancer 플래그로 건너뜁니다.
네트워킹

제공된 CIDR 범위, VIP, 고정 IP(구성된 경우)를 사용할 수 있는지 확인합니다. IP 주소가 겹치지 않는지 검사합니다.

--skip-validation-net-config 플래그로 건너뜁니다.

DNS

제공된 DNS 서버를 사용할 수 있는지 확인합니다.

--skip-validation-dns 플래그로 건너뜁니다.

NTP

제공된 네트워크 시간 프로토콜(NTP) 서버를 사용할 수 있는지 확인합니다.

--skip-validation-tod 플래그로 건너뜁니다.

VIP

제공된 VIP를 핑합니다. 핑이 실패하면 이 VIP를 아직 가져오지 않았음을 나타내므로 이 검사가 성공한 것입니다.

--skip-validation-vips 플래그로 건너뜁니다.

노드 IP

제공된 노드 IP 주소를 핑합니다. 핑이 실패하면 노드 IP를 아직 가져오지 않았음을 나타내므로 이 검사가 성공한 것입니다.

--skip-validation-node-ips 플래그로 건너뜁니다.

실행 전 검사 결과

실행 전 검사는 다음과 같은 결과를 반환할 수 있습니다.

성공
필드와 필드 값이 검사를 통과했습니다.
FAILURE
필드 또는 필드 값이 검사를 통과하지 못했습니다. 검사 결과 FAILURE 메시지가 반환되면 문제를 해결하고 파일 유효성을 다시 검사합니다.
SKIPPED

검사가 구성과 관련이 없으므로 검사를 건너뛰었습니다. 예를 들어 DHCP 서버를 사용하는 경우 고정 IP 구성만 관련된 DNS 검사와 노드 IP 검사는 건너뜁니다.

유효성 검사를 건너뛰는 플래그를 전달하면 건너뛴 검사는 SKIPPED 결과를 반환하지 않습니다. 오히려 유효성 검사가 실행되지 않고 명령어 결과에 아무 것도 표시되지 않습니다.

알 수 없음

건너뛰기에서 0이 아닌 코드를 반환했습니다. UNKNOWN 결과를 검사 실패로 간주할 수 있습니다. UNKNOWN은 일반적으로 검사에서 nslookup 실행 실패 또는 gcloud 실행 실패와 같은 일부 시스템 패키지를 실행할 수 없음을 나타냅니다.

출시 예정

다음 출시 버전에서는 다음과 같은 실행 전 검사가 추가됩니다.

  • NTP 서버

프리플라이트 검사 실행

다음 명령어를 실행하여 프리플라이트 검사를 실행합니다.

gkectl check-config --config [CONFIG]

여기서 [CONFIG]는 구성 파일 경로입니다.

빠른 모드에서 실행

원하는 경우 부하 분산 VIP 및 노드 IP 유효성 검사와 같은 임시 테스트 VM을 만드는 유효성 검사를 건너뛰는 '빠른 모드'에서 실행 전 검사를 실행할 수 있습니다. 이렇게 하려면 --fast를 전달합니다.

gkectl check-config --config [CONFIG] --fast

특정 유효성 검사 건너뛰기

플래그를 전달하여 DNS, 프록시, 네트워킹과 같은 특정 유효성 검사를 세부적으로 건너뛸 수 있습니다. 각 건너뛰기 플래그의 프리픽스는 --skip-[VALIDATION]입니다.

사용 가능한 건너뛰기 플래그에 대해 알아보려면 다음 명령어를 실행하세요. 원하는 경우 gkectl check-config 참조를 확인하세요.

gkectl check-config --help

예를 들어 부하 분산기 유효성 검사를 건너뛰려면 다음을 실행합니다.

gkectl check-config --config my-config.yaml --skip-validation-load-balancer 

실행 전 검사 취소

실행 전 검사를 실행했지만 취소하려면 CTRL + C를 두 번 누릅니다. 실행 전 검사에서 테스트 VM을 만든 경우 취소하면 VM이 자동으로 삭제되어야 합니다.

테스트 VM 삭제

실행 전 검사를 완료한 후에 테스트 VM이 남아 있으면 vCenter에서 이 VM을 삭제할 수 있습니다. 테스트 VM 이름은 다음과 같습니다.

check-config-[dhcp|static]-[random number]

VM을 삭제하려면 다음 안내를 따르세요.

  1. VM을 마우스 오른쪽 버튼으로 클릭하고 Power(전원) > Power Off(전원 끄기)를 클릭합니다.

  2. VM을 종료한 후 VM을 다시 마우스 오른쪽 버튼으로 클릭하고 디스크에서 삭제를 클릭합니다.

다음은 명령어 출력 예시입니다. 이 예시에서 유효성을 검사하는 구성은 통합된 부하 분산 모드와 외부 Docker 레지스트리가 없는 고정 IP를 사용합니다.

- Validation Category: Config Check
    - [SUCCESS] Config

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: GCP
    - [SUCCESS] GCP Service
    - [SUCCESS] GCP Service Account

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Data Disk
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network
    - [SUCCESS] VSphere CSI Driver

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster F5 (credentials, partition and user role)
    - [SUCCESS] User Cluster F5 (credentials, partition and user role)

- Validation Category: Network Configuration
    - [SUCCESS] CIDR, VIP and static IP (availability and overlapping)

- Validation Category: DNS
    - [SUCCESS] DNS (availability)

- Validation Category: VIPs
    - [SUCCESS] ping (availability)

- Validation Category: Node IPs
    - [SUCCESS] ping (availability)

Now running slow validation checks. ...

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with admin cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with user cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster VIP and NodeIP
    - [SUCCESS] Admin Cluster F5 Access
    - [SUCCESS] User Cluster VIP and NodeIP
    - [SUCCESS] User Cluster F5 Access

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: vCenter on test VMs
    - [SUCCESS] Test VM: VCenter Access and Permission

- Validation Category: DNS on test VMs
    - [SUCCESS] Test VM: DNS Availability

- Validation Category: TOD on test VMs
    - [SUCCESS] Test VM: TOD Availability

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

Deleting test VMs with admin cluster configuration...  DONE
Deleting test VMs with user cluster configuration...  DONE

알려진 문제

  • 버전 1.3.0-gke.16:

    다음 두 가지 모두에 해당하는 경우 실행 전 검사에 빠른 유효성 검사 gkectl check-config --fast를 실행해야 합니다.

    1. 프록시를 사용하도록 Google Distributed Cloud를 구성했습니다.

    2. 다음 번들 중 하나를 설치했습니다.

      • 다운로드 페이지의 /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz 번들
      • 관리자 워크스테이션의 /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz 번들

    전체 번들을 설치한 경우에만 전체 유효성 검사 집합을 실행할 수 있습니다. 예를 들면 다음과 같습니다. /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • 버전 1.2.0-gke.6:

    중첩된 리소스 풀이나 기본 리소스 풀을 사용하는 경우 gkectl check-config는 전체 유효성 검사를 수행하려고 하면 실패합니다. 그러나 --fast 플래그를 전달하면 더 작은 유효성 검사 집합을 수행할 수 있습니다.

    gkectl check-config --config [CONFIG] --fast

다음 단계