기본 클러스터 만들기

이 페이지는 VMware용 GKE의 소규모 개념 증명 설치를 안내하는 가이드의 2부입니다. 1부는 최소 인프라 설정에 관한 내용으로, IP 주소를 계획하고 배포에 필요한 vSphere 및 Google Cloud 인프라를 설정하는 방법을 설명합니다. 이 문서에서는 이전 섹션에서 수행한 설정 및 계획을 기반으로 하여 vSphere 환경에서 관리자 워크스테이션, 관리자 클러스터, 사용자 클러스터를 만드는 방법을 다룹니다. 그런 다음 사용자는 애플리케이션을 배포할 수 있습니다.

이 간편 설치의 인프라 설정과 마찬가지로 이 문서를 사용하여 설정한 클러스터가 실제 프로덕션 요구사항과 사용 사례에 적합하지 않을 수도 있습니다. 프로덕션 설치에 대한 상세 설명, 권장사항, 관련 지침은 설치 가이드를 참조하세요.

시작하기 전에

절차 개요

이 설정과 관련된 기본 단계는 다음과 같습니다.

  1. vCenter 사용자 이름 및 비밀번호,이전 섹션에서 준비한 IP 주소를 포함하여 VMware용 GKE를 구성하는 데 필요한 필요한 모든 정보가 있는지 확인합니다.
  2. 서비스 계정을 만드는 데 필요한 권한이 있는 계정으로 Google Cloud CLI에 로그인하세요.
  3. 설정을 완료하는 데 필요한 추가 서비스 계정을 포함하여 관리자 및 사용자 클러스터를 만드는 데 필요한 리소스와 도구로 관리자 워크스테이션을 만듭니다.
  4. 관리자 클러스터를 만들어 관리자 및 사용자 클러스터의 Kubernetes 제어 영역을 호스팅하고 사용자 클러스터를 관리 및 업데이트합니다.
  5. 실제 워크로드를 실행할 수 있는 사용자 클러스터를 만듭니다.

정보 수집

VMware용 GKE 구성 파일을 작성하기 전에 최소 인프라 설정에서 준비한 모든 필수 정보가 있는지 확인하세요. VMware용 GKE를 구성하고 이 설정을 완료하려면 다음 값이 모두 필요합니다.

vCenter 세부정보

IP 주소

다음을 포함하여 IP 주소 계획에서 선택한 모든 IP 주소가 있는지 확인합니다.

  • 관리자 워크스테이션용 IP 주소 1개
  • 클러스터 업그레이드 중 사용할 수 있는 추가 노드 2개의 주소를 포함하여 관리자 및 사용자 클러스터 노드에 대한 IP 주소 10개
  • 관리자 클러스터 Kubernetes API 서버의 가상 IP 주소(VIP)
  • 사용자 클러스터 Kubernetes API 서버의 VIP
  • 사용자 클러스터의 인그레스 VIP
  • 사용자 클러스터의 서비스 VIP 10개
  • 중복 방지에 설명된 대로 기본이 아닌 범위를 사용해야 하는 경우 사용자 클러스터 Pod 및 서비스의 CIDR 범위

또한 다음 항목도 필요합니다.

  • DNS 서버의 IP 주소
  • NTP 서버의 IP 주소
  • 관리자 워크스테이션 및 클러스터 노드가 있는 서브넷에 대한 기본 게이트웨이의 IP 주소입니다.

Google Cloud 세부정보

Google Cloud CLI에 로그인

VMware용 GKE를 설정하려면 권한이 다른 여러 서비스 계정이 필요합니다. 수동으로 구성요소 액세스 서비스 계정을 만들어야 하지만 gkeadm 명령줄 도구를 사용하면 관리자 워크스테이션을 만드는 동안 나머지 계정의 기본 버전을 만들고 구성할 수 있습니다. 하지만 이렇게 하려면 gkeadm이 현재 설정을 하는 시점에 gcloud CLI account 속성를 사용하므로 사용자는 서비스 계정을 만들고 구성하는 데 필요한 권한이 있는 계정으로 Google Cloud CLI에 로그인해야 합니다.

  1. gcloud CLI에 로그인합니다. 모든 Google 계정을 사용할 수 있지만 필수 권한이 있어야 합니다. 이 가이드의 이전 부분을 수행했다면 이미 구성요소 액세스 서비스 계정을 만드는 데 적절한 계정으로 로그인했을 것입니다.

    gcloud auth login
    
  2. gcloud CLI account 속성이 올바르게 설정되었는지 확인합니다.

    gcloud config list
    

    SDK account 속성 값이 출력에 표시됩니다. 예를 들면 다음과 같습니다.

    [core]
    account = my-name@google.com
    disable_usage_reporting = False
    Your active configuration is: [default]
    

