Você pode dimensionar um cluster TKG horizontalmente alterando o número de nós ou verticalmente alterando a classe de máquina virtual que hospeda os nós. Você também pode dimensionar volumes persistentes. Algumas limitações podem ser aplicadas.
Operações de dimensionamento compatíveis
Nó | Redimensionamento horizontal | Redimensionamento horizontal | Escala vertical | Escala de Volume |
---|---|---|---|---|
Plano de Controle | Sim | Não | Sim | Não |
Trabalhador | Sim | Sim | Sim | Sim |
- O número de nós do plano de controle deve ser ímpar, 1 ou 3. Não há suporte para dimensionamento no plano de controle.
- Ao dimensionar verticalmente um nó de cluster, as cargas de trabalho podem não ser mais capazes de ser executadas no nó por falta de recursos disponíveis. Por esse motivo, o dimensionamento horizontal pode ser a abordagem preferida.
- As classes de VM não são imutáveis. Se você dimensionar horizontalmente um cluster TKG após editar uma classe de VM usada por esse cluster, os novos nós de cluster usarão a definição de classe atualizada, mas os nós de cluster existentes continuarão a usar a definição de classe inicial, resultando em uma incompatibilidade.
- Os volumes do nó do trabalhador podem ser alterados após o provisionamento; os volumes de nó do plano de controle não podem.
Pré-requisito de dimensionamento: configurar a edição Kubectl
Para dimensionar um cluster TKG, atualize o manifesto do cluster usando o comando kubectl edit CLUSTER-KIND/CLUSTER-NAME
. Quando você salva as alterações do manifesto, o cluster é atualizado com as alterações. Consulte Configurar um editor de texto para Kubectl.
kubectl edit tanzukubernetescluster/tkg-cluster-1 tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
kubectl edit tanzukubernetescluster/tkg-cluster-1 Edit cancelled, no changes made.
Dimensionar horizontalmente o plano de controle
- Faça login em Supervisor.
kubectl vsphere login --server=SUPERVISOR-IP-ADDRESS --vsphere-username USERNAME
- Alterne o contexto para o vSphere Namespace em que o cluster TKG está em execução.
kubectl config use-context tkg-cluster-ns
- Liste os clusters Kubernetes em execução no vSphere Namespace.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Por exemplo:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- Obtenha o número de nós em execução no cluster de destino.
kubectl get tanzukubernetescluster tkg-cluster-1
Por exemplo, o cluster TKG tem 1 nós do plano de controle e 3 nós do trabalhador.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 1 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- Carregue o manifesto do cluster para edição usando o comando
kubectl edit
.kubectl edit tanzukubernetescluster/tkg-cluster-1
O manifesto do cluster é aberto no editor de texto definido por suas variáveis de ambiente KUBE_EDITOR ou EDITOR.
- Aumente o número de nós do plano de controle de 1 para 3 na seção
spec.topology.controlPlane.replicas
do manifesto.Por exemplo:... spec: topology: controlPlane: replicas: 1 ...
... spec: topology: controlPlane: replicas: 3 ...
- Para aplicar as alterações, salve o arquivo no editor de texto. Para cancelar, feche o editor sem salvar.
Quando você salva as alterações do manifesto, kubectl aplica as alterações ao cluster. Em segundo plano, o Virtual Machine Service em Supervisor provisiona o novo nó do trabalhador.
- Verifique se os novos nós foram adicionados.
kubectl get tanzukubernetescluster tkg-cluster-1
O plano de controle dimensionado horizontalmente agora tem 3 nós.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
Nós de trabalho do Scale Out
É possível dimensionar horizontalmente um cluster do TKG 2 aumentando o número de nós do trabalhador.
- Faça login em Supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Alterne o contexto para o vSphere Namespace em que o cluster TKG está em execução.
kubectl config use-context tkg-cluster-ns
- Liste os clusters Kubernetes em execução no vSphere Namespace.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Por exemplo:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- Obtenha o número de nós em execução no cluster de destino.
kubectl get tanzukubernetescluster tkg-cluster-1
Por exemplo, o cluster a seguir tem 3 nós do plano de controle e 3 nós de trabalhador.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- Carregue o manifesto do cluster para edição usando o comando
kubectl edit
.kubectl edit tanzukubernetescluster/tkg-cluster-1
O manifesto do cluster é aberto no editor de texto definido por suas variáveis de ambiente KUBE_EDITOR ou EDITOR.
- Aumente o número de nós do trabalhador editando o valor
spec.topology.nodePools.NAME.replicas
para o pool de nós do trabalhador de destino.Por exemplo:... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
- Para aplicar as alterações, salve o arquivo no editor de texto. Para cancelar as alterações, feche o editor sem salvar.
Quando você salva o arquivo, kubectl aplica as alterações ao cluster. Em segundo plano, o Virtual Machine Service em Supervisor provisiona o novo nó do trabalhador.
- Verifique se o novo nó do trabalhador foi adicionado.
kubectl get tanzukubernetescluster tkg-cluster-1
Após a expansão, o cluster tem 4 nós do trabalhador.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
Dimensionar nós de trabalhador
Você pode dimensionar em um cluster do TKG 2 diminuindo o número de nós do trabalhador.
- Faça login em Supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Alterne o contexto para o vSphere Namespace em que o cluster TKG está em execução.
kubectl config use-context tkg-cluster-ns
- Liste os clusters Kubernetes em execução no vSphere Namespace.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Por exemplo:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- Obtenha o número de nós em execução no cluster de destino.
kubectl get tanzukubernetescluster tkg-cluster-1
Por exemplo, o cluster a seguir tem 3 nós do plano de controle e 4 nós do trabalhador.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
- Carregue o manifesto do cluster para edição usando o comando
kubectl edit
.kubectl edit tanzukubernetescluster/tkg-cluster-1
O manifesto do cluster é aberto no editor de texto definido por suas variáveis de ambiente KUBE_EDITOR ou EDITOR.
- Diminua o número de nós do trabalhador editando o valor
spec.topology.nodePools.NAME.replicas
para o pool de nós do trabalhador de destino.Por exemplo:... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
- Para aplicar as alterações, salve o arquivo no editor de texto. Para cancelar as alterações, feche o editor sem salvar.
Quando você salva o arquivo, kubectl aplica as alterações ao cluster. Em segundo plano, o Virtual Machine Service em Supervisor provisiona o novo nó do trabalhador.
- Verifique se os nós do trabalhador foram removidos.
kubectl get tanzukubernetescluster tkg-cluster-1
Após a redução, o cluster tem 3 nós do trabalhador.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
Dimensionar um cluster verticalmente
O TKG 2 em Supervisor é compatível com o dimensionamento vertical para o plano de controle do cluster e os nós do trabalhador. Você dimensiona um cluster TKG verticalmente alterando a classe de máquina virtual usada para nós de cluster. A classe de VM que você usa deve estar associada ao vSphere Namespace em que o cluster TKG é provisionado.
O TKG 2 em Supervisor é compatível com o dimensionamento vertical por meio do mecanismo de atualização sem interrupção integrado ao sistema. Quando você altera a definição VirtualMachineClass
, o sistema implementa novos nós com essa nova classe e desativa os nós antigos. Consulte Mantendo clusters do TKG 2 em Supervisor.
- Faça login em Supervisor.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Alterne o contexto para o vSphere Namespace em que o cluster TKG está em execução.
kubectl config use-context tkg-cluster-ns
- Liste os clusters Kubernetes em execução no vSphere Namespace.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Por exemplo:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- Descreva o cluster TKG de destino e verifique a classe da VM.
kubectl describe tanzukubernetescluster tkg-cluster-1
Por exemplo, o cluster a seguir está usando a classe de VM de melhor esforço médio.
spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-medium ...
- Liste e descreva as classes de VM disponíveis.
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
Observação: A classe de VM deve estar associada ao vSphere Namespace. Consulte Usando classes de máquina virtual com clusters TKG 2 em Supervisor. - Abra para editar o manifesto do cluster de destino.
kubectl edit tanzukubernetescluster/tkg-cluster-1
O manifesto do cluster é aberto no editor de texto definido por suas variáveis de ambiente KUBE_EDITOR ou EDITOR.
- Edite o manifesto alterando a classe da VM.
Por exemplo, o cluster usa a classe de VM
para o plano de controle e os nós do trabalhador.best-effort-xsmall
spec: topology: controlPlane: replicas: 3 vmClass: best-effort-xsmall ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: best-effort-xsmall ...
Altere a classe de VM para o plano de controle paraguaranteed-large
e a classe de VM para nós de trabalhador paraguaranteed-2xlarge
.spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-large ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-2xlarge ...
- Para aplicar as alterações, salve o arquivo no editor de texto. Para cancelar as alterações, feche o editor sem salvar.
Quando você salva o arquivo, kubectl aplica as alterações ao cluster. Em segundo plano, o TKG em Supervisor executa uma atualização sem interrupção do cluster do TKG.
- Verifique se o cluster TKG está atualizado com a nova classe de VM.
kubectl describe tanzukubernetescluster tkg-cluster-1
Dimensionar volumes de nós de cluster do TKG
Na especificação de cluster do TKG para nós, opcionalmente, você pode declarar um ou mais volumes persistentes para o nó. Declarar um volume de nó é útil para componentes de alta rotatividade, como o banco de dados ectd no plano de controle e o tempo de execução do contêiner e o kubelet nos nós do trabalhador.
Nó de volume | Descrição |
---|---|
As alterações de volume do nó do trabalhador são permitidas |
Depois que um cluster TKG é provisionado, você pode adicionar ou atualizar volumes de nós do trabalhador. Quando você inicia uma atualização sem interrupção, o cluster é atualizado com o volume novo ou alterado.
Aviso: Se você dimensionar o nó do trabalhador com um volume novo ou alterado, os dados no volume atual serão excluídos durante a atualização sem interrupção. Consulte a explicação a seguir.
Um volume declarado para um nó de cluster TKG é tratado como efêmero. Um cluster TKG usa uma declaração de volume persistente (PVC) no namespace vSphere para que a capacidade do volume seja contabilizada na cota de armazenamento do cluster TKG. Se você aumentar a capacidade de um volume de TKC, a Kubernetes Cluster API (CAPI) implementará novos workers com um novo PVC. A TKG não realiza nenhuma migração de dados nesse caso, mas o Kubernetes (re)agendará os pods de carga de trabalho adequadamente. |
Não são permitidas alterações de volume do nó do plano de controle |
Depois que um cluster TKG é provisionado, não é possível adicionar ou atualizar um volume de nó do plano de controle. A Kubernetes Cluster API (CAPI) proíbe alterações pós-criação em Se você tentar adicionar ou alterar um volume do plano de controle após a criação do cluster, a solicitação será negada e você receberá a mensagem de erro "atualizações para campos imutáveis não são permitidas". |
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster ... spec: topology: controlPlane: replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.22.8---vmware.1-tkg.2-zshippable volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi nodePools: - name: worker-nodepool-a1 replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-large tkr: reference: name: v1.23.8---vmware.2-tkg.2-zshippable volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 50Gi - name: kubelet mountPath: /var/lib/kubelet capacity: storage: 50Gi - name: worker-nodepool-a2 ... settings: ...
Dimensionando nós de trabalhador de cluster do TKG usando a CLI Tanzu
tanzu cluster scale CLUSTER-NAME -p POOL-NAME -w REPLICAS -n VSPHERE-NAMESPACE
CLUSTER-NAME
é o nome do cluster TKG que você está direcionando para dimensionarPOOL-NAME
é o nome do pool de nós do trabalhador que você está direcionandoREPLICAS
é o número de destino de nós do trabalhador (inteiro)VSPHERE-NAMESPACE
é o vSphere Namespace em que o cluster TKG de destino é provisionado
tanzu cluster scale tkg2-cluster-1 -p node-pool-1 -w 3 -n tkg-cluster-ns