Configure os seus clusters para usar o OpenStack

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ção

  • Esta 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 clusternode.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.

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 o providerID especificado no ficheiro de configuração do cluster.

O que se segue?