관리자 워크스테이션 만들기

클러스터를 만들려면 먼저 관리자 워크스테이션을 설정하고 SSH에 연결해야 합니다. 관리자 워크스테이션은 vSphere 환경에서 GKE Enterprise 클러스터를 만드는 데 필요한 도구와 리소스가 포함된 독립형 VM입니다. 이 섹션의 단계에서는 64비트 Linux, Windows 10, Windows Server 2019, macOS 10.15 이상에서 사용할 수 있는 gkeadm 명령줄 도구를 사용합니다.

템플릿 생성

다음 명령어를 실행하여 템플릿 구성 파일을 생성합니다.

./gkeadm create config

이 명령어를 실행하면 현재 디렉터리에 다음 템플릿 구성 파일이 생성됩니다.

  • credential.yaml: vCenter 로그인 세부정보를 제공하는 데 사용됩니다.
  • admin-ws-config.yaml: 관리자 워크스테이션 구성 설정을 제공하는 데 사용됩니다.

사용자 인증 정보 파일 작성

credential.yaml에 vCenter 사용자 이름과 비밀번호를 입력합니다. 예를 들면 다음과 같습니다.

kind: CredentialFile
items:
- name: vCenter
  username: "my-account-name"
  password: "AadmpqGPqq!a"

관리자 워크스테이션 구성 파일 작성

수정할 admin-ws-config.yaml을 엽니다. 완료되면 이 파일에는 gkeadm이 기본 설치에 대한 관리자 워크스테이션을 만드는 데 필요한 모든 정보가 포함됩니다. 일부 필드는 이미 기본값 또는 생성된 값으로 채워져 있습니다. 이 간편 설치에서는 이 값을 변경하지 마세요.

앞에서 수집한 정보를 사용하여 다음과 같이 나머지 필드를 작성합니다. 필드 형식을 지정하는 방법을 잘 모르겠으면 아래의 전체 구성 파일 예시를 참조하거나 관리자 워크스테이션 구성 파일 참조를 확인하세요. 필드 값을 입력할 때 참조할 수 있도록 페이지를 개별 탭 또는 창으로 열어 두는 것이 좋습니다.

필드 또는 섹션 안내
gcp.componentAccessServiceAccountKeyPath 구성요소 액세스 서비스 계정에 대해 만든 JSON 키 파일의 경로입니다.
vCenter.credentials.address vCenter Server의 IP 주소 또는 호스트 이름입니다.
vCenter.datacenter vCenter 데이터 센터의 이름입니다.
vCenter.datastore vCenter Datastore의 이름입니다.
vCenter.cluster vCenter 클러스터의 이름입니다.
vCenter.network 관리자 워크스테이션을 만들려는 vCenter 네트워크의 이름입니다.
vCenter.resourcePool 이 필드를 "CLUSTER_NAME/Resources"로 설정하고 CLUSTER_NAME을 vSphere 클러스터의 이름으로 바꿉니다.
vCenter.caCertPath vCenter Server의 루트 CA 인증서 경로입니다.
proxyURL gkeadm을 실행하는 데 사용하는 머신에서 프록시 서버를 사용하여 인터넷에 액세스해야 하는 경우 이 필드를 프록시 서버의 URL로 설정합니다.
adminWorkstation.ipAllocationMode 이 필드를 "static"으로 설정합니다.
adminWorkstation.network.hostConfig.ip 관리자 워크스테이션에 대해 이전에 선택한 IP 주소입니다.
adminWorkstation.network.hostConfig.gateway 관리자 워크스테이션 및 클러스터 노드에 사용할 서브넷의 기본 게이트웨이 IP 주소입니다.
adminWorkstation.network.hostConfig.netmask 관리자 워크스테이션이 포함된 네트워크의 넷마스크입니다.
adminWorkstation.network.hostConfig.dns 관리자 워크스테이션에서 사용할 수 있는 DNS 서버의 IP 주소입니다.
adminWorkstation.proxyURL 네트워크가 프록시 서버로 보호되는 상태에서 관리자 워크스테이션과 클러스터가 모두 동일한 프록시 서버를 사용하도록 하려면 이 필드를 프록시 서버의 URL로 설정하세요.

