A execução do software do Distributed Cloud somente para Bare Metal no OpenStack permite integrar seus clusters com a infraestrutura como serviço (IaaS), o balanceamento de carga como serviço (LBaaS) e o armazenamento do OpenStack. Configurar os clusters para um provedor de nuvem externo delega o processo de inicialização do nó ao OpenStack.
É possível provisionar automaticamente recursos LBaaS do OpenStack em vez do MetalLB para expor serviços em execução nos clusters a 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
Este documento aborda apenas como configurar seu cluster para uso com o OpenStack. Os guias a seguir mostram um exemplo de implantação:
Implantar um cluster no OpenStack mostra um exemplo de implantação de um cluster híbrido 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).
Configurar o provedor de nuvem do OpenStack para Kubernetes mostra como instalar o provedor de nuvem do OpenStack em um cluster que foi implantado no OpenStack. O provedor de nuvem do OpenStack não precisa usar o software do Google Distributed Cloud com o OpenStack.
Antes de começar
Decida quais clusters precisam usar os recursos LBaaS do OpenStack.
Depois de criar um cluster configurado para usar os recursos LBaaS do OpenStack, não é possível alterar a configuração para alternar para os recursos do MetalLB. Certifique-se de inicializar os clusters com a configuração de provedor de nuvem correta.
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 seu cluster 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 quiser
ter um providerID diferente, especifique um para cada nó junto
com o endereço IP.
O exemplo de arquivo de configuração de cluster 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, utilize o seguinte comando para inicializar o cluster:
bmctl create cluster -c cluster1
Para mais informações sobre como criar 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 mudanças:
Todos os nós em
cluster1são executados com o argumento obrigatório:cloud-provider: "external"Todos os nós também têm os seguintes taints adicionados aos arquivos de configuração:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"Esses taints são removidos depois que você inicializa o provedor de nuvem nesse cluster.
kubeleté executado com oproviderIDespecificado no arquivo de configuração do cluster.