사용자 클러스터 만들기

이 문서에서는 VMware용 Anthos 클러스터(GKE On-Prem)의 사용자 클러스터를 만드는 방법을 설명합니다. 사용자 클러스터는 워크로드를 실행할 수 있는 위치입니다. 각 사용자 클러스터는 관리자 클러스터와 연결됩니다.

관리자 클러스터 및 사용자 클러스터에 대한 상세 설명은 설치 개요를 참조하세요.

절차 개요

사용자 클러스터를 만드는 기본 단계는 다음과 같습니다.

  1. 관리자 워크스테이션에 연결
    관리자 워크스테이션은 사용자 클러스터를 만드는 데 필요한 도구가 있는 VM입니다.
  2. 구성 파일 작성
    사용자 클러스터 구성 파일, 사용자 인증 정보 구성 파일, IP 블록 파일을 완료하여 새 클러스터의 세부정보를 지정합니다.
  3. (선택사항) Seesaw 부하 분산기 만들기
    Seesaw loadbalancer를 사용하는 경우 gkectl create loadbalancer를 실행합니다.
  4. 사용자 클러스터 만들기
    gkectl create cluster를 실행하여 구성 파일에 지정된 대로 클러스터를 만듭니다.
  5. 사용자 클러스터 실행 여부 확인
    kubectl을 사용하여 클러스터 노드를 확인합니다.

이 절차를 마치면 실행 중인 사용자 클러스터가 준비되며 여기에 워크로드를 배포할 수 있습니다.

시작하기 전에

  • 관리자 워크스테이션관리자 클러스터를 만들어 두어야 합니다.

  • IP 주소 계획 문서를 검토합니다. 사용 가능한 IP 주소가 충분한지 확인하고 클러스터 노드의 IP 주소 사용 방법(DHCP 또는 고정)에 대한 결정을 다시 확인합니다. 고정 IP 주소를 사용하려면 선택한 주소가 포함된 IP 블록 파일을 입력해야 합니다.

  • 부하 분산 개요를 검토하고 사용하려는 부하 분산기 종류에 대한 결정을 다시 확인합니다. 특정 부하 분산기의 경우 사용자 클러스터를 만들기 전에 부하 분산기를 설정해야 합니다.

  • vcenter 섹션을 확인합니다. 관리자 클러스터와 사용자 클러스터에 별도의 vSphere 클러스터를 사용할지, 별도의 데이터 센터를 사용할지 여부를 생각합니다. 별도의 vSphere 클러스터가 있는 옵션은 1.12.0 미리보기와 1.12.1 GA입니다.

  • nodePools 섹션을 확인합니다. 필요한 노드 풀 수와 각 풀에서 실행할 운영체제를 생각합니다.

1. 관리자 워크스테이션에 연결

관리자 워크스테이션으로 SSH 연결 가져오기

gkeadm이 관리자 워크스테이션에서 구성요소 액세스 서비스 계정을 활성화한 바 있습니다.

홈 디렉터리의 관리자 워크스테이션에서 이 주제의 나머지 단계를 모두 수행하세요.

2. 구성 파일 작성

gkeadm이 관리자 워크스테이션을 만들 때 user-cluster.yaml이라는 구성 파일을 생성했습니다. 이 구성 파일은 사용자 클러스터를 만들기 위한 것입니다.

사용자 클러스터 구성 파일 문서를 살펴보고 구성 파일을 숙지합니다. 다음 단계를 완료할 때 참조되므로 이 문서를 개별 탭 또는 창으로 열어 두는 것이 좋을 수 있습니다.

name

name 필드를 사용자 클러스터용으로 선택한 이름으로 설정합니다.

gkeOnPremVersion

이 필드는 이미 채워져 있습니다. VMware용 Anthos 클러스터의 버전을 지정합니다. 예를 들면 1.11.0-gke.543입니다.

vCenter

관리자 클러스터 구성 파일vCenter 섹션에 설정한 값은 전역입니다. 즉, 관리자 클러스터 및 연결된 사용자 클러스터에 적용됩니다.

사용자 클러스터를 만들 때마다 전역 vCenter 값 중 일부를 재정의할 수 있습니다.

전역 vCenter 값을 재정의하려면 사용자 클러스터 구성 파일의 vCenter 섹션에 있는 관련 필드를 입력합니다.

