Os clusters do Anthos em bare metal são compatíveis com o provedor de nuvem do OpenStack Kubernetes. Use esse recurso para provisionar automaticamente os recursos de balanceamento de carga como serviço (LBaaS, na sigla em inglês) do OpenStack. Eles podem substituir os recursos do MetaLBC para expor facilmente os serviços executados nos clusters do Anthos em bare metal para outros locatários do OpenStack ou fora da rede do OpenStack.
Antes de começar
Decida os clusters do Anthos que precisam usar recursos de LBaaS do OpenStack.
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 dos clusters
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 seus clusters do Anthos atendam facilmente a esse requisito, adicione a
anotação baremetal.cluster.gke.io/external-cloud-provider: "true"
ao
arquivo de configuração dos clusters na seção de metadados antes de
inicializá-los.
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
. Os clusters do Anthos em Bare Metal geram um providerID
para cada
máquina. O formato é como baremetal://MACHINE_ADDRESS
. Se quiser ter um providerID
diferente, especifique um para cada nó junto com o endereço IP. A configuração terá esta aparência:
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-admin1
spec:
clusterName: admin1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
Depois de editar o arquivo de configuração, use o seguinte comando para inicializar o cluster:
bmctl create cluster -c cluster1
Agora, 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 os seguintes campos adicionados aos arquivos de configuração:
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Esses campos são removidos depois que você inicializa o provedor de nuvem nesse cluster.
kubelet
será executado com o providerID
fornecido se você tiver especificado um para este nó.