관리자 워크스테이션 구성 파일 예시

다음은 작성된 관리자 워크스테이션 구성 파일의 예시입니다.

gcp:
  componentAccessServiceAccountKeyPath: "/usr/local/google/home/me/keys/component-access-key.json"
vCenter:
  credentials:
    address: "vc01.example"
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  datacenter: "vc01"
  datastore: "vc01-datastore-1"
  cluster: "vc01-workloads-1"
  network: "vc01-net-1"
  resourcePool: "vc01-workloads-1/Resources"
  caCertPath: "/usr/local/google/home/stevepe/certs/vc01-cert.pem"
proxyUrl: ""
adminWorkstation:
  name: gke-admin-ws-220304-014925
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/gke-admin-ws-220304-014925-data-disk.vmdk
  dataDiskMB: 512
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "172.16.20.49"
      gateway: "172.16.20.1"
      netmask: "255.255.255.0"
      dns:
      - "203.0.113.1"
  proxyUrl: ""
  ntpServer: ntp.ubuntu.com

관리자 워크스테이션 만들기

다음 명령어를 사용하여 관리자 워크스테이션을 만듭니다.

./gkeadm create admin-workstation --auto-create-service-accounts

다음 명령어를 실행하여 다음을 수행합니다.

  • 관리자 워크스테이션 만들기
  • 설치에 필요한 추가 서비스 계정을 자동으로 만들기
  • 관리자 및 사용자 클러스터에 대한 템플릿 구성 파일 만들기

출력은 관리자 워크스테이션 생성에 대한 자세한 정보를 제공하며 관리자 워크스테이션으로 SSH 연결을 가져오는 데 사용할 수 있는 명령어를 제공합니다.

...
Admin workstation is ready to use.
Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
********************************************************************

관리자 워크스테이션 만들기에 대한 자세한 내용은 관리자 워크스테이션 만들기를 참조하세요.

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

이전 출력에 표시된 명령어를 사용해서 관리자 워크스테이션에 SSH로 연결합니다. 예를 들면 다음과 같습니다.

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49

생성된 파일 보기

관리자 워크스테이션의 홈 디렉터리에 있는 파일을 나열합니다.

ls -1

출력에는 다음이 포함되어야 합니다.

  • admin-cluster.yaml: 관리자 클러스터를 만들기 위한 템플릿 구성 파일
  • user-cluster.yaml: 사용자 클러스터를 만들기 위한 템플릿 구성 파일
  • gkeadm에서 생성된 두 서비스 계정(연결-등록 서비스 계정 및 로깅-모니터링 서비스 계정)에 대한 JSON 키 파일. connect-register 서비스 계정에 대한 JSON 키 파일의 이름을 기록해 두세요. 나중에 클러스터를 만들 때 필요합니다.

예를 들면 다음과 같습니다.

admin-cluster.yaml
admin-ws-config.yaml
sa-key.json
connect-register-sa-2203040617.json
credential.yaml
log-mon-sa-2203040617.json
logs
vc01-cert.pem
user-cluster.yaml

관리자 클러스터 만들기

이제 vCenter 및 기타 세부정보로 구성된 관리자 워크스테이션이 있으므로 이를 사용하여 vSphere 환경에 관리자 클러스터를 만들 수 있습니다. 이 단계를 시작하기 전에 위에 설명된 대로 관리자 워크스테이션에 SSH로 연결되어 있는지 확인하세요. 다음 명령어는 모두 관리자 워크스테이션에서 실행됩니다.