특히 관리자 클러스터와 사용자 클러스터에 별도의 vSphere 클러스터를 사용하고 관리자 클러스터와 사용자 클러스터에 별도의 데이터 센터를 사용할 수 있습니다.

데이터 센터 1개와 vSphere 클러스터 1개 사용

기본 옵션은 관리자 클러스터와 사용자 클러스터 모두에 데이터 센터 하나와 vSphere 클러스터 하나를 사용하는 것입니다. 관리자 클러스터 구성 파일의 값은 사용자 클러스터에도 사용됩니다. 사용자 클러스터 구성 파일에서 vCenter 값을 설정하지 마세요.

별도의 vSphere 클러스터에 사용자 클러스터 만들기

이 기능은 버전 1.12.0 미리보기로 제공되며 1.12.1 GA입니다.

자체 vSphere 클러스터에 있는 사용자 클러스터를 만들려면 사용자 클러스터 구성 파일에서 vCenter.cluster 값을 지정합니다.

관리자 클러스터와 사용자 클러스터가 별도의 vSphere 클러스터에 있으면 같은 데이터 센터나 다른 데이터 센터에 있을 수 있습니다.

별도의 데이터 센터로 사용자 클러스터 만들기

사용자 클러스터와 관리자 클러스터는 서로 다른 데이터 센터에 있을 수 있습니다. 이 경우 두 클러스터도 별도의 vSphere 클러스터에 있습니다.

사용자 클러스터 구성 파일에 vCenter.datacenter를 지정한 경우 vCenter.datastorevCenter.networkName도 지정해야 하며 vCenter.cluster 또는 vCenter.resourcePool을 지정해야 합니다.

관리자 클러스터와 사용자 클러스터에 서로 다른 데이터 센터를 사용하려면 관리자 클러스터 제어 영역과 사용자 클러스터 제어 영역에 격리된 데이터 스토어 장애 도메인이 있도록 관리자 클러스터 데이터 센터의 사용자 클러스터 제어 영역마다 별도의 데이터 스토어를 만드는 것이 좋습니다. 사용자 클러스터 제어 영역 노드에 관리자 클러스터 Datastore를 사용할 수 있지만 이렇게 하면 사용자 클러스터 제어 영역 노드와 관리자 클러스터가 동일한 Datastore 장애 도메인에 배치됩니다.

자체 데이터 센터의 사용자 클러스터에 대한 다른 vCenter 계정

사용자 클러스터는 관리자 클러스터와는 다른 vCenter 계정(다른 vCenter.credentials 사용)을 사용할 수 있습니다. 관리자 클러스터의 vCenter 계정에는 관리자 클러스터 데이터 센터에 대한 액세스 권한이 필요하지만 사용자 클러스터의 vCenter 계정에는 사용자 클러스터 데이터 센터에 대한 액세스 권한만 필요합니다.

network

클러스터 노드가 IP 주소를 가져오는 방법을 결정합니다. 옵션은 다음과 같습니다.

  • 미리 설정한 DHCP 서버에서 network.ipMode.type"dhcp"로 설정합니다.

  • 제공한 고정 IP 주소 목록에서 가져옵니다. network.ipMode.type"static"으로 설정하고 고정 IP 주소를 제공하는 IP 블록 파일을 만듭니다. IP 블록 파일의 예시는 작성된 구성 파일 예시를 참조하세요.

네트워크 섹션의 나머지 필드를 필요에 따라 채워넣습니다.

  • 사용자 클러스터 노드에 고정 IP 주소를 사용하려면 network.ipMode.ipBlockFilePath 필드 및 network.hostconfig 섹션이 필요합니다. network.hostconfig 섹션에는 클러스터 노드에서 사용하는 NTP 서버, DNS 서버, DNS 검색 도메인에 대한 정보가 포함되어 있습니다.

    Seesaw 부하 분산기를 사용하는 경우 클러스터 노드에 DHCP를 사용하더라도 network.hostconfig 섹션이 필요합니다.

  • network.podCIDRnetwork.serviceCIDR에는 미리 입력된 값이 있으며, 네트워크에서 이미 사용 중인 주소와 충돌하지 않는 한 그대로 유지할 수 있습니다. Kubernetes는 이러한 범위를 사용하여 클러스터의 포드 및 서비스에 IP 주소를 할당합니다.

