VM 복원력

이 문서에서는 가상 머신 (VM) 복원력과 애플리케이션 운영자가 Google Distributed Cloud (GDC) 에어갭 내 VM에서 더 심층적인 통계를 얻기 위해 사용 설정할 수 있는 선택적 검사에 대해 간략하게 설명합니다.

이 문서는 VM을 운영하는 애플리케이션 운영자 그룹 내 개발자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.

GDC의 VM은 기본 인프라 또는 게스트 오류 발생 시 서비스 연속성을 개선하기 위해 HA를 제공합니다. VM 상태에 대한 자세한 정보를 제공하는 선택적 상태 신호를 내보내도록 시스템을 구성할 수도 있습니다.

VM 가용성 확인

시스템은 다음과 같은 VM 가용성 확인을 제공합니다.

수표 이름 설명 완화 조치 지원 신호 사용 가능 여부
게스트 상태 점검 게스트 OS 상태를 확인합니다. 다른 게스트 내 확인의 필수 요건입니다. 게스트 내 확인
스토리지 확인 VM의 기본 스토리지 상태를 확인합니다. 게스트 내 확인
이그레스 확인 잘 알려진 내부 엔드포인트에 대한 연결을 확인합니다. 아니요 게스트 내부 확인 및 외부
인그레스 확인 구성된 수신 (VirtualMachineExternalAccess)을 사용하여 VM 접근성을 확인합니다. 아니요 게스트 내 확인

완화 조치로 VM을 다시 시작하고 빈번한 장애 발생 시 다른 노드로 다시 예약할 수 있습니다.

권한 및 액세스 요청

이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM이 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin) 역할이 있는지 확인합니다.

게스트 내 검사 사용 설정

기본적으로 guestHealthCheck이 없으면 게스트 내 확인이 사용 중지됩니다.

VM의 게스트 내 확인을 사용 설정하거나 중지하려면 VM 사양에서 GuestEnvironment를 업데이트해야 합니다. 이 설정은 게스트 에이전트가 설치된 경우 VM 내부에서 측정항목을 수집합니다. guestHealthCheck이 없으면 게스트 내 검사가 기본적으로 사용 중지됩니다.

  1. VM의 구성 파일을 엽니다.
  2. spec: 섹션으로 이동합니다.
  3. guestEnvironment:guestHealthCheck: 필드를 추가하거나 수정하여 검사를 사용 설정합니다.
  4. enable 필드를 true로 설정합니다.

다음은 YAML 파일의 구성 예시입니다.

spec:
  compute:
    virtualMachineType: n2-standard-2-gdc
  guestEnvironment:
    guestHealthCheck:
      enable: true

확인 사항 확인

VM을 구성한 후 Status에서 가상 머신의 Condition를 검사하여 가용성 확인 상태를 확인할 수 있습니다.

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n NAMESPACE_NAME \
  get gvm -o yaml

출력에 다양한 검사의 상태가 표시됩니다. 예를 들어 guestHealthCheck이 사용 설정된 경우 gvm 상태 조건이 VMGuestHealth 신호로 채워집니다.

VM 고가용성 사용 중지

주석이 없으면 기본적으로 VM 고가용성이 사용 설정됩니다. 주석을 추가하여 특정 VM의 HA를 명시적으로 사용 중지할 수 있습니다. VM HA를 사용 중지하는 주석을 추가합니다.

  1. VM의 구성 파일을 엽니다.
  2. VM의 메타데이터에 highavailability.virtualmachine.gdc.goog/enable: false 주석을 추가하여 고가용성을 사용 중지합니다.

다음은 YAML 파일의 주석 예시입니다.

metadata:
  annotations:
    highavailability.virtualmachine.gdc.goog/enable: false

노드 장애 완화

자동 해결 작업은 VM 장애를 해결하고 HA를 유지합니다. 기본 인프라가 더 이상 실행 중인 VM을 지원할 수 없는 경우 시스템은 비정상 노드를 차단하고 VM을 정상 노드로 다시 예약하려고 시도합니다. 다음 시나리오에서 이 노드 수준 완화가 트리거될 수 있습니다.

  • API 서버에서 노드 파티션: VM을 호스팅하는 베어메탈 노드가 다음과 같은 조건으로 인해 관리 API 서버에서 파티션됩니다.

    • API 서버와 노드 간 네트워크 연결이 손실됩니다.
    • 노드의 kubelet 에이전트가 다운되었습니다.
    • 노드에서 전원 장애가 관찰됩니다.
  • 사용자 클러스터 VM 파티션: 사용자 클러스터 작업자 VM이 클러스터의 관리 API 서버에서 파티셔닝됩니다.