관리자 클러스터를 위한 고정 IP 주소 지정

관리자 클러스터 노드에 이전에 계획한 고정 IP 주소를 지정하려면 admin-cluster-ipblock.yaml이라는 IP 블록 파일을 만드세요.

관리자 클러스터에 있는 다음 노드에 5개의 IP 주소가 필요합니다.

  • 관리자 클러스터 제어 영역 및 부가기능을 실행하기 위한 노드 3개

  • 업그레이드 중에 임시로 사용되는 추가 노드

  • 나중에 만들 사용자 클러스터의 제어 영역을 실행하는 노드 1개

다음은 5개 노드의 주소가 포함된 IP 블록 파일 예시입니다.

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.20.1
    ips:
    - ip: 172.16.20.50
      hostname: admin-vm-1
    - ip: 172.16.20.51
      hostname: admin-vm-2
    - ip: 172.16.20.52
      hostname: admin-vm-3
    - ip: 172.16.20.53
      hostname: admin-vm-4
    - ip: 172.16.20.54
      hostname: admin-vm-5

ips 필드는 IP 주소와 호스트 이름의 배열입니다. 이러한 주소는 VMware용 GKE가 관리자 클러스터 노드에 할당할 IP 주소와 호스트 이름입니다.

IP 블록 파일에서 관리자 클러스터 노드의 서브넷 마스크와 기본 게이트웨이도 지정합니다.

관리자 클러스터 구성 파일 작성

수정할 admin-cluster.yaml을 엽니다. 완료되면 이 파일에는 gkectl이 기본 설치에 대한 관리자 클러스터를 만드는 데 필요한 모든 정보가 포함됩니다. 일부 필드는 이미 기본값, 생성된 값, vCenter 세부정보 등 관리자 워크스테이션을 구성할 때 제공한 값으로 미리 채워져 있습니다. 이 간편 설치에 대해서는 이러한 값을 변경하지 마세요.

앞에서 수집한 정보를 사용하여 다음과 같이 나머지 필드를 작성합니다. 필드 형식을 지정하는 방법을 모르겠으면 전체 구성 파일 예시를 참조하거나 관리자 클러스터 구성 파일 참조를 확인하세요. 필드 값을 입력할 때 참조할 수 있도록 페이지를 개별 탭 또는 창으로 열어 두는 것이 좋습니다.

필드 또는 섹션 안내
vCenter.dataDisk 설치 프로그램이 Kubernetes 객체 데이터를 보관하기 위해 만드는 가상 머신 디스크(VMDK)에 사용할 이름입니다.
network.hostConfig.dnsServers 클러스터 VM에서 사용할 수 있는 DNS 서버의 IP 주소입니다.
network.hostConfig.ntpServers 클러스터 VM에서 사용할 수 있는 시간 서버의 IP 주소입니다.
network.ipMode.type 이 필드를 "static"으로 설정합니다.
network.ipMode.ipBlockFilePath 앞에서 만든 IP 블록 파일의 경로입니다.
network.serviceCIDRnetwork.podCIDR 중복 방지에 설명된 대로 기본이 아닌 범위를 사용해야 하는 경우에만 이러한 값을 변경하세요.
loadBalancer.vips.controlPlaneVIP 관리자 클러스터의 Kubernetes API 서버에 선택한 가상 IP 주소(VIP)입니다.
loadbalancer.kind 이 필드를 "MetalLB"으로 설정합니다.
antiAffinityGroups 이 필드를 "false"로 설정합니다.
gkeConnect.projectID 이 필드를 Google 프로젝트의 프로젝트 ID로 설정합니다.
gkeConnect.registerServiceAccountKeyPath 이 필드를 연결-등록 서비스 계정의 JSON 키로 설정합니다.

관리자 클러스터 구성 파일의 예시

다음은 작성된 관리자 클러스터 구성 파일의 예시입니다.

