이 문서에서는 kubeception을 사용하는 사용자 클러스터를 만드는 방법을 보여줍니다.
kubeception이란 무엇인가요?
kubeception은 Kubernetes 클러스터를 사용하여 다른 Kubernetes 클러스터를 만들고 관리하는 아이디어를 나타내는 용어입니다. VMware용 GKE와 관련하여 kubeception은 사용자 클러스터의 제어 영역이 관리자 클러스터의 하나 이상의 노드에서 실행되는 경우를 나타냅니다.
kubeception은 사용하지 않는 것이 좋습니다. 대신 Controlplane V2를 사용하는 것이 좋습니다. Controlplane V2를 사용하면 사용자 클러스터의 제어 영역 노드는 사용자 클러스터 자체에 있습니다.
IP 주소 계획
IP 주소 계획(kubeception)의 안내를 따르세요.
클러스터 구성 파일 작성
사용자 클러스터 만들기(Controlplane V2)의 안내를 따릅니다.
사용자 클러스터 구성 파일을 입력할 때 다음을 수행합니다.
enableControlplaneV2
을false
로 설정합니다.사용할 부하 분산의 유형을 결정합니다. 옵션은 다음과 같습니다.
MetalLB 번들 부하 분산.
loadBalancer.kind
를"MetalLB"
로 설정합니다. 또한loadBalancer.metalLB.addressPools
섹션을 입력하고 노드 풀 중 최소 하나 이상에서enableLoadBalancer
를true
로 설정합니다. 자세한 내용은 MetalLB를 사용한 번들 부하 분산을 참조하세요.Seesaw 번들 부하 분산.
loadBalancer.kind
를"Seesaw"
로 설정하고loadBalancer.seesaw
섹션을 입력합니다. 자세한 내용은 Seesaw를 사용한 번들 부하 분산을 참조하세요.F5 BIG-IP를 사용한 통합 부하 분산
loadBalancer.kind
를"F5BigIP"
로 설정하고f5BigIP
섹션을 입력합니다. 자세한 내용은 F5 BIG-IP를 사용한 부하 분산을 참조하세요.수동 부하 분산.
loadBalancer.kind
를"ManualLB"
로 설정하고manualLB
섹션을 입력합니다. 자세한 내용은 수동 부하 분산 사용 설정을 참조하세요.
부하 분산 옵션에 대한 상세 설명은 부하 분산 개요를 참조하세요.
사용자 클러스터에 Dataplane V2 사용 여부를 결정하고 이에 따라 enableDataplaneV2를 설정합니다.
작성된 구성 파일 예시
다음은 채워진 IP 블록 파일 및 채워진 사용자 클러스터 구성 파일의 예시입니다. 이 구성에 따라 전부는 아니더라도 사용 가능한 기능 중 일부가 사용 설정됩니다.
user-ipblock.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
user-cluster.yaml
apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: false network: hostConfig: dnsServers: - "203.0.113.1" - "198.51.100.1" ntpServers: - "216.239.35.4" ipMode: type: static ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 loadBalancer: vips: controlPlaneVIP: "172.16.20.32" ingressVIP: "172.16.21.30" kind: "MetalLB" metalLB: addressPools: - name: "my-address-pool" addresses: - "172.16.21.30 - 172.16.21.39" enableDataplaneV2: true masterNode: cpus: 4 memoryMB: 8192 replicas: 1 nodePools: - name: "my-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 osImageType: "ubuntu_containerd" enableLoadBalancer: true 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
명령어에 대해 자세히 알아보려면 실행 전 검사 실행을 참조하세요.
(선택사항) 사용자 클러스터의 Seesaw 부하 분산기 만들기
번들 Seesaw 부하 분산기를 사용하기로 선택한 경우 이 섹션의 단계를 수행합니다. 그렇지 않으면 이 섹션을 건너뛰세요.
Seesaw 부하 분산기의 VM을 만들고 구성합니다.
gkectl create loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
(선택사항) OS 이미지를 vSphere로 가져오고 컨테이너 이미지를 비공개 레지스트리로 푸시
다음 중 하나라도 해당하는 경우 gkectl prepare
를 실행합니다.
사용자 클러스터가 관리자 클러스터와 다른 vSphere 데이터 센터에 있습니다.
사용자 클러스터에 관리자 클러스터와 다른 vCenter Server가 있습니다.
사용자 클러스터는 관리자 클러스터에서 사용하는 비공개 레지스트리와 다른 비공개 Container Registry를 사용합니다.
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
다음을 바꿉니다.
ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.
BUNDLE: 번들 파일의 경로입니다. 이 파일은
/var/lib/gke/bundles/
의 관리자 워크스테이션에 있습니다. 예를 들면 다음과 같습니다./var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.
사용자 클러스터 만들기
다음 명령어를 실행하여 사용자 클러스터를 만듭니다.
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
사용자 클러스터 kubeconfig 파일 찾기
gkectl create cluster
명령어는 현재 디렉터리에 USER_CLUSTER_NAME-kubeconfig
라는 kubeconfig 파일을 만듭니다. 나중에 사용자 클러스터와 상호 작용하려면 이 kubeconfig 파일이 필요합니다.
kubeconfig 파일에는 사용자 클러스터의 이름이 포함되어 있습니다. 클러스터 이름을 보려면 다음을 실행합니다.
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
출력에 클러스터의 이름이 표시됩니다. 예를 들면 다음과 같습니다.
NAME my-user-cluster
원하는 경우 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 ...
문제 해결
클러스터 생성 및 업그레이드 문제 해결을 참조하세요.