최소 인프라 설정

이 문서에서는 VMware용 Anthos 클러스터(GKE On-Prem)의 소규모 개념 증명 설치를 위해 최소 vSphere 및 Google Cloud 환경을 설정하는 방법을 보여줍니다.

설치에는 관리자 워크스테이션, 관리자 클러스터, 사용자 클러스터가 포함됩니다.

시작하기 전에

CPU, RAM, 스토리지 요구사항

이 최소 설치에는 ESXi를 실행하는 단일 물리적 호스트를 사용하면 됩니다.

다음은 ESXi 호스트에 대한 최소 리소스 요구사항입니다.

  • 하이퍼스레딩이 사용 설정된 2.7Ghz 물리적 CPU 8개
  • 80GiB(기비바이트) RAM

최소 스토리지 요구사항은 470GiB입니다.

호스트 및 Datastore 예시

다음은 요구사항을 충족하는 ESXi 호스트vSphere Datastore의 예시입니다.

  • ESXi 호스트 구성:

    • 제조업체: Dell Inc.
    • 물리적 CPU: 2.7GHz CPU 8개
    • 프로세서 유형: Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz
    • 프로세서 소켓: 2
    • ESXi 버전: 6.7U3
    • vCenter Server 버전: 6.7U3
    • 하이퍼스레딩: 사용 설정됨
  • Datastore 구성:

    • 유형: VMFS 6.82
    • 드라이브 유형: SSD
    • 공급업체: DELL
    • 드라이브 유형: 논리
    • RAID 수준: RAID1

vSphere 객체

vSphere 환경에서 다음 객체를 설정하세요.

부하 분산

이 최소 설치의 클러스터에는 MetalLB 부하 분산기가 사용됩니다. 이 부하 분산기는 클러스터 노드에서 실행되므로 부하 분산에 추가 VM이 필요하지 않습니다.

IP 주소 계획

나중에 기본 클러스터를 만들 때 클러스터 노드에 고정 IP 주소를 지정하게 됩니다.

이 소규모 설치의 경우 관리자 워크스테이션, 관리자 클러스터 노드, 사용자 클러스터 노드를 vSphere 네트워크의 동일한 VLAN에 배치하는 것이 좋습니다. 예를 들어 172.16.20.0/24 범위의 모든 IP 주소가 특정 VLAN에 라우팅된다고 가정해보세요. 또한 네트워크 관리자에 의해 VM 및 가상 IP 주소(VIP)에 172.16.20.49 - 172.16.20.72를 사용할 수 있다고 가정해보세요.

다음 다이어그램은 관리자 워크스테이션, 관리자 클러스터, 사용자 클러스터가 있는 VLAN을 보여줍니다. VIP는 클러스터의 특정 노드와 연결된 것으로 표시되지 않습니다. 이는 MetalLB 부하 분산기가 개별 서비스의 VIP를 공지하는 노드를 선택할 수 있기 때문입니다. 예를 들어 사용자 클러스터에서는 하나의 워커 노드가 172.16.20.63을 공지하고 다른 워커 노드가 172.16.20.64를 공지할 수 있습니다.

관리자 클러스터 및 사용자 클러스터의에 대한 IP 주소입니다.
관리자 클러스터 및 사용자 클러스터의 IP 주소(확대하려면 클릭)

IP 주소 예시: 관리자 워크스테이션

이 예시에서는 관리자 워크스테이션에서 네트워크 관리자가 지정한 범위(172.16.20.49)의 첫 번째 주소를 사용합니다.

IP 주소 예시: 클러스터 노드

다음 표에서는 클러스터 노드에 IP 주소를 사용할 수 있는 방법에 대한 예시를 보여줍니다. 이 표에서는 admin-vm-5 및 user-vm-4의 두 가지 추가 노드를 보여줍니다. 추가 노드는 클러스터 업그레이드, 업데이트, 자동 복구 중에 필요합니다. 자세한 내용은 노드 IP 주소 관리를 참조하세요.

