Tema 4 de 11
El temario pide instalar y configurar kubectl, desplegar clústeres de GKE con distintas configuraciones (Autopilot, regionales y privados) y desplegar una aplicación en contenedores. La operación diaria del clúster (grupos de nodos, autoescalado de Pods, Artifact Registry) se ve en el dominio D3.
Contenido
Plano de control
Lo gestiona siempre GKE. Ejecuta el servidor de la API de Kubernetes (kube-apiserver), el scheduler, los controladores y el almacén del estado del clúster. Corre en VM de un proyecto gestionado por Google.
Nodos
VM de Compute Engine donde se ejecutan los Pods. Los gestiona GKE en Autopilot y tú en Standard.
Todo pasa por el servidor de la API: kubectl, la consola y los propios componentes del clúster son clientes suyos. Le dices a Kubernetes el estado deseado de los objetos y Kubernetes trabaja para mantenerlo.
Cloud Shell ya trae gcloud y kubectl. En tu equipo, kubectl se instala como componente de gcloud o con apt/yum, y necesita el plugin de autenticación gke-gcloud-auth-plugin: sin él, kubectl no puede hablar con GKE.
gcloud components install kubectl gcloud components install gke-gcloud-auth-plugin kubectl version --client # Guardar las credenciales del clúster en kubeconfig gcloud container clusters get-credentials CLUSTER_NAME --location=us-central1 kubectl get namespaces
$HOME/.kube/config.get-credentials añade la entrada y cambia el contexto actual. Crear el clúster con gcloud también lo hace.--location es una región para clústeres regionales o una zona para zonales. Fija compute/region o compute/zone por defecto para no tener que indicarla siempre.kubectl config view. Cambiar de clúster: kubectl config use-context.Autopilot es el modo en el que Google gestiona nodos, escalado, seguridad y otros ajustes, y aprovisiona los recursos según tus manifiestos. Google lo recomienda para la mayoría de cargas de producción. En un clúster Standard también se pueden ejecutar cargas concretas en modo Autopilot con ComputeClasses.
| Autopilot | Standard | |
|---|---|---|
| Ubicación | Siempre regional | Regional o zonal |
| Nodos | Gestionados por GKE, que ajusta número y tamaño según los Pods | Tú creas y gestionas los grupos de nodos (opcional: cluster autoscaler, aprovisionamiento automático) |
| SO del nodo | Container-Optimized OS con containerd | Container-Optimized OS por defecto; también Ubuntu o Windows Server |
| Facturación | Por los recursos que piden los Pods | Por todos los recursos de los nodos |
| Seguridad preconfigurada | Workload Identity Federation for GKE, Shielded GKE Nodes, arranque seguro | Shielded GKE Nodes por defecto; el resto opcional |
| Pods por nodo | Máximo 256 | 110 por defecto, máximo 512 |
| Actualizaciones | Reparación y actualización automáticas de nodos preconfiguradas; siempre en un canal | Automáticas con canal; estrategias de actualización configurables |
| Cloud Marketplace | No | Sí |
| SLA | Cubre el plano de control y la capacidad de los Pods | Sin SLA a nivel de Pod |
# Autopilot (siempre regional) gcloud container clusters create-auto hello-cluster --location=us-central1 # Standard regional gcloud container clusters create std-cluster --location=us-central1 --num-nodes=1
| Tipo | Plano de control | Nodos por defecto |
|---|---|---|
| Regional | Réplicas en varias zonas de la región: sigue disponible si cae una zona y durante las actualizaciones | Multizona (tres zonas) |
| Zonal | Uno, en una zona. Las cargas siguen funcionando si cae, pero no se puede configurar el clúster hasta que vuelva | Una sola zona (se puede pasar a multizona) |
--node-locations las zonas que tienen esa GPU.Lo que el temario llama «private clusters» la documentación actual lo trata como aislamiento de red, que controla tres tipos de acceso: al plano de control desde fuera, desde el servidor de la API a webhooks externos y a los nodos desde fuera.
Acceso al plano de control
Nodos privados
Con o sin nodos privados, el plano de control se comunica con los nodos solo por IP internas. Si amplías una subred usada por un clúster con redes autorizadas, actualiza también la lista de redes autorizadas.
GKE actualiza todos los clústeres automáticamente. El canal decide el equilibrio entre novedades y estabilidad; las ventanas y exclusiones de mantenimiento controlan cuándo ocurre.
| Canal | Para qué |
|---|---|
| Rapid | Las versiones más nuevas, 1-2 semanas después de la GA de Kubernetes. Para preproducción; excluido del SLA de GKE |
| Regular (por defecto) | Equilibrio entre novedades y estabilidad. El recomendado para la mayoría |
| Stable | Prioriza la estabilidad; recibe los cambios los últimos |
| Extended | Soporte a largo plazo: mantener una versión menor el mayor tiempo posible |
«No channel» desaparece
No inscribir un clúster en un canal (antes «Static») está obsoleto, solo se permite a clientes existentes y se eliminará el 14 de junio de 2027; después, GKE inscribirá esos clústeres en Stable. Los clústeres Autopilot solo pueden estar en un canal.
El flujo del quickstart oficial: habilitar las APIs de GKE y Artifact Registry, tener el rol roles/container.admin, crear el clúster y desplegar.
Crear el clúster: gcloud container clusters create-auto hello-cluster --location=us-central1
Crear un Deployment: kubectl create deployment hello-server --image=IMAGEN (por ejemplo, de Artifact Registry)
Exponerlo: kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080, que crea un balanceador de Compute Engine
Comprobar: kubectl get pods y kubectl get service hello-server para ver la EXTERNAL-IP
kubectl apply -f en lugar de comandos imperativos.LoadBalancer obtiene una IP externa efímera; para usar una IP estática ya reservada se indica en loadBalancerIP. Autopilot no admite externalIps.| Situación | Respuesta | Por qué |
|---|---|---|
| El equipo no quiere gestionar nodos y solo pagar lo que piden los Pods | GKE Autopilot | Google gestiona los nodos; se paga por recursos solicitados. |
| Necesitas nodos Windows Server o instalar apps de Cloud Marketplace | GKE Standard | Autopilot no admite ninguna de las dos cosas. |
| El plano de control debe seguir disponible si cae una zona | Clúster regional | Replica el plano de control en varias zonas. |
| Los nodos no deben tener IP públicas pero sí descargar paquetes de internet | Nodos privados + Cloud NAT | Sin NAT no hay salida a internet. |
| kubectl debe apuntar al clúster recién creado por otro compañero | gcloud container clusters get-credentials | Añade la entrada al kubeconfig y cambia el contexto. |
| Mantener una versión menor de Kubernetes el mayor tiempo posible | Canal Extended | Soporte a largo plazo. |
| Exponer un Deployment a internet con una IP externa | kubectl expose --type LoadBalancer | Crea un balanceador de Compute Engine. |
❓ ¿Se puede crear un clúster Autopilot zonal?
No. Los clústeres Autopilot son siempre regionales.
❓ ¿Un clúster regional se puede convertir en zonal?
No, después de crearlo no se puede cambiar.
❓ ¿Qué hace falta además de kubectl para conectar con GKE?
El plugin gke-gcloud-auth-plugin, que proporciona los tokens de autenticación.
❓ ¿Los nodos privados pueden descargar imágenes de internet por sí solos?
No. Necesitan Cloud NAT u otra solución de NAT para salir a internet.
❓ ¿Cuántos nodos crea por defecto un clúster Standard regional?
Nueve: tres por zona en tres zonas. Puede fallar por la cuota de IP en uso.
❓ ¿Cuál es el canal de versiones por defecto?
Regular.
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Una empresa necesita un clúster de GKE cuyos nodos no tengan IP públicas ni sean accesibles desde internet, pero cuyas cargas deben llamar a una API externa. El equipo de plataforma quiere administrar el plano de control desde su red de oficina sin bastiones. ¿Qué configura?
Preguntas originales, cada una con su explicación.
Empezar un simulacro