DHCP 서버를 사용하거나 고정 IP 주소 목록을 지정하는지에 관계없이 사용자 클러스터에 사용할 수 있도록 충분한 IP 주소가 필요합니다. 여기에는 사용자 클러스터의 노드와 사용자 클러스터의 제어 영역을 실행하는 관리자 클러스터의 노드가 포함됩니다. 필요한 IP 주소 수에 대한 설명은 IP 주소 계획을 참조하세요.

별도의 network.vCenter.networkName 값이 있는 사용자 클러스터의 방화벽 규칙

해당 구성 파일에서 관리자 클러스터와 사용자 클러스터는 서로 다른 VLAN과 데이터 센터를 나타내는 별도의 network.vCenter.networkName 값을 사용할 수 있습니다. 하지만 다음 VLAN 교차 통신을 허용해야 합니다.

  • 사용자 노드가 사용자 클러스터 제어 영역 VIP 주소의 포트 443 및 8132에 액세스하고 여기에서 반환 패킷을 가져올 수 있습니다.

loadBalancer

사용자 클러스터의 Kubernetes API 서버에 대해 VIP를 별도로 설정합니다. 사용자 클러스터의 인그레스 서비스에 대해 다른 VIP를 설정합니다. VIP를 loadBalancer.vips.controlPlaneVIPloadBalancer.vips.ingressVIP의 값으로 제공합니다.

자세한 내용은 사용자 클러스터 서브넷의 VIP관리자 클러스터 서브넷의 VIP를 참조하세요.

사용할 부하 분산의 유형을 결정합니다. 옵션은 다음과 같습니다.

부하 분산 옵션에 대한 상세 설명은 부하 분산 개요를 참조하세요.

enableDataplaneV2

사용자 클러스터에 Dataplane V2 사용 여부를 결정하고 이에 따라 enableDataplaneV2를 설정합니다.

enableWindowsDataplaneV2

Windows 노드 풀을 사용하려면 Windows Dataplane V2를 사용 설정할지 결정하고 이에 따라 enableWindowsDataplaneV2를 설정합니다.

advancedNetworking

이그레스 NAT 게이트웨이를 만들려면 advancedNetworkingtrue로 설정합니다.

multipleNetworkInterfaces

포드에 여러 네트워크 인터페이스를 구성할지 여부를 결정하고 이에 따라 multipleNetworkInterfaces를 설정합니다.

storage

vSphere CSI 구성요소 배포를 중지하려면 storage.vSphereCSIdisabledtrue로 설정하세요.

masterNode

사용자 클러스터의 제어 영역은 관리자 클러스터의 노드에서 실행됩니다.

masterNode 섹션에서 사용자 클러스터에 원하는 제어 영역 노드 수를 지정할 수 있습니다. 제어 영역 노드의 데이터 스토어와 노드의 자동 크기 조절 사용 설정 여부를 지정할 수도 있습니다.

nodePools

노드 풀은 구성이 모두 동일한 클러스터의 노드 그룹입니다. 예를 들어 풀 하나의 노드는 Windows를 실행하고 다른 풀의 노드는 Linux를 실행할 수 있습니다.

nodePools 섹션을 입력하여 노드 풀을 최소 하나 이상 지정해야 합니다.

자세한 내용은 노드 풀노드 풀 만들기 및 관리를 참조하세요.

antiAffinityGroups

antiAffinityGroups.enabledtrue 또는 false로 설정합니다.

이 필드는 VMware용 Anthos 클러스터에서 사용자 클러스터 노드에 대해 Distributed Resource Scheduler(DRS) 안티어피니티 규칙을 만들어 데이터 센터의 3개 이상 물리적 호스트에 분산되는지 여부를 지정합니다.

stackdriver

클러스터에 Cloud Logging 및 Cloud Monitoring을 사용 설정하려면 stackdriver 섹션을 입력합니다.

gkeConnect

사용자 클러스터를 Google Cloud Fleet에 등록해야 합니다.

gkeConnect 섹션을 입력하여 Fleet 호스트 프로젝트 및 연결된 서비스 계정을 지정합니다.