VM 호스트 이름 설명 IP 주소
admin-vm-1 관리자 클러스터의 제어 영역 노드 172.16.20.50
admin-vm-2 관리자 클러스터 부가기능 노드 172.16.20.51
admin-vm-3 관리자 클러스터 부가기능 노드 172.16.20.52
admin-vm-4 사용자 클러스터의 제어 영역 노드
이 노드는 관리자 클러스터에 있습니다.
172.16.20.53
admin-vm-5 172.16.20.54
user-vm-1 사용자 클러스터 워커 노드 172.16.20.55
user-vm-2 사용자 클러스터 워커 노드 172.16.20.56
user-vm-3 사용자 클러스터 워커 노드 172.16.20.57
user-vm-4 172.16.20.58

IP 주소 예시: 관리자 클러스터의 VIP

다음 테이블에서는 관리자 클러스터의 VIP를 지정하는 방법의 예시를 보여줍니다.

VIP 설명 IP 주소
관리자 클러스터의 Kubernetes API 서버의 VIP 관리자 클러스터에 대해 부하 분산기에 구성됨 172.16.20.59
관리자 클러스터 부가기능 VIP 관리자 클러스터에 대해 부하 분산기에 구성됨 172.16.20.60

IP 주소 예시: 사용자 클러스터의 VIP

다음 테이블에서는 사용자 클러스터에 VIP를 지정하는 방법의 예시를 보여줍니다.

사용자 클러스터의 Kubernetes API 서버에 대한 VIP는 관리자 클러스터의 부하 분산기에 구성됩니다. 이는 사용자 클러스터의 Kubernetes API 서버가 관리자 클러스터의 노드에서 실행되기 때문입니다. 클러스터 구성 파일에서 Kubernetes API 서버의 VIP를 지정하는 필드를 controlPlaneVIP라고 합니다.

VIP 설명 IP 주소
사용자 클러스터의 Kubernetes API 서버의 VIP 관리자 클러스터에 대해 부하 분산기에 구성됨 172.16.20.61
인그레스 VIP 사용자 클러스터에 대해 부하 분산기에 구성됨 172.16.20.62
서비스 VIP LoadBalancer 유형의 서비스에 대한 10개 주소입니다.
필요에 따라 사용자 클러스터의 부하 분산기에 구성됩니다.
이 범위에는 인그레스 VIP가 포함됩니다.
MetalLB 부하 분산기의 요구사항입니다.
172.16.20.62 - 172.16.20.71

포드 및 서비스용 IP 주소

클러스터를 만들기 전에 포드 IP 주소에 사용할 CIDR 범위와 Kubernetes 서비스의 ClusterIP 주소에 사용할 다른 CIDR 범위를 지정해야 합니다.

포드 및 서비스에 사용할 CIDR 범위를 결정합니다. 특별한 이유가 없는 한 다음 기본 범위를 사용하면 됩니다.

목적기본 CIDR 범위
관리자 클러스터 포드192.168.0.0/16
사용자 클러스터 포드192.168.0.0/16
관리자 클러스터 서비스10.96.232.0/24
사용자 클러스터 서비스10.96.0.0/20

기본값은 다음 사항을 나타냅니다.

  • 포드 CIDR 범위는 여러 클러스터에서 동일할 수 있습니다.

  • 클러스터의 서비스 CIDR 범위가 다른 클러스터의 서비스 CIDR 범위와 겹치지 않습니다.

  • 일반적으로 서비스보다 더 많은 포드가 필요하므로 특정 클러스터의 경우 서비스 CIDR 범위보다 큰 포드 CIDR 범위가 필요할 수 있습니다. 예를 들어 사용자 클러스터의 기본 포드 범위에는 2^(32-16) = 2^16개의 주소가 있지만, 사용자 클러스터의 기본 서비스 범위에는 주소가 2^(32-20) = 2^12개만 있습니다.

겹침 방지

네트워크에서 연결할 수 있는 IP 주소와 겹치지 않도록 기본이 아닌 CIDR 범위를 사용해야 할 수도 있습니다. 서비스 범위와 포드 범위는 클러스터 내부에서 연결하려는 클러스터 외부의 주소와 겹치지 않아야 합니다.

