Administra la capacidad de los nodos con Terraform
En esta página, se describe cómo expandir o reducir la capacidad del clúster en la solución de VMware en Google Cloud agregando nodos de ESXi de Bare Metal o borrando nodos de ESXi de Bare Metal de un clúster existente con los módulos de automatización de Terraform de extremo a extremo (E2E).
Expandir la capacidad del clúster
Para expandir un clúster existente de X nodos a X + N nodos, usa el mismo
espacio de trabajo de Terraform y el archivo de estado (terraform.tfstate) que usaste durante
la implementación inicial del clúster.
En los siguientes pasos, se muestra cómo agregar un quinto nodo (vcf-mgmt-sample-node-5) a un
clúster de administración de cuatro nodos (según la configuración de muestra en el
archivo e2e-terraform/sample_management_cluster.tfvars):
Actualiza tu archivo de definiciones de variables (
management_cluster.tfvars): Actualiza las variables de configuración en tu archivomanagement_cluster.tfvarsde la siguiente manera:- Establece la variable
deployment_modecomo"node_addition". - Actualiza la variable
number_of_nodesde4a5. - Agrega
"vcf-mgmt-sample-node-5"a la listanode_namessi especificastenode_namesde forma explícita durante la creación del clúster. Deja vacía la listanode_namessi no la especificaste inicialmente. - Agrega direcciones IPv4 nuevas a las listas
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valuesyadditional_dynamic_nicssi especificaste estas variables de forma explícita durante la creación del clúster. Si dejaste estas listas vacías para la asignación automática, no las actualices. - Actualiza la lista
availability_domains(por ejemplo,[1, 2, 3, 4, 5]) si especificaste de forma explícita esta variable durante la creación del clúster. Si lo dejaste vacío, no lo actualices.
deployment_mode = "node_addition" number_of_nodes = 5 node_names = [ "vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2", "vcf-mgmt-sample-node-3", "vcf-mgmt-sample-node-4", "vcf-mgmt-sample-node-5" # New node ] mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.5", "10.200.0.6", "10.200.0.7"] vsan_ip_values = ["10.200.1.3", "10.200.1.4", "10.200.1.5", "10.200.1.6", "10.200.1.7"] vmotion_ip_values = ["10.200.2.3", "10.200.2.4", "10.200.2.5", "10.200.2.6", "10.200.2.7"] nsx_tep_ip_values = ["10.200.3.3", "10.200.3.4", "10.200.3.5", "10.200.3.6", "10.200.3.7"] additional_dynamic_nics = [ { name = "additional-nic-1" subnet_name = "vcf-mgmt-sample-additional-subnet-1" vlan_id = 210 ip_address_type = "reserved_custom" ip_values = ["10.200.4.3", "10.200.4.4", "10.200.4.5", "10.200.4.6", "10.200.4.7"] } ] availability_domains = [1, 2, 3, 4, 5]- Establece la variable
Genera y aplica el plan de ejecución de Terraform:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplanConecta los nodos nuevos a los grupos de extremos de red (NEG): Recupera y ejecuta los comandos
gcloud compute network-endpoint-groups updategenerados desde el resultado de Terraformneg_attachment_commandspara conectar las instancias nuevas a los NEG de administración y NSX:# View attachment commands from Terraform outputs terraform output neg_attachment_commands # Run the generated commands to attach the new instance to the Management and NSX NEGs gcloud compute network-endpoint-groups update vcf-mgmt-sample-neg \ --zone='ZONE' \ --project='PROJECT_ID' \ --add-endpoint='instance=vcf-mgmt-sample-node-5' gcloud compute network-endpoint-groups update vcf-mgmt-sample-nsx-neg \ --zone='ZONE' \ --project='PROJECT_ID' \ --add-endpoint='instance=vcf-mgmt-sample-node-5'
Antes de ejecutar los comandos, reemplaza lo siguiente:
ZONE: Es la zona de Google Cloud en la que reside el clúster.PROJECT_ID: Es el ID de tu proyecto de Google Cloud de destino.
Comportamiento esperado
Cuando aplicas la configuración de node_addition, Terraform realiza las
siguientes operaciones no disruptivas:
- Aprovisiona solo la nueva instancia de ESXi de equipos físicos (
vcf-mgmt-sample-node-5) y reserva sus direcciones IPv4 internas asociadas. - Genera el resultado
neg_attachment_commandspara que puedas adjuntar las instancias nuevas a los NEG zonales de administración y NSX existentes. - Registra los registros DNS de Cloud DNS de reenvío (
A) y reversos (PTR) para el nodo nuevo. - Deja sin interrupciones todos los nodos en ejecución, los balanceadores de cargas y las configuraciones de red existentes.
¿Qué sigue?
Después de expandir la capacidad del clúster, completa los siguientes pasos:
- Ejecuta la secuencia de comandos del kit de herramientas (
python3 -m vcf_deployer.main --config config.json) como se describe en Prepara los nodos y, luego, implementa VCF con el kit de herramientas para restablecer la contraseña inicial de ESXirooten cada host nuevo y, luego, inicializa los nodos de ESXi nuevos para agregar el clúster. Omite el objetovcf_deployment_configen el archivoconfig.json. - Pon en marcha y agrega el nodo preparado a tu clúster de VMware Cloud Foundation (VCF) 9.x con la IU o las APIs de VMware.
Reduce la capacidad del clúster
Para reducir un clúster existente de X nodos a X - N nodos, usa el mismo
espacio de trabajo y archivo de estado de Terraform (terraform.tfstate) que usaste durante
la implementación inicial del clúster.
En los siguientes pasos, se muestra cómo borrar el tercer nodo (vcf-mgmt-sample-node-3)
del clúster de administración de cinco nodos que se describe en
Expande la capacidad del clúster:
Quita el nodo del clúster de VCF: Quita el host ESXi de destino de tu clúster de VCF 9.x y retíralo con VMware SDDC Manager. Para obtener más información, consulta Retira hosts de la documentación de VMware Cloud Foundation.
Si corresponde, inhabilita la protección contra eliminaciones en el nodo: Terraform no puede borrar una instancia que tenga habilitada la protección contra eliminaciones. Si la protección contra eliminaciones no está habilitada en los nodos que quieres borrar, omite este paso. De lo contrario, inhabilita la protección contra la eliminación en cada nodo que desees borrar:
gcloud compute instances update vcf-mgmt-sample-node-3 \ --zone='ZONE' \ --project='PROJECT_ID' \ --no-deletion-protection
Antes de ejecutar el comando, reemplaza lo siguiente:
ZONE: Es la zona de Google Cloud en la que reside el clúster.PROJECT_ID: Es el ID de tu proyecto de Google Cloud de destino.
Para inhabilitar la protección contra eliminaciones con la consola de Google Cloud , consulta Retira y borra nodos.
Actualiza tu archivo de definiciones de variables (
management_cluster.tfvars): Actualiza las variables de configuración en tu archivomanagement_cluster.tfvarsde la siguiente manera:- Establece la variable
deployment_modecomo"node_deletion". - Actualiza la variable
number_of_nodesde5a4. - Especifica la lista
node_namescon los nombres de los nodos restantes y quita"vcf-mgmt-sample-node-3"de la lista. - Quita las direcciones IPv4 del nodo borrado de las listas
mgmt_nic_ip_values,vsan_ip_values,vmotion_ip_values,nsx_tep_ip_valuesyadditional_dynamic_nicssi especificaste estas variables de forma explícita durante la creación del clúster. - Especifica la lista
availability_domainscon el dominio de disponibilidad de cada nodo restante (por ejemplo,[1, 2, 4, 5]).
En el modo
node_deletion, siempre debes especificar de forma explícita las listasnode_namesyavailability_domains, incluso si no las especificaste durante la creación del clúster o cualquier operación anterior de Terraform en el clúster (por ejemplo, si los nombres de los nodos se generaron de forma automática). Especificar estas listas garantiza que Terraform borre solo el nodo previsto. Asegúrate de que cada entrada coincida con el nombre y el dominio de disponibilidad del nodo restante correspondiente.deployment_mode = "node_deletion" number_of_nodes = 4 # Always required in node_deletion mode node_names = [ "vcf-mgmt-sample-node-1", "vcf-mgmt-sample-node-2", # "vcf-mgmt-sample-node-3" removed "vcf-mgmt-sample-node-4", "vcf-mgmt-sample-node-5" ] mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.6", "10.200.0.7"] vsan_ip_values = ["10.200.1.3", "10.200.1.4", "10.200.1.6", "10.200.1.7"] vmotion_ip_values = ["10.200.2.3", "10.200.2.4", "10.200.2.6", "10.200.2.7"] nsx_tep_ip_values = ["10.200.3.3", "10.200.3.4", "10.200.3.6", "10.200.3.7"] additional_dynamic_nics = [ { name = "additional-nic-1" subnet_name = "vcf-mgmt-sample-additional-subnet-1" vlan_id = 210 ip_address_type = "reserved_custom" ip_values = ["10.200.4.3", "10.200.4.4", "10.200.4.6", "10.200.4.7"] } ] # Always required in node_deletion mode availability_domains = [1, 2, 4, 5]- Establece la variable
Genera y aplica el plan de ejecución de Terraform: Revisa el resultado del plan para verificar que Terraform destruya solo los recursos del nodo que deseas borrar y, luego, aplica el plan:
terraform plan -var-file='management_cluster.tfvars' -out=tfplan terraform apply tfplan
Comportamiento esperado
Cuando aplicas la configuración de node_deletion, Terraform realiza las
siguientes operaciones:
- Borra solo la instancia de ESXi de Bare Metal de destino
(
vcf-mgmt-sample-node-3) y su disco de arranque. - Quita la instancia borrada de los NEG zonales de administración y NSX.
- Libera las direcciones IPv4 internas reservadas del nodo borrado.
- Borra los registros de Cloud DNS de reenvío (
A) y reversos (PTR) del nodo borrado. - Deja todos los nodos, balanceadores de cargas y parámetros de configuración de red restantes sin interrupciones.