Configurar seus clusters para usar o OpenStack

O GKE em Bare Metal é compatível com o uso do OpenStack como uma plataforma de nuvem privada. Neste guia, descrevemos como configurar um cluster do GKE em Bare Metal para trabalhar com um provedor de nuvem externo. A execução do GKE em clusters Bare Metal 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)

  • Storage

A configuração de um cluster para funcionar com o OpenStack consiste no seguinte:

  • Ao criar o cluster, adicione uma anotação baremetal.cluster.gke.io/external-cloud-provider.

  • Essa anotação faz com que o GKE em Bare Metal adicione uma sinalização 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 GKE em Bare Metal no OpenStack para provisionar automaticamente os recursos do balanceamento de carga como serviço (LBaaS) do OpenStack ou usar outros recursos do OpenStack. Os recursos do LBaaS podem substituir os recursos do MetalLB para expor os serviços em execução nos clusters do GKE em Bare Metal 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.

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 do GKE em Bare Metal no OpenStack mostra uma implantação de amostra de um cluster híbrido do GKE em Bare Metal 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).

  • Configurar o provedor de nuvem do OpenStack para Kubernetes mostra como instalar o provedor de nuvem do OpenStack em um cluster do GKE em bare metal implantado no OpenStack. O provedor de nuvem do OpenStack não precisa usar o GKE em Bare Metal com o OpenStack.

Antes de começar

  • Decida quais clusters do GKE precisam usar os recursos do OpenStack LBaaS.

    Depois de criar um cluster configurado para usar os recursos do OpenStack LBaaS, não será possível alterar a configuração para alternar para os recursos do MetalLB. Inicialize seus 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 GKE em Bare Metal 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.

No seguinte arquivo de configuração de cluster de amostra, veja 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 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 dele têm as seguintes alterações:

  • Todos os nós em cluster1 são executados com o argumento obrigatório: cloud-provider: "external".

  • Todos os nós também têm o seguinte taint adicionado aos arquivos de configuração:

    taints:
    - effect: NoSchedule
      key: node.cloudprovider.kubernetes.io/uninitialized
      value: "true"
    

    Esses taints são removidos depois que você inicializar o provedor de nuvem nesse cluster.

  • kubelet é executado com o providerID especificado no arquivo de configuração do cluster.

A seguir