토폴로지 도메인 설정

이 페이지에서는 토폴로지 도메인과 토폴로지 도메인 설정 가이드라인을 간략히 설명합니다.

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

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

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

개요

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

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

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

토폴로지 도메인을 사용하려면 다음 옵션을 사용하세요.

  • 버전 1.32 이상: 클러스터 수준 기본 토폴로지 분산 제약 조건을 구성합니다. 자세한 내용은 schedulerConfiguration을 참조하세요.

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

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

토폴로지 도메인 라벨 예시

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

...
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 및 톨러레이션을 사용하는 경우 각 노드 그룹은 이전 요구사항을 충족해야 합니다.

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

다음 단계