usageMetering

클러스터에 사용량 측정을 사용 설정하려면 usageMetering 섹션을 입력합니다.

cloudAuditLogging

클러스터의 Kubernetes API 서버의 감사 로그를 Cloud 감사 로그와 통합하려면 cloudAuditLogging 섹션을 입력합니다.

작성된 구성 파일 예시

다음은 채워진 IP 블록 파일 및 채워진 사용자 클러스터 구성 파일의 예시입니다. 이 구성에 따라 전부는 아니더라도 사용 가능한 기능 중 일부가 사용 설정됩니다.

vc-01-ipblock-user.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.21
      hostname: user-host1
    - ip: 172.16.20.22
      hostname: user-host2
    - ip: 172.16.20.23
      hostname: user-host3
    - ip: 172.16.20.24
      hostname: user-host4
    - ip: 172.16.20.25
      hostname: user-host5
    - ip: 172.16.20.26
      hostname: user-host6

vc-01-user-cluster.yaml

apiVersion: v1
kind: UserCluster
name: "gke-user-01"
gkeOnPremVersion: 1.11.0-gke.543
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: dhcp
    ipBlockFilePath: "vc-01-ipblock-user.yaml"
  serviceCIDR: 10.96.0.0/20
  podCIDR: 192.168.0.0/16
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.32"
    ingressVIP: "172.16.21.30"
  kind: "MetalLB"
   metalLB:
    addressPools:
    - name: "gke-address-pool-01"
      addresses:
      - "172.16.21.30 - 172.16.21.39"
enableDataplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 1
nodePools:
- name: "gke-node-pool-01"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  osImageType: "ubuntu_containerd"
antiAffinityGroups:
  enabled: true
gkeConnect:
  projectID: "my-project-123"
  registerServiceAccountKeyPath: "connect-register-sa-2203040617.json"
stackdriver:
  projectID: "my-project-123"
  clusterLocation: "us-central1"
  enableVPC: false
  serviceAccountKeyPath: "log-mon-sa-2203040617.json"
autoRepair:
  enabled: true

구성 파일 유효성 검사

사용자 클러스터 구성 파일을 입력한 후 gkectl check-config를 실행하여 파일이 유효한지 확인합니다.

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

다음을 바꿉니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일 경로입니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

명령어가 실패 메시지를 반환하면 문제를 해결하고 파일을 다시 검사합니다.

시간이 오래 걸리는 검사를 건너뛰려면 --fast 플래그를 전달합니다. 개별 검사를 건너뛰려면 --skip-validation-xxx 플래그를 사용합니다. check-config 명령어에 대해 자세히 알아보려면 실행 전 검사 실행을 참조하세요.

3. (선택사항) 사용자 클러스터의 Seesaw 부하 분산기 만들기

번들 Seesaw 부하 분산기를 사용하기로 선택한 경우 이 섹션의 단계를 수행합니다. 그렇지 않으면 이 섹션을 건너뛰세요.

Seesaw 부하 분산기의 VM을 만들고 구성합니다.

gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

4. 사용자 클러스터 만들기

사용자 클러스터를 만듭니다.

gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

사용자 클러스터 kubeconfig 파일 찾기

gkectl create cluster 명령어는 현재 디렉터리에 USER_CLUSTER_NAME-kubeconfig라는 kubeconfig 파일을 만듭니다. 나중에 사용자 클러스터와 상호 작용하려면 이 kubeconfig 파일이 필요합니다.

원하는 경우 kubeconfig 파일의 이름과 위치를 변경할 수 있습니다.

5. 사용자 클러스터 실행 여부 확인

사용자 클러스터 실행 여부 확인:

kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

USER_CLUSTER_KUBECONFIG를 사용자 클러스터 kubeconfig 파일 경로로 바꿉니다.

출력에 사용자 클러스터 노드가 표시됩니다. 예를 들면 다음과 같습니다.

my-user-cluster-node-pool-69-d46d77885-7b7tx   Ready ...
my-user-cluster-node-pool-69-d46d77885-lsvzk   Ready ...
my-user-cluster-node-pool-69-d46d77885-sswjk   Ready ...

문제 해결

클러스터 생성 및 업그레이드 문제 해결을 참조하세요.

다음 단계