google-container-engine google-kubernetes-engine

google container engine - Cambiar el tamaño de los tipos de instancia en el clúster de motor de contenedor



gcloud kubectl (5)

pasar de instancias GCE n1-standard-2 a n1-highmem-8 para ejecutar contenedores con más de 8 GB de RAM?

Kubernetes 1.12 (septiembre de 2018) debería proporcionar una forma oficial de administrar su recurso existente con el problema 21 de Kubernetes "Escalado vertical de pods" (o " VPA ": Autoescalador de pod vertical ").

Como se anunció en el blog :

El escalado vertical de pods ahora está en beta, lo que hace posible variar los límites de recursos en un pod durante su vida útil. En particular, esto es valioso para las mascotas (es decir, las vainas que son muy costosas de destruir y recrear).

Warning :

Esto está aterrizando alrededor de 1.12, sin embargo, es un lanzamiento de un complemento independiente. No está incluido en la versión 1.12 Kubernetes.
Sig-Architecture, al comienzo de este ciclo, decidió mantener la API de VPA como CRD y, por lo tanto, no vincularla a ninguna versión particular de K8S.

Ver más en:

El último artículo de BanzaiCloud está un poco anticuado (algunos enlaces ya no son válidos), pero aún ilustra cómo puede administrar sus recursos de pod.

Algunos de nuestros contenedores funcionan mejor con memoria por encima del tipo de instancia implementado actualmente en nuestro clúster Container Engine. ¿Existe una práctica recomendada para reconstruir la plantilla del motor del contenedor para instancias más grandes después de que se haya creado el clúster del motor del contenedor?

Por ejemplo, ¿pasar de instancias GCE n1-standard-2 a n1-highmem-8 para ejecutar contenedores con más de 8 GB de RAM?


Container Engine no tiene actualmente una API para hacer esto, pero dado que usa un grupo de instancias de Compute Engine para los nodos en su clúster, en realidad puede actualizarlo sin necesidad de la ayuda de GKE. En la Consola de desarrolladores, copie la plantilla de instancia que se parece a "gke--" y modifique el tipo de máquina en ella, luego edite el grupo de instancias con un nombre similar para usar la nueva plantilla. Puede encontrar estas opciones en Compute > Compute Engine > Instance templates y Compute > Compute Engine > Instance groups , respectivamente.


Hay un tutorial oficial de GKE para esto:

Migrar cargas de trabajo a diferentes tipos de máquinas
" Este tutorial demuestra cómo migrar las cargas de trabajo que se ejecutan en un clúster GKE a un nuevo conjunto de nodos dentro del mismo clúster sin incurrir en tiempo de inactividad para su aplicación. Tal migración puede ser útil si desea migrar sus cargas de trabajo a nodos con un tipo de máquina diferente " .

https://cloud.google.com/kubernetes-engine/docs/tutorials/migrating-node-pool


Un enfoque diferente sería:

(1) para crear un nuevo grupo de nodos para el clúster GKE con tipos de máquinas escaladas verticalmente ...

$ gcloud container node-pools create pool-n1std2 --zone europe-west1-d --cluster prod-cluster-1 --machine-type n1-standard-2 --image-type gci --disk-size=250 --num-nodes 3

(2) luego, migre las cargas de trabajo de los nodos antiguos ...

$ kubectl drain gke-prod-cluster-1-default-pool-f1eabad5-9ml5 --delete-local-data --force

(3) y finalmente, para eliminar el antiguo grupo de nodos

$ gcloud container node-pools delete default-pool --cluster=prod-cluster-1

Notas:

  • Advertencia: ¡El paso 2 elimina los volúmenes locales de nodo como emptyDir !
  • El paso 2 debe repetirse para cada nodo en el grupo
  • En lugar de drenar los nodos, uno podría configurar un nodeSelector adecuado para programar los pods en el nuevo grupo. La etiqueta con la que se compararía sería cloud.google.com/gke-nodepool: pool-n1std2