토폴로지 도메인 설정

이 페이지에서는 토폴로지 도메인에 대한 개요와 설정 가이드라인을 제공합니다.

토폴로지 도메인을 설정하려면 고급 클러스터를 사용 설정해야 합니다. 고급 클러스터 미리보기에는 다음과 같은 제한사항이 있습니다.

  • 새 1.31 클러스터의 경우 클러스터 생성 시점에만 고급 클러스터를 사용 설정할 수 있습니다.
  • 고급 클러스터를 사용 설정한 후에는 클러스터를 1.32로 업그레이드할 수 없습니다. 테스트 환경에서만 고급 클러스터를 사용 설정합니다.

이 페이지는 회사 전략에 따라 IT 솔루션과 시스템 아키텍처를 정의하고, 사용자 권한과 관련된 정책을 만들고 관리하는 관리자 및 설계자를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 작업에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 작업을 참고하세요.

개요

토폴로지 도메인은 캠퍼스나 데이터 센터와 같이 동일한 논리적 또는 물리적 그룹의 일부로 간주되는 클러스터 노드 그룹입니다. 토폴로지 도메인은 상관된 장애가 발생할 가능성이 있는 기본 하드웨어 또는 소프트웨어와 일치해야 합니다. 예를 들면 다음과 같습니다.

  • 서로 다른 vCenter Server와 같은 소프트웨어 오류
  • 랙, 전원, 건물 등 하드웨어 장애

VMware용 Google Distributed Cloud (소프트웨어 전용)에서는 클러스터를 만들 때 토폴로지 도메인을 설정하는 과정에서 토폴로지 라벨을 정의합니다. 클러스터를 만든 후 토폴로지 라벨이 토폴로지 도메인의 노드 라벨에 채워집니다.

미리보기 중에 토폴로지 도메인을 사용하려면 다음 옵션 중 하나를 선택하세요.

  • Kubernetes 클러스터 수준 기본 제약 조건인 "topology.kubernetes.io/zone"를 토폴로지 라벨의 키로 사용합니다. 자세한 내용은 기본 내장 제약 조건을 참고하세요.

  • 배포, StatefulSet 또는 ReplicaSet에서 토폴로지 라벨 키에 따라 PodTemplate를 구성합니다. 포드 사양에서 토폴로지 라벨의 키를 topologySpreadConstraints.topologyKey 필드의 값으로 사용합니다. 이 키를 사용하면 Kubernetes 스케줄러가 토폴로지 도메인에 걸쳐 포드를 분산하여 가용성을 높이고 장애 발생 시 단일 영역에 과도하게 집중되는 것을 방지할 수 있습니다. 포드 사양에서 topologySpreadConstraints를 구성하는 방법에 관한 자세한 내용은 Kubernetes 문서의 포드 토폴로지 분산 제약조건을 참고하세요.

토폴로지 도메인 라벨 예시

사용자 클러스터를 만들 때 다음 세 가지 토폴로지 도메인을 만든다고 가정해 보겠습니다.

...
topologyDomains:
- name: "topology-domain-1"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-1"
...
...
topologyDomains:
- name: "topology-domain-2"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-2"
...
...
topologyDomains:
- name: "topology-domain-3"
  topologyLabels:
    "topology.examplepetstore.com/zone": "zone-3"
...

클러스터가 생성된 후 Pod 사양을 업데이트합니다. 예를 들면 다음과 같습니다.

...
topologySpreadConstraints:
  topologyKey: "topology.examplepetstore.com/zone"
...

대략적으로 Kubernetes 스케줄러는 topology.examplepetstore.com/zone를 사용하여 클러스터 노드를 zone-1, zone-2, zone-3과 같은 여러 그룹으로 구분합니다. 그러면 스케줄러가 이 세 노드 그룹에 포드를 분산시킵니다.

토폴로지 도메인 설정 가이드라인

Kubernetes 스케줄러가 모든 클러스터 리소스를 효과적으로 사용하도록 하려면 다음 가이드라인을 따르는 것이 좋습니다.

  • 토폴로지 도메인은 균형을 맞춰야 합니다. 각 토폴로지 도메인에 거의 동일한 양의 CPU 및 RAM 용량을 제공해야 합니다.
  • 토폴로지 도메인을 2개 이상, 가급적 3개 이상 제공합니다.
  • 두 개 이상의 토폴로지 키로 분산하지 마세요.
  • 노드는 각 토폴로지 도메인에서 크기가 비슷해야 합니다.
  • 클러스터 내 워크로드 분리에 taint 및 toleration을 사용하는 경우 각 노드 그룹은 이전 요구사항을 충족해야 합니다.

이러한 가이드라인이 충족되지 않으면 스케줄러는 클러스터의 전체 용량을 사용하려고 시도하지만 포드를 예약하는 데 시간이 더 오래 걸릴 수 있으며 일부 포드에서는 예상되는 확산 동작이 발생하지 않을 수 있습니다.

다음 단계