Depois de criar um cluster com bmctl
, é possível atualizar os recursos personalizados desse cluster. Por exemplo, é possível adicionar ou remover nós em um pool. O
arquivo de configuração é armazenado como bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
,
a menos que você tenha especificado um local diferente.
Neste documento, mostramos quais opções de configuração de cluster podem ser atualizadas depois da criação de um cluster, por exemplo, para adicionar ou remover nós.
Adicionar ou remover nós de um cluster
Nos clusters do Anthos em bare metal, você adiciona ou remove nós em um cluster
editando as definições do pool de nós do cluster. Use o endereço IP dos nós para
adicioná-los ou removê-los de um pool de nós. Use o comando bmctl
para mudar
essas definições.
Há três tipos de pools de nós nos clusters do Anthos em bare metal: plano de controle, balanceador de carga e pools de nós de trabalho.
Visualizar status do nó
Também é possível ver o status dos nós e os respectivos pools com o comando kubectl get
.
Por exemplo, o comando a seguir mostra o status dos pools de nós no namespace do cluster my-cluster
:
kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
O sistema retorna resultados semelhantes aos seguintes:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
my-cluster 3 0 0 0 0
my-cluster-lb 2 0 0 0 0
np1 3 0 0 0 0
Se você precisar de mais informações sobre como diagnosticar clusters, consulte Criar snapshots para diagnosticar clusters.
Alterar nós
A maioria das alterações de nó é especificada no arquivo de configuração do cluster, que depois é
aplicado ao cluster. Recomendamos que você use o arquivo de configuração do cluster como a
principal origem para atualizar o cluster É uma prática recomendada armazenar o
arquivo de configuração em um sistema de controle de versões que rastreie as alterações para fins de
solução de problemas. Para todos os tipos de cluster, use o comando bmctl update
para atualizar
o cluster com as alterações de nó.
Os clusters do Anthos no arquivo de configuração do cluster bare metal incluem uma seção de
cabeçalho com informações de credenciais. As entradas de credenciais e o restante do
arquivo de configuração são YAML válidos, mas as entradas de credenciais não são válidas para o
recurso do cluster. Use bmctl update credentials
para atualizações de credenciais.
Quando você remove nós de um cluster, eles são drenados primeiro para qualquer pod. Os nós não serão removidos do cluster se não for possível reprogramar os pods em outros nós. O comando bmctl update
analisará o arquivo de configuração do cluster e aplicará recursos personalizados com base no resultado analisado.
Veja uma configuração de amostra com dois nós:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
- address: 172.18.0.6
É possível remover um nó do pool de nós excluindo a entrada de endereço IP dele:
---
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: nodepool1
namespace: cluster-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.5
Para atualizar o cluster, execute o seguinte comando para os clusters autogerenciados, como clusters de administrador e autônomos:
bmctl update cluster -c CLUSTER_NAME \
--kubeconfig=KUBECONFIG
Depois que o comando bmctl update
for executado, levará algum tempo para
que os pods machine-init
ou machine-reset
sejam concluídos.
As seções a seguir descrevem algumas diferenças importantes para atualizar tipos de nós específicos.
Nós do plano de controle e do balanceador de carga
As especificações do pool de nós do plano de controle e do balanceador de carga para clusters do Anthos em bare metal são especiais. Essas especificações declaram e controlam os recursos essenciais do cluster. A fonte canônica desses recursos é a respectiva seção no arquivo de configuração do cluster.
spec.controlPlane.nodePoolSpec
spec.LoadBalancer.nodePoolSpec
Para adicionar ou remover nós do plano de controle ou do balanceador de carga, edite a matriz de
endereços em nodes
na seção correspondente do
arquivo de configuração do cluster.
Em uma configuração de alta disponibilidade (HA, na sigla em inglês), é necessário um número ímpar de pools de nós do plano de controle (três ou mais) para estabelecer um quórum. Assim, se um plano de controle falhar, outros assumirão o controle. Se você tiver um número par de nós temporariamente durante a adição ou remoção de nós para manutenção ou substituição, sua implantação manterá a alta disponibilidade, desde que você tenha quórum suficiente.
Nós de trabalho
É possível adicionar ou remover nós de trabalho diretamente com o comando bmctl
. Os pools de nós de trabalho precisam ter pelo menos um nó pretendido. No entanto, se você quiser remover
todo o pool de nós, use o comando kubectl
. No exemplo a seguir, o comando exclui um pool de nós chamado np1
, em que
a variável do namespace do cluster é my-cluster
:
kubectl -n my-cluster delete nodepool np1
Outros campos mutáveis
Além de adicionar e remover nós, também é possível usar o comando bmctl update
para modificar determinados elementos da configuração do cluster. Normalmente, para atualizar
o recurso do cluster, você edita a versão local do arquivo
de configuração do cluster e usa bmctl update
para aplicar as alterações. O comando bmctl update
é
semelhante ao comando kubectl apply
.
Veja nas seções a seguir alguns exemplos comuns de como atualizar um cluster atual alterando um valor de campo ou modificando um recurso personalizado relacionado.
loadBalancer.addressPools
A seção
addressPools
contém campos para especificar pools de balanceamento de carga para balanceadores
de carga em pacote. É possível adicionar mais pools de endereços de balanceamento de carga a qualquer momento, mas
não é possível remover ou modificar pools de endereços existentes.
addressPools:
- name: pool1
addresses:
- 192.168.1.0-192.168.1.4
- 192.168.1.240/28
- name: pool2
addresses:
- 192.168.1.224/28
bypassPreflightCheck
O valor padrão do
campo bypassPreflightCheck
é false
. Se você definir esse campo como true
no arquivo
de configuração do cluster, as verificações de simulação internas serão ignoradas para aplicar recursos aos clusters
atuais.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
bypassPreflightCheck: true
loginUser
Defina o campo loginUser
na configuração de acesso do nó. Este campo suporta o recurso sudo
sem senha para login na máquina.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/private-mode: "true"
spec:
nodeAccess:
loginUser: abm
NetworkGatewayGroup
O recurso personalizado NetworkGatewayGroup
é usado para fornecer endereços
IP flutuantes para recursos de rede avançados, como o
gateway NAT de saída ou o
recurso de balanceamento de carga em pacote com o BGP.
Para usar o recurso personalizado NetworkGatewayGroup
e os recursos de rede
relacionados, defina
clusterNetwork.advancedNetworking
como true
ao criar os clusters.
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
BGPLoadBalancer
Quando você configura balanceadores de carga em pacote com o BGP, o balanceamento de carga
do plano de dados usa, por padrão, os mesmos pares externos especificados para
o peering do plano de controle. Como alternativa, é possível configurar o balanceamento
de carga do plano de dados separadamente usando o recurso personalizado BGPLoadBalancer
(e o
recurso personalizado BGPPeer
). Para mais informações, consulte
Configurar balanceadores de carga em pacote com o BGP.
apiVersion: networking.gke.io/v1
kind: BGPLoadBalancer
metadata:
name: default
namespace: cluster-bm
spec:
peerSelector:
cluster.baremetal.gke.io/default-peer: "true"
BGPPeer
Quando você configura balanceadores de carga em pacote com o BGP, o balanceamento de carga
do plano de dados usa, por padrão, os mesmos pares externos especificados para
o peering do plano de controle. Como alternativa, é possível configurar o balanceamento
de carga do plano de dados separadamente usando o recurso personalizado BGPPeer
(e o
recurso personalizado BGPLoadBalancer
). Para mais informações, consulte
Configurar balanceadores de carga em pacote com o BGP.
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
cluster.baremetal.gke.io/default-peer: "true"
spec:
localASN: 65001
peerASN: 65002
peerIP: 10.0.3.254
sessions: 2
NetworkAttachmentDefinition
É possível usar o comando bmctl update
para modificar
recursos personalizados NetworkAttachmentDefinition
que correspondam à rede.
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: gke-network-1
namespace: cluster-my-cluster
spec:
config: '{
"type": "ipvlan",
"master": "enp2342",
"mode": "l2",
"ipam": {
"type": "whereabouts",
"range": "172.120.0.0/24"
Depois de modificar o arquivo de configuração, atualize o cluster executando o comando bmctl update
. Ele analisará o arquivo de configuração do cluster e aplicará recursos
personalizados com base no resultado analisado.
Para os clusters autogerenciados, como clusters administrativos e autônomos, execute:
bmctl update cluster -c CLUSTER_NAME --kubeconfig=KUBECONFIG
Para clusters de usuário, execute:
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=ADMIN_KUBECONFIG