apiVersion: v1
kind: AdminCluster
name: "gke-admin-01"
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.11.0-gke.543-full.tgz"
vCenter:
  address: "vc01.example"
  datacenter: "vc-01"
  cluster: "vc01-workloads-1"
  resourcePool: "my-cluster/Resources"
  datastore: "vc01-datastore-1"
  caCertPath: "/usr/local/google/home/me/certs/vc01-cert.pem""
  credentials:
    fileRef:
      path: "credential.yaml"
      entry: "vCenter"
  dataDisk: "vc01-admin-disk.vmdk"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: false
componentAccessServiceAccountKeyPath: "sa-key.json"
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"
  disableVsphereResourceMetrics: false

관리자 클러스터 구성 파일 유효성 검사

관리자 클러스터 구성 파일이 유효하고 클러스터 생성에 사용될 수 있는지 확인합니다.

gkectl check-config --config admin-cluster.yaml

OS 이미지를 vSphere로 가져옵니다.

완료된 구성 파일로 gkectl prepare를 실행하여 노드 OS 이미지를 vSphere로 가져옵니다.

gkectl prepare --config admin-cluster.yaml --skip-validation-all

이 명령어를 실행하면 이미지를 vSphere로 가져오고 관리자 클러스터의 이미지를 포함한 VM 템플릿으로 표시합니다.

관리자 클러스터 만들기

관리자 클러스터를 만듭니다.

gkectl create admin --config admin-cluster.yaml

실패 후 관리자 클러스터 만들기 다시 시작

관리자 클러스터 만들기가 실패하거나 취소된 경우 create 명령어를 다시 실행할 수 있습니다.

gkectl create admin --config admin-cluster.yaml

관리자 클러스터 kubeconfig 파일 찾기

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

관리자 클러스터 실행 여부 확인

클러스터가 실행 중인지 확인합니다.

kubectl get nodes --kubeconfig kubeconfig

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

gke-admin-master-hdn4z            Ready    control-plane,master ...
gke-admin-node-7f46cc8c47-g7w2c   Ready ...
gke-admin-node-7f46cc8c47-kwlrs   Ready ...

사용자 클러스터 만들기

Google Cloud 콘솔 또는 관리자 워크스테이션의 명령줄에서 이 간편 설치를 위한 사용자 클러스터를 만들 수 있습니다. 현재는 Google Cloud 콘솔을 사용하여 사용자 클러스터만 만들 수 있습니다.

콘솔

이 접근 방법은 GKE On-Prem API라는 Google Cloud 서비스를 사용하여 vSphere 환경에서 클러스터를 만들고 관리합니다. Google Cloud 콘솔에서 사용자 클러스터를 만들면 선택한 플릿 호스트 프로젝트에서 이 API가 자동으로 사용 설정됩니다. 작동 방식에 대한 자세한 내용은 Google Cloud 콘솔에서 사용자 클러스터 만들기를 참조하세요. 또한 이 방법을 사용하면 클러스터 생성자가 Google ID를 사용하여 Google Cloud 콘솔에서 새 클러스터에 자동으로 로그인할 수 있지만 다른 사용자용으로 인증을 설정해야 합니다.

  1. Google Cloud 콘솔에서 GKE Enterprise 클러스터 페이지로 이동합니다.

    GKE Enterprise 클러스터 페이지로 이동

  2. 클러스터를 만들 Google Cloud 프로젝트를 선택합니다. 선택한 프로젝트는 Fleet 호스트 프로젝트이기도 합니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다.

  3. 클러스터 만들기를 클릭합니다.

  4. 대화상자에서 온프레미스를 클릭합니다.

  5. VMware vSphere 옆에 있는 구성을 클릭합니다.

  6. 기본 요건을 검토하고 계속을 클릭합니다.

클러스터 기본사항

  1. 사용자 클러스터의 이름을 입력합니다.
  2. 관리자 클러스터 아래의 목록에서 이전에 만든 관리자 클러스터를 선택하세요. 사용하려는 관리자 클러스터가 표시되지 않으면 문제 해결 섹션을 참조하세요. 관리자 클러스터는 클러스터 기본사항 드롭다운 목록에 표시되지 않습니다.

  3. GCP API 위치 필드의 목록에서 Google Cloud 리전을 선택합니다. 이 설정은 GKE On-Prem API가 실행되는 리전을 제어하는 것 외에도 다음이 저장되는 리전을 제어합니다.

    • GKE On-Prem API가 클러스터 수명 주기를 관리하는 데 필요한 사용자 클러스터 메타데이터
    • 시스템 구성요소를 위한 데이터 로깅, 모니터링, 감사
  4. 사용자 클러스터의 VMware용 GKE 버전을 선택합니다.

  5. 계속을 클릭하여 네트워킹 섹션으로 이동합니다.

