관리자 클러스터 만들기

이 문서에서는 VMware용 Anthos 클러스터(GKE On-Prem)의 관리자 클러스터를 만드는 방법을 설명합니다. 관리자 클러스터는 관리자 클러스터 자체 및 연관된 사용자 클러스터에 대해 Kubernetes 제어 영역을 실행합니다. 워크로드를 실행하기 위해 사용자 클러스터를 만들기 전 관리자 클러스터를 만들어야 합니다.

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

절차 개요

관리자 클러스터 만들기에 포함된 기본 단계는 다음과 같습니다.

  1. 관리자 워크스테이션에 연결합니다.
    이 VM에는 새 클러스터를 만드는 데 필요한 도구가 포함되어 있습니다.
  2. 구성 파일을 작성합니다.
    관리자 클러스터 구성 파일, 사용자 인증 정보 구성 파일, IP 블록 파일을 완료하고 검증하여 새 관리자의 세부정보를 지정합니다.
  3. OS 이미지를 vSphere로 가져오고 컨테이너 이미지를 비공개 레지스트리로 푸시합니다(해당하는 경우).
    gkectl prepare를 실행합니다.
  4. (선택사항) Seesaw 부하 분산기를 만듭니다.
    Seesaw 부하 분산기를 사용하기로 결정했다면 gkectl create loadbalancer를 실행합니다.
  5. 관리자 클러스터를 만듭니다.
    gkectl을 사용하여 완료된 구성 파일에 지정된 대로 새 관리자 클러스터를 만듭니다.
  6. 클러스터 관리자가 실행 중인지 확인합니다.
    kubectl을 사용하여 클러스터 노드를 확인합니다.

이 절차를 마치면 사용자 클러스터를 만들고 관리하는 데 사용할 수 있는 관리자 클러스터가 실행됩니다.

시작하기 전에

  • 관리자 워크스테이션을 만들었는지 확인합니다.

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

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

  • privateRegistry 섹션을 확인하고 VMware용 Anthos 클러스터 구성요소에 대해 공개 또는 비공개 레지스트리를 사용할지 결정합니다.

  • osImageType 필드를 확인하고 관리자 클러스터 노드에서 실행하려는 운영체제 유형을 결정합니다.

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

안내에 따라 관리자 워크스테이션에 SSH로 연결합니다. 관리자 워크스테이션에는 관리자 클러스터를 만드는 데 필요한 도구가 포함되어 있습니다. 관리자 워크스테이션에는 또한 구성요소 액세스 서비스 계정이 활성화되어 있습니다.

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

2. 구성 파일 작성

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

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

name

관리자 클러스터 이름을 지정하려면 name 필드를 입력합니다.

bundlePath

번들은 클러스터 구성요소가 포함된 Zip 파일입니다. 관리자 워크스테이션에 포함되어 있습니다. 이 필드는 이미 채워져 있습니다.

vCenter

이 섹션에 있는 대부분의 필드는 관리자 워크스테이션을 만들 때 입력한 값으로 이미 채워져 있습니다. dataDisk 필드는 예외입니다. 이 필드는 지금 입력해야 합니다.

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 주소 계획을 참조하세요.

loadBalancer

관리자 클러스터의 Kubernetes API 서버에 대해 VIP를 별도로 설정합니다. 부가기능 서버에 대해 다른 VIP를 별도로 설정합니다. VIP를 loadBalancer.vips.controlPlaneVIPloadBalancer.vips.addonsVIP의 값으로 제공합니다.

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

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

  • MetalLB 번들 부하 분산. loadBalancer.kind"MetalLB"로 설정합니다.

  • Seesaw 번들 부하 분산. loadBalancer.kind"Seesaw"로 설정하고 loadBalancer.seesaw 섹션을 입력합니다.

  • F5 BIG-IP를 사용한 통합 부하 분산 loadBalancer.kind"F5BigIP"로 설정하고 f5BigIP 섹션을 입력합니다.

  • 수동 부하 분산. loadBalancer.kind"ManualLB"로 설정하고 manualLB 섹션을 입력합니다.

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

antiAffinityGroups

필요에 따라 antiAffinityGroups.enabledtrue 또는 false로 설정합니다.

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

adminMaster

관리자 클러스터의 제어 영역 노드에 CPU와 메모리를 지정하려면 adminMaster를 입력합니다.

addonNode

필요에 따라 addonNode.autoResize.enabledtrue 또는 false로 설정합니다.

proxy

관리자 클러스터 노드를 포함할 네트워크가 프록시 서버 뒤에 있는 경우 proxy 섹션을 입력합니다.

privateRegistry

VMware용 Anthos 클러스터 구성요소의 컨테이너 이미지를 보관할 위치를 결정합니다. 옵션은 다음과 같습니다.

  • Container Registry

  • 자체 비공개 Docker 레지스트리입니다.

자체 비공개 레지스트리를 사용하려면 privateRegistry 섹션을 입력합니다.

componentAccessServiceAccountKeyPath

VMware용 Anthos 클러스터는 구성요소 액세스 서비스 계정을 사용하여 Container Registry에서 클러스터 구성요소를 다운로드합니다. 이 필드에는 구성요소 액세스 서비스 계정에 대한 JSON 키 파일의 경로가 포함되어 있습니다.

이 필드는 이미 채워져 있습니다.

gkeConnect

Google Cloud Fleet에 관리자 클러스터를 등록하려면 gkeConnect 섹션을 입력합니다.

stackdriver

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

cloudAuditLogging

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

clusterBackup

관리자 클러스터 백업을 사용 설정하려면 clusterBackup.datastore를 클러스터 백업을 저장할 vSphere Datastore로 설정합니다.

autoRepair

관리자 클러스터에 대해 자동 노드 복구를 사용 설정하려면 autoRepair.enabledtrue로 설정합니다.

secretsEncryption

상시 보안 비밀 암호화를 사용 설정하려면 secretsEncryption 섹션을 입력합니다.

osImageType

관리자 클러스터 노드에 사용하려는 OS 이미지 유형을 결정하고 그에 따라 osImageType 섹션을 입력합니다.

작성된 구성 파일 예시

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

vc-01-ipblock.yaml

blocks:
  - netmask: 255.255.252.0
    gateway: 172.16.23.254
    ips:
    - ip: 172.16.20.10
      hostname: admin-host1
    - ip: 172.16.20.11
      hostname: admin-host2
    - ip: 172.16.20.12
      hostname: admin-host3
    - ip: 172.16.20.13
      hostname: admin-host4
    - ip: 172.16.20.14
      hostname: admin-host5
    - ip: 172.16.20.15
      hostname: admin-host6
    - ip: 172.16.20.16
      hostname: admin-host7
    - ip: 172.16.20.17
      hostname: admin-host8

vc-01-admin-cluster.yaml

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: "vc-01-pool-1"
  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"
    ipBlockFilePath: "vc-01-ipblock.yaml"
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"
  vCenter:
    networkName: "vc01-net-1"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.20.59"
    addonsVIP: "172.16.20.60"
  kind: "MetalLB"
antiAffinityGroups:
  enabled: true
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
clusterBackup:
  datastore: "vc-01-datastore-bu"
autoRepair:
  enabled: true
osImageType: "ubuntu_containerd"

구성 파일 유효성 검사

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

gkectl check-config --config ADMIN_CLUSTER_CONFIG

ADMIN_CLUSTER_CONFIG를 관리자 클러스터 구성 파일의 경로로 바꿉니다.

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

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

3. OS 이미지 가져오기

gkectl prepare를 실행하여 vSphere 환경을 초기화합니다.

gkectl prepare --config ADMIN_CLUSTER_CONFIG

gkectl prepare 명령어는 다음 준비 태스크를 수행합니다.

  • OS 이미지를 vSphere로 가져오고 VM 템플릿으로 표시합니다.

  • 비공개 Docker 레지스트리를 사용하는 경우 컨테이너 이미지를 레지스트리에 푸시합니다.

  • 선택적으로 컨테이너 이미지의 빌드 증명을 검사하여 이미지가 빌드되었고, Google에서 서명되었으며, 배포에 사용할 준비가 되었는지 확인합니다.

4. (선택사항) Seesaw 부하 분산기 만들기

관리자 클러스터에는 Metal LB, Seesaw, F5 BIG-IP, 수동과 같은 여러 부하 분산 옵션이 있습니다.

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

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

gkectl create loadbalancer --config ADMIN_CLUSTER_CONFIG

5. 관리자 클러스터 만들기

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

gkectl create admin --config ADMIN_CLUSTER_CONFIG

실패 후 관리자 클러스터 만들기 재개

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

gkectl create admin --config ADMIN_CLUSTER_CONFIG

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

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

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

checkpoint.yaml 파일 관리

관리자 클러스터를 만들기 위해 gkectl create admin 명령어를 실행할 때 관리자 클러스터 데이터 디스크와 동일한 Datastore 폴더에 체크포인트 파일이 생성되었습니다. 기본적으로 이 파일은 이름이 DATA_DISK_NAME‑checkpoint.yaml입니다. DATA_DISK_NAME 길이가 245자 이상이면 vSphere의 파일 이름 제한으로 인해 이름이 DATA_DISK_NAME.yaml입니다.

이 파일에는 관리자 클러스터 상태 및 사용자 인증 정보가 포함되며, 이후 업그레이드를 위해 사용됩니다. 관리자 클러스터 삭제 프로세스를 수행하는 경우가 아니라면 이 파일을 삭제하지 마세요.

vCenter Server 인스턴스에 VM 암호화를 사용 설정한 경우 관리자 클러스터를 만들거나 업그레이드하기 전에 암호화 작업.직접 액세스 권한이 있어야 합니다. 그렇지 않으면 체크포인트가 업로드되지 않습니다. 이 권한을 얻을 수 없으면 관련 명령어를 실행할 때 숨겨진 플래그 --disable-checkpoint를 사용하여 체크포인트 파일 업로드를 사용 중지할 수 있습니다.

checkpoint.yaml 파일은 gkectl upgrade admin 명령어를 실행할 때 또는 관리자 클러스터에 영향을 주는 gkectl update 명령어를 실행할 때 자동으로 업데이트됩니다.

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

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

kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG

ADMIN_CLUSTER_KUBECONFIG를 관리자 클러스터 kubeconfig 파일의 경로로 바꿉니다.

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

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

문제 해결

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

다음 단계

사용자 클러스터 만들기