Google Distributed Cloud는 OpenStack을 프라이빗 클라우드 플랫폼으로 사용할 수 있도록 지원합니다. 이 가이드에서는 외부 클라우드 제공업체와 함께 작동하도록 Google Distributed Cloud 클러스터를 구성하는 방법을 설명합니다. OpenStack에서 Google 분산 클라우드 클러스터를 실행하면 다음 OpenStack 서비스를 사용할 수 있습니다.
Infrastructure as a Service(IaaS)
Load balancing as a Service(LBaaS)
스토리지
OpenStack에서 작동하도록 클러스터를 구성하는 과정으로 구성됩니다.
클러스터를 만들 때
baremetal.cluster.gke.io/external-cloud-provider
주석을 추가합니다.이 주석은 Google Distributed Cloud가 kubelet 플래그
cloud-provider=external
을 추가하도록 합니다.그런 다음 kubelet은
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
taint를 클러스터 노드에 추가합니다.
이 구성을 사용하면 사용자와 OpenStack이 노드 초기화 프로세스를 소유할 수 있습니다. 예를 들어 OpenStack에 Google Distributed Cloud를 배포하여 OpenStack Load Balancing as a Service(LBaaS) 리소스를 자동으로 프로비저닝하거나 다른 OpenStack 기능을 사용할 수 있습니다. LBaaS 리소스는 MetalLB 리소스를 바꿔서 Google Distributed Cloud 클러스터에서 실행되는 서비스를 다른 OpenStack 테넌트 또는 OpenStack 네트워크 외부에 노출시킬 수 있습니다. OpenStack 기능과 이점에 대한 자세한 내용은 OpenStack 문서를 참조하세요.
관련 예시
이 문서에서는 OpenStack에서 사용할 클러스터를 구성하는 방법만 설명합니다. 다음 가이드에서는 배포 예시를 안내합니다.
OpenStack에 Google Distributed Cloud 클러스터 배포에서는 OpenStack 가상 머신(VM)에 Google Distributed Cloud 하이브리드 클러스터의 샘플 배포를 안내합니다. 이 배포에서는 스크립트를 사용하여 설치를 간소화합니다. 또한 이 가이드는 Load Balancing as a Service(LBaaS)를 사용 설정하는 한 가지 방법을 보여줍니다.
Kubernetes용 OpenStack 클라우드 제공업체 구성에서는 OpenStack에 배포된 Google Distributed Cloud 클러스터에 OpenStack 클라우드 제공업체를 설치하는 방법을 보여줍니다. OpenStack 클라우드 제공업체는 Google Distributed Cloud를 OpenStack과 함께 사용할 필요가 없습니다.
시작하기 전에
OpenStack LBaaS 리소스를 사용해야 하는 GKE 클러스터를 결정합니다.
OpenStack LBaaS 리소스를 사용하도록 구성된 클러스터를 만든 후에는 MetalLB 리소스로 전환하도록 구성을 변경할 수 없습니다. 올바른 클라우드 제공업체 구성으로 클러스터를 초기화해야 합니다.
구성하려는 머신에 대한 액세스 권한이 있는지 확인합니다.
Kubernetes 문서에서 cloud-controller-manager 실행에 대해 자세히 알아보세요.
클러스터 구성 파일 변경
OpenStack Kubernetes 클라우드 제공업체에서는 kubelet
이 다음 인수를 사용하여 모든 노드에서 실행되어야 합니다.
cloud-provider: "external"
GKE 클러스터가 이 요구사항을 충족하도록 하려면 클러스터를 만들기 전에 메타데이터 섹션에서 클러스터 구성 파일에 baremetal.cluster.gke.io/external-cloud-provider: "true"
주석을 추가합니다.
구성 파일의 항목은 다음 예시와 비슷하게 표시됩니다.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
...
다른 클라우드 플랫폼의 일부 클라우드 제공업체는 providerID
에 특별한 형식이 필요합니다. Google Distributed Cloud는 노드 머신마다 baremetal://MACHINE_ADDRESS
와 같은 형식의 providerID
를 생성합니다. 다른 providerID
가 필요하면 각 노드마다 ID를 하나씩 IP 주소와 함께 지정할 수 있습니다.
다음 샘플 클러스터 구성 파일에서는 클러스터 노드에 providerID
를 지정하는 방법을 보여줍니다.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
spec:
clusterNetwork:
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
controlPlane:
nodePoolSpec:
nodes:
- address: 10.200.0.1
+ providerID: some-prefix://unique-string
- address: 10.200.0.2
+ providerID: some-prefix2://unique-string2
...
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
클러스터 만들기
구성 파일을 수정한 후 다음 명령어를 사용하여 클러스터를 초기화합니다.
bmctl create cluster -c cluster1
클러스터 만들기에 대한 자세한 내용은 클러스터 만들기 개요를 참조하세요.
노드 구성
OpenStack에 구성된 클러스터를 만들면 클러스터 노드가 다음과 같이 변경됩니다.
이제
cluster1
의 모든 노드가 필요한 인수cloud-provider: "external"
로 실행됩니다.또한 모든 노드에서 다음 taint가 해당 구성 파일에 추가됩니다.
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
이러한 taint는 이 클러스터에서 클라우드 제공업체를 초기화한 후에 삭제됩니다.
kubelet
는 클러스터 구성 파일에 지정한providerID
로 실행됩니다.