네트워킹

이 섹션에서는 클러스터의 노드, 포드, 서비스의 IP 주소를 지정합니다. 이 간편 설치의 경우 클러스터에는 3개의 노드 각각에 대한 주소와 사용자 클러스터 업그레이드 중 임시 노드에 사용할 수 있는 추가 IP 주소가 필요합니다.

  1. 노드 IP 섹션에서 클러스터의 IP 모드고정을 지정합니다.

  2. 사용자 클러스터 노드에 이전에 계획한 주소를 사용하여 다음 정보를 입력합니다.

    1. 사용자 클러스터용 게이트웨이의 IP 주소를 입력합니다.
    2. 사용자 클러스터 노드의 서브넷 마스크를 입력합니다.
    3. IP 주소 섹션에서 IP 주소를 입력하고 원하는 경우 사용자 클러스터에 있는 워커 노드의 호스트 이름을 입력합니다. 개별 IP v4 주소(예: 192.0.2.1) 또는 IPv4 주소의 CIDR 블록(예: 192.0.2.0/24)을 입력할 수 있습니다.

      • CIDR 블록을 입력하는 경우 호스트 이름을 입력하지 마세요.
      • 개별 IP 주소를 입력할 경우 호스트 이름을 선택적으로 입력할 수 있습니다. 호스트 이름을 입력하지 않으면 VMware용 GKE가 vSphere의 VM 이름을 호스트 이름으로 사용합니다.
    4. 필요에 따라 + IP 주소 추가를 클릭하여 IP 주소를 더 입력합니다.

  3. 중복 방지에 설명된 대로 기본이 아닌 범위를 사용해야 하는 경우가 아니라면 서비스 및 포드 CIDR 섹션에서 제공된 기본 값을 그대로 둡니다.

  4. 호스트 구성 섹션에서 다음 정보를 지정합니다.

    1. 사용자 클러스터에서 사용할 수 있는 DNS 서버의 IP 주소를 입력합니다.
    2. NTP 서버의 IP 주소를 입력합니다.
  5. 계속을 클릭하여 부하 분산기 섹션으로 이동합니다.

부하 분산기

MetalLB를 부하 분산기로 구성합니다.

  1. 부하 분산기 유형에서 MetalLB를 선택한 상태로 둡니다.

  2. 가상 IP 섹션에서 다음을 입력합니다.

    • 제어 영역 VIP: 사용자 클러스터의 Kubernetes API 서버 서버로 전송되는 트래픽에 사용할 대상 IP 주소입니다. 이 IP 주소는 관리자 클러스터 노드와 동일한 L2 도메인에 있어야 합니다. 주소 풀 섹션에 이 주소를 추가하지 마세요.

    • 인그레스 VIP: 인그레스 프록시의 부하 분산기에서 구성할 IP 주소입니다. 주소 풀 섹션에서 지정하는 주소 풀에 포함되어야 합니다.

  3. 주소 풀 섹션에서 인그레스 VIP를 포함한 부하 분산기의 주소 풀을 지정합니다. 이는 이전에 계획한 서비스 VIP입니다.

    1. + IP 주소 범위 추가를 클릭합니다.
    2. 주소 풀의 이름을 입력합니다.
    3. CIDR 표기법(예: 192.0.2.0/26) 또는 범위 표기법(예: 192.0.2.64~192.0.2.72)으로 IP 주소 범위를 입력합니다. 각 풀의 IP 주소는 겹칠 수 없으며 클러스터 노드와 동일한 서브넷에 있어야 합니다.
    4. IP 주소 할당에서 자동을 선택합니다.
    5. 완료하면 완료를 클릭합니다.
  4. 계속을 클릭합니다.

제어 영역

이 섹션에 제공된 기본값을 사용합니다. 계속을 클릭합니다.