예를 들어 서비스 범위가 10.96.232.0/24이고 포드 범위가 192.168.0.0/16이라고 가정해 보겠습니다. 포드에서 이러한 범위 중 하나의 주소로 전송되는 트래픽은 클러스터 내 트래픽으로 처리되며 클러스터 외부의 대상에 도달하지 않습니다.

특히 서비스 범위와 포드 범위는 다음과 겹치지 않아야 합니다.

  • 모든 클러스터에 있는 노드의 IP 주소

  • 부하 분산기 머신에서 사용하는 IP 주소

  • 제어 영역 노드 및 부하 분산기에서 사용하는 VIP

  • vCenter 서버, DNS 서버, NTP 서버의 IP 주소

포드 및 서비스 범위에 RFC 1918로 정의된 비공개 IP 주소 범위를 사용하는 것이 좋습니다.

다음은 RFC 1918 주소를 사용을 권장하는 이유입니다. 포드 또는 서비스 범위에 외부 IP 주소가 포함되어 있다고 가정해보세요. 포드에서 이러한 외부 주소 중 하나로 전송되는 모든 트래픽은 클러스터 내 트래픽으로 취급되며 외부 대상에 도달하지 않습니다.

DNS 서버 및 기본 게이트웨이

관리자 및 사용자 클러스터를 만들기 전에 다음의 IP 주소를 알아야 합니다.

  • 관리자 워크스테이션 및 클러스터 노드에 사용할 수 있는 DNS 서버

  • 관리자 워크스테이션 및 클러스터 노드가 있는 서브넷에 대한 기본 게이트웨이의 IP 주소입니다. 예를 들어 관리자 워크스테이션, 관리자 클러스터 노드, 사용자 클러스터 노드가 모두 172.16.20.0/24 서브넷에 있다고 가정해보세요. 서브넷의 기본 게이트웨이 주소는 172.16.20.1일 수 있습니다.

방화벽 및 프록시 구성

프록시 및 방화벽 규칙에 따라 방화벽과 프록시를 구성하세요.

Google Cloud 리소스 설정

기존 Google Cloud 프로젝트를 선택하거나 새 프로젝트를 만듭니다. Cloud 프로젝트 ID를 기록해 둡니다.

클라우드 프로젝트에서 VMware용 Anthos 클러스터 구성요소에 액세스하기 위한 서비스 계정을 만듭니다. 이를 구성요소 액세스 서비스 계정이라고 부릅니다.

gcloud iam service-accounts create component-access-sa \
    --display-name "Component Access Service Account" \
    --project PROJECT_ID

PROJECT_ID를 Cloud 프로젝트의 ID로 바꿉니다.

구성요소 액세스 서비스 계정의 JSON 키를 만듭니다.

gcloud iam service-accounts keys create component-access-key.json \
   --iam-account SERVICE_ACCOUNT_EMAIL

SERVICE_ACCOUNT_EMAIL을 구성요소 액세스 서비스 계정의 이메일 주소로 바꿉니다.

구성요소 액세스 서비스 계정에 IAM 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"

구성요소 액세스 서비스 계정 및 IAM 역할 부여에 대한 자세한 내용은 서비스 계정 및 키를 참조하세요.

Google API 사용 설정

클라우드 프로젝트에서 다음 Google API를 사용 설정합니다.

gcloud services enable --project PROJECT_ID \
    anthos.googleapis.com \
    anthosgke.googleapis.com \
    anthosaudit.googleapis.com \
    cloudresourcemanager.googleapis.com \
    container.googleapis.com \
    gkeconnect.googleapis.com \
    gkehub.googleapis.com \
    serviceusage.googleapis.com \
    stackdriver.googleapis.com \
    opsconfigmonitoring.googleapis.com \
    monitoring.googleapis.com \
    logging.googleapis.com \
    iam.googleapis.com \
    storage.googleapis.com
 

다음 단계

기본 클러스터 만들기