O Google Distributed Cloud oferece suporte ao uso do OpenStack como uma plataforma de nuvem privada. Neste guia, descrevemos como configurar um cluster do Google Distributed Cloud para trabalhar com um provedor de nuvem externo. A execução de clusters do Google Distributed Cloud no OpenStack permite usar os seguintes serviços do OpenStack:
Infraestrutura como serviço (IaaS)
Balanceamento de carga como serviço (LBaaS, na sigla em inglês)
Armazenamento
A configuração de um cluster para trabalhar com o OpenStack consiste no seguinte:
Ao criar o cluster, você adiciona uma anotação
baremetal.cluster.gke.io/external-cloud-provider
.Essa anotação faz com que o Google Distributed Cloud adicione uma flag do kubelet
cloud-provider=external
Em seguida, o kubelet adiciona manchas
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
aos nós do cluster
Essa configuração permite que você e o OpenStack sejam proprietários dos processos init do nó. Por exemplo, é possível implantar o Google Distributed Cloud no OpenStack para provisionar automaticamente os recursos do OpenStack Load Balancing como serviço (LBaaS) ou para usar outros recursos do OpenStack. Os recursos do LBaaS podem substituir os recursos do MetalLB para expor serviços em execução nos clusters do Google Distributed Cloud para outros locatários do OpenStack ou fora da rede do OpenStack. Para mais informações sobre os recursos e benefícios do OpenStack, consulte a documentação do OpenStack.
Exemplos relacionados
Neste documento, abordamos apenas como configurar seu cluster para uso com o OpenStack. Os guias a seguir orientam você em um exemplo de implantação:
Em Implantar um cluster do Google Distributed Cloud no OpenStack, você verá um exemplo de implantação de um cluster híbrido do Google Distributed Cloud em máquinas virtuais (VMs) do OpenStack. A implantação usa um script para simplificar a instalação. O guia também mostra uma maneira de ativar o balanceamento de carga como serviço (LBaaS, na sigla em inglês).
O guia Configurar o provedor de nuvem do OpenStack para Kubernetes mostra como instalar o provedor de nuvem do OpenStack em um cluster do Google Distributed Cloud implantado no OpenStack. O provedor de nuvem do OpenStack não é necessário para usar o Google Distributed Cloud com o OpenStack.
Antes de começar
Decida quais clusters do GKE precisam usar os recursos do LBaaS do OpenStack.
Depois de criar um cluster configurado para usar os recursos do OpenStack LBaaS, não é possível alterar a configuração para alternar para os recursos do MetalLB. Inicialize os clusters com a configuração correta do provedor de nuvem.
Verifique se você tem acesso às máquinas que está tentando configurar.
Saiba mais sobre como executar o cloud-controller-manager na documentação do Kubernetes.
Alterar o arquivo de configuração do cluster
O provedor de nuvem do OpenStack Kubernetes requer que kubelet
seja executado em todos os
nós com o seguinte argumento:
cloud-provider: "external"
Para garantir que o cluster do GKE atenda a esse requisito, adicione a anotação baremetal.cluster.gke.io/external-cloud-provider: "true"
ao arquivo de configuração do cluster na seção de metadados antes de criar o cluster.
A entrada no seu arquivo de configuração deve ser como esta:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
...
Alguns provedores de nuvem em outras plataformas de nuvem exigem um formato especial para
providerID
. O Google Distributed Cloud gera um providerID
com um formato como
baremetal://MACHINE_ADDRESS
para cada máquina de nó. Se você
quiser ter um providerID
diferente, especifique um para cada nó junto
com o endereço IP.
O arquivo de configuração de cluster de exemplo a seguir mostra como especificar
providerID
para os nós do cluster:
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
Crie o cluster
Depois de editar o arquivo de configuração, use o seguinte comando para inicializar o cluster:
bmctl create cluster -c cluster1
Para mais informações sobre a criação de clusters, consulte Visão geral da criação de clusters.
Configuração de nós
Quando você cria um cluster configurado para o OpenStack, os nós do cluster têm as seguintes alterações:
Todos os nós em
cluster1
são executados com o argumento necessário:cloud-provider: "external"
.Todos os nós também têm o seguinte taint nos arquivos de configuração:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
Esses taints são removidos depois que você inicializa seu provedor de nuvem no cluster.
kubelet
é executado com oproviderID
especificado no arquivo de configuração do cluster.