기능

  1. 안티어피니티 그룹 사용 설정을 선택 해제합니다. 최소한의 인프라를 설정할 때 ESXi 호스트는 하나만 생성하므로 안티어피니티 그룹을 사용 설정하면 안 됩니다.

  2. 계속을 클릭합니다.

노드 풀

클러스터에 노드 풀이 하나 이상 있어야 합니다. 노드 풀은 이 클러스터에서 만든 노드 그룹의 템플릿입니다. 자세한 내용은 노드 풀 만들기 및 관리를 참조하세요.

노드 풀에 구성된 기본값을 검토합니다. 기본값은 최소 인프라로 충분하지만 필요에 따라 값을 조정할 수 있습니다.

확인 및 완료

확인 및 완료를 클릭하여 사용자 클러스터를 만듭니다. 사용자 클러스터를 만드는 데 10분 이상 걸립니다. Google Cloud 콘솔은 설정을 확인하고 데이터 센터에 클러스터를 만들 때 상태 메시지를 표시합니다.

클러스터를 만든 후 자동으로 로그인됩니다. 다른 운영자는 Cloud 콘솔에서 클러스터에 로그인의 단계를 수행하여 클러스터에 대한 액세스 권한을 얻어야 합니다.

설정 확인 중에 오류가 발생하면 Google Cloud 콘솔에 구성 문제를 해결하고 클러스터를 다시 만들려고 할 정도로 명확해야 하는 오류 메시지가 표시됩니다.

발생 가능한 오류와 해결 방법에 대한 자세한 내용은 Google Cloud 콘솔에서 사용자 클러스터 생성 문제 해결을 참조하세요.

사용자 클러스터 kubeconfig 파일 만들기

명령줄에서 데이터 센터의 사용자 클러스터에 액세스하려면 관리자 클러스터에서 kubeconfig 파일을 가져와야 합니다. Google Cloud 콘솔에서 사용자 클러스터 상태가 정상으로 표시되면 관리자 워크스테이션에서 다음 명령어를 실행하여 사용자 클러스터의 새 kubeconfig 파일을 로컬에 저장합니다. 다음을 바꿉니다.

  • CLUSTER_NAME: 새로 생성된 사용자 클러스터의 이름입니다.
  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.
  • USER_CLUSTER_KUBECONFIG: 명령어가 출력하는 사용자 클러스터 kubeconfig 파일의 이름입니다.
kubectl get secret admin \
--kubeconfig ADMIN_CLUSTER_KUBECONFIG \
-n CLUSTER_NAME \
-o=jsonpath='{.data.admin\.conf}' | base64 -d > USER_CLUSTER_KUBECONFIG

파일이 저장되면 다음 예시와 같이 kubectl을 사용하여 사용자 클러스터에 액세스할 수 있습니다.

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get namespaces

명령줄

이 절차를 시작하기 전에 위에 설명된 대로 관리자 워크스테이션에 SSH로 연결되어 있는지 확인하세요. 다음 명령어는 모두 관리자 워크스테이션에서 실행됩니다.

사용자 클러스터의 고정 IP 지정

사용자 클러스터 노드에 이전에 계획한 고정 IP 주소를 지정하려면 user-cluster-ipblock.yaml이라는 IP 블록 파일을 만드세요. 사용자 클러스터 노드에 사용할 3개의 IP 주소와 업그레이드 중 임시로 사용할 한 개의 추가 주소가 필요합니다. 다음은 4개 주소가 포함된 IP 블록 파일의 예시입니다.

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.20.1
    ips:
    - ip: 172.16.20.55
      hostname: user-vm-1
    - ip: 172.16.20.56
      hostname: user-vm-2
    - ip: 172.16.20.57
      hostname: user-vm-3
    - ip: 172.16.20.58
      hostname: user-vm-4

사용자 클러스터 구성 파일 작성

