스토리지 정책 구성

이 문서에서는 VMware용 GKE 클러스터의 VM 스토리지 정책을 구성하는 방법을 보여줍니다.

VM 스토리지 정책을 사용할 때는 클러스터 노드의 스토리지가 vSphere 환경에 있는 여러 데이터 스토어에 분산됩니다. 이 기능은 애플리케이션 요구사항 및 클러스터 구성에 따라 스토리지 정책을 정의할 수 있게 해주는 스토리지 정책 기반 관리를 기반으로 합니다.

Datastore에 태그 적용

vSphere 환경에는 이 연습에 사용할 수 있는 데이터 스토어가 2개 이상 있어야 합니다.

사용자 클러스터에 대해 노드를 호스팅하는 vSphere 클러스터는 이 연습에 사용하는 2개의 데이터 스토어 및 관리자 클러스터에 사용되는 데이터 스토어에 액세스할 수 있어야 합니다.

태그 적용을 위해 사용하는 vCenter 계정에는 루트 vCenter Server에 대해 다음과 같은 vSphere 태그 지정 권한이 있어야 합니다.

  • vSphere 태그 지정.vSphere 태그 만들기
  • vSphere 태그 지정.vSphere 태그 카테고리 만들기
  • vSphere 태그 지정.vSphere 태그 할당 또는 할당 해제

vSphere 클라이언트에서 이 연습에 사용하려고 선택한 각 데이터 스토어에 동일한 태그를 할당합니다. 자세한 내용은 데이터 스토어에 태그 할당을 참조하세요.

자세한 내용은 vSphere 태그 및 속성을 참조하세요.

스토리지 정책 만들기

vSphere 클라이언트에서 태그 기반 배치를 위한 VM 스토리지 정책을 만듭니다. 스토리지 정책에서 선택한 데이터 스토어에 적용한 태그를 지정합니다. 자세한 내용은 태그 기반 배치를 위한 VM 스토리지 정책 만들기를 참조하세요.

자세한 내용은 VM 스토리지 정책을 참조하세요.

vSAN 데이터 스토어를 사용하는 경우 vSAN 스토리지 정책을 참조하세요.

사용자 클러스터 만들기

이 섹션에서는 스토리지 정책을 사용하는 사용자 클러스터를 만드는 방법에 대한 예시를 보여줍니다. 클러스터에는 고가용성 제어 영역이 포함되므로 3개의 제어 영역 노드가 있습니다. 제어 영역 노드 외에도 하나의 노드 풀과 두 번째 노드 풀에 각각 3개씩 6개의 워커 노드가 있습니다. 모든 노드에는 고정 IP 주소가 사용됩니다.

먼저 사용자 클러스터 만들기(ControlPlane V2)의 안내를 따르세요.

사용자 클러스터 구성 파일을 입력할 때 다음을 수행합니다.

  • vCenter.storagePolicyName의 값을 기존 스토리지 정책의 이름으로 설정합니다. vCenter.datastore 값을 설정하지 마세요.

  • 2개의 노드 풀을 지정합니다. 첫 번째 노드 풀에 대해 데이터 스토어를 지정하지 않고 스토리지 정책을 지정하지 않습니다. 두 번째 노드 풀에 대해 vsphere.datastore의 값을 기존 데이터 스토어의 이름으로 설정합니다.

클러스터 구성 파일 예시

다음은 IP 블록 파일의 예시와 사용자 클러스터 구성 파일의 일부입니다.

user-ipblock.yaml

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.21.1
    ips:
    - ip: 172.16.21.2
    - ip: 172.16.21.3
    - ip: 172.16.21.4
    - ip: 172.16.21.5
    - ip: 172.16.21.6
    - ip: 172.16.21.7
    - ip: 172.16.21.8

user-cluster-yaml

apiVersion: v1
kind: UserCluster
...
vCenter:
  storagePolicyName: "my-storage-policy"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.2"
    - "198.51.100.2"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.9"
      hostname: "cp-vm-1"
    - ip: "172.16.21.10"
      hostname: "cp-vm-2"
    - ip: "172.16.21.11"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: MetalLB
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
    - "172.16.21.30-172.16.21.39"
...
enableControlplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-pool-1"
  enableLoadBalancer: true
- name: "worker-pool-2"
  vSphere:
    datastore: "my-np2-datastore"
...

앞의 예시에서 이해가 필요한 중요 부분은 다음과 같습니다.

  • 워커 노드의 고정 IP 주소는 IP 블록 파일에 지정됩니다. 워커 노드가 6개뿐인데도 IP 블록 파일은 주소가 7개입니다. 추가 IP 주소는 클러스터 업그레이드, 업데이트, 자동 복구 중에 필요합니다.

  • 3개의 제어 영역 노드에 대한 고정 IP 주소는 사용자 클러스터 구성 파일의 network.controlPlaneIPBlock 섹션에 지정됩니다. 이 블록에는 추가 IP 주소가 필요하지 않습니다.

  • masterNode.replicas 필드가 3으로 설정되므로 제어 영역 노드가 3개가 됩니다. masterNode에서 vsphere.datastore 또는 vsphere.storagePolicyName에 대해 아무 것도 지정되지 않습니다. 따라서 제어 영역 노드에는 vCenter.storagePolicyName에 지정된 스토리지 정책이 사용됩니다.

  • 사용자 클러스터 구성 파일에 vCenter.storagePolicy에 대한 값이 포함되지만 vCenter.datastore에 대한 값은 포함되지 않습니다. 지정된 스토리지 정책은 자체 스토리지 정책 또는 자체 데이터 스토어를 지정하지 않는 모든 풀의 노드에 사용됩니다.

  • node-pool-1에서 vsphere.datastore 또는 vsphere.storagePolicyName에 대해 아무 것도 지정되지 않습니다. 따라서 node-pool-1의 노드에는 vCenter.storagePolicyName에 지정된 스토리지 정책이 사용됩니다.

  • node-pool-2에서 vsphere.datastore의 값은 my-np2-datastore이므로 node-pool-2의 노드에 이 하나의 데이터 스토어가 사용되고 스토리지 정책은 사용되지 않습니다.

사용자 클러스터 만들기(Controlplane V2)에 설명된 대로 사용자 클러스터를 계속 만듭니다.