O software do Google Distributed Cloud suporta apenas a utilização do OpenStack como uma plataforma de nuvem privada. Este guia descreve como configurar um cluster para funcionar com um fornecedor de nuvem externo. A execução de uma instalação de clusters apenas de software do Google Distributed Cloud no OpenStack permite-lhe usar os seguintes serviços do OpenStack:
Infraestrutura como serviço (IaaS)
Balanceamento de carga como serviço (LBaaS)
Armazenamento
A configuração de um cluster para funcionar com o OpenStack consiste no seguinte:
Quando cria o cluster, adiciona uma
baremetal.cluster.gke.io/external-cloud-provider
anotaçãoEsta anotação faz com que o Google Distributed Cloud adicione uma flag do kubelet
cloud-provider=external
Em seguida, o kubelet adiciona contaminações aos nós do cluster
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
Esta configuração permite-lhe, bem como ao OpenStack, ter a propriedade dos processos de inicialização dos nós. Por exemplo, pode implementar o software Google Distributed Cloud no OpenStack para aprovisionar automaticamente recursos de balanceamento de carga do OpenStack como um serviço (LBaaS) ou para usar outras capacidades do OpenStack. Os recursos do LBaaS podem substituir os recursos do MetalLB para expor os serviços executados nos seus clusters a outros inquilinos do OpenStack ou fora da rede do OpenStack. Para mais informações sobre as funcionalidades e as vantagens do OpenStack, consulte a documentação do OpenStack.
Exemplos relacionados
Este documento apenas aborda a configuração do cluster para utilização com o OpenStack. Os seguintes guias explicam uma implementação de exemplo:
O artigo Implemente um cluster no OpenStack explica uma implementação de exemplo de um cluster híbrido em máquinas virtuais (VMs) do OpenStack. A implementação usa um script para simplificar a instalação. O guia também mostra uma forma de ativar o equilíbrio de carga como um serviço (LBaaS).
O artigo Configure o fornecedor de nuvem do OpenStack para o Kubernetes mostra-lhe como instalar o fornecedor de nuvem do OpenStack num cluster que foi implementado no OpenStack. O fornecedor de nuvem do OpenStack não é necessário para usar o software Google Distributed Cloud com o OpenStack.
Antes de começar
Decida que clusters têm de usar recursos do LBaaS do OpenStack.
Depois de criar um cluster configurado para usar recursos do OpenStack LBaaS, não pode alterar a configuração para mudar para recursos do MetalLB. Certifique-se de que inicializa os clusters com a configuração do fornecedor de nuvem correta.
Certifique-se de que tem acesso às máquinas que está a tentar configurar.
Saiba mais sobre a execução do cloud-controller-manager na documentação do Kubernetes.
Altere o ficheiro de configuração do cluster
O fornecedor de nuvem do OpenStack Kubernetes requer que o kubelet
seja executado em todos os nós com o seguinte argumento:
cloud-provider: "external"
Para garantir que o cluster cumpre este requisito, adicione a anotação baremetal.cluster.gke.io/external-cloud-provider: "true"
ao ficheiro de configuração do cluster na secção de metadados antes de criar o cluster.
A entrada no ficheiro de configuração deve ter o seguinte aspeto:
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 fornecedores de nuvem noutras plataformas de nuvem requerem um formato especial para a providerID
. O Google Distributed Cloud gera um providerID
com um formato semelhante a
baremetal://MACHINE_ADDRESS
para cada máquina de nó. Se quiser ter um providerID
diferente, pode especificar um para cada nó juntamente com o endereço IP.
O seguinte ficheiro de configuração de cluster de exemplo 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 seu cluster
Depois de editar o ficheiro 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 o artigo Vista geral da criação de clusters.
Configuração do nó
Quando 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 a seguinte rejeição adicionada aos respetivos ficheiros de configuração:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
Estas restrições são removidas depois de inicializar o fornecedor de nuvem neste cluster.
O
kubelet
é executado com oproviderID
especificado no ficheiro de configuração do cluster.