gkeadm이 관리자 워크스테이션을 만들 때 user-cluster.yaml이라는 구성 파일을 생성했습니다. 이 구성 파일은 사용자 클러스터를 만들기 위한 것입니다. 일부 필드는 이미 기본값, 생성된 값, vCenter 세부정보 등 관리자 워크스테이션을 구성할 때 제공한 값으로 미리 채워져 있습니다. 이 간편 설치에 대해서는 이러한 값을 변경하지 마세요.

  1. 수정할 user-cluster.yaml을 엽니다.

  2. 앞에서 수집한 정보를 사용하여 다음과 같이 나머지 필드를 작성합니다. 필드 형식을 지정하는 방법을 잘 모르겠으면 아래의 전체 구성 파일 예시를 참조하거나 사용자 클러스터 구성 파일 참조를 확인하세요. 필드 값을 입력할 때 참조할 수 있도록 페이지를 개별 탭 또는 창으로 열어 두는 것이 좋습니다.

필드 또는 섹션 안내
name 사용자 클러스터의 이름입니다.
network.hostConfig.dnsServers 클러스터 VM에서 사용할 수 있는 DNS 서버의 IP 주소입니다.
network.hostConfig.ntpServers 클러스터 VM에서 사용할 수 있는 시간 서버의 IP 주소입니다.
network.ipMode.type 이 필드를 "static"으로 설정합니다.
network.ipMode.ipBlockFilePath user-cluster-ipblock.yaml의 경로입니다.
network.serviceCIDRnetwork.podCIDR 중복 방지에 설명된 대로 기본이 아닌 범위를 사용해야 하는 경우에만 이러한 값을 변경하세요.
loadBalancer.vips.controlPlaneVIP 사용자 클러스터의 Kubernetes API 서버에 선택한 가상 IP 주소(VIP)입니다.
loadBalancer.vips.ingressVIP 인그레스 프록시의 부하 분산기에서 구성하도록 선택한 가상 IP 주소입니다.
loadbalancer.kind 이 필드를 "MetalLB"으로 설정합니다.
loadbalancer.metalLB.addressPools 부하 분산기의 주소 풀을 지정합니다. 이는 이전에 계획한 서비스 VIP입니다. 주소 풀 및 선택한 addressesname을 제공합니다. 주소 풀에 인그레스 프록시 VIP가 포함되어야 합니다.
nodePools 선택한 name을 지정하여 단일 노드 풀에 대해 미리 채워진 값을 사용합니다. 노드 풀의 enableLoadBalancertrue로 설정합니다. 이는 클러스터 노드에서 실행되기 때문에 MetalLB를 사용하는 데 필요합니다.
antiAffinityGroups 이 필드를 "false"로 설정합니다.
gkeConnect.projectID 이 필드를 Google 프로젝트의 프로젝트 ID로 설정합니다.
gkeConnect.registerServiceAccountKeyPath 이 필드를 연결-등록 서비스 계정의 JSON 키로 설정합니다.

사용자 클러스터 구성 파일 예시

다음은 작성된 사용자 클러스터 구성 파일의 예시입니다.

apiVersion: v1
kind: UserCluster
name: "my-user-cluster"
gkeOnPremVersion: "1.11.0-gke.543"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.1"
    - "198.51.100.1"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
  serviceCIDR: "10.96.0.0/20"
  podCIDR: "192.168.0.0/16"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.61"
    ingressVIP: "172.16.20.62"
  kind: "MetalLB"
  metalLB:
    addressPools:
    - name: "uc-address-pool"
      addresses:
      - "172.16.20.62-172.16.20.72"
nodePools:
- name: "uc-node-pool"
  cpus: 4
  memoryMB: 8192
  replicas: 3
  enableLoadBalancer: true
antiAffinityGroups:
  enabled: false
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"
  disableVsphereResourceMetrics: false
autoRepair:
  enabled: true

구성 확인 및 클러스터 만들기

  1. 사용자 클러스터 구성 파일이 유효하고 클러스터 생성에 사용될 수 있는지 확인합니다.

    gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
    
  2. 사용자 클러스터 만들기:

    gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
    

    클러스터를 만드는 데 약 30분 정도 걸립니다.

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

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

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

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

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 ...

다음 단계

이제 VMware용 GKE의 최소 설치가 완료되었습니다. 원하는 경우 후속 작업으로 애플리케이션을 배포하여 설치의 실제 작동 방식을 확인할 수 있습니다.