Ejercicios - 352.4 Orquestación de Contenedores

Pregunta 1

¿Qué comando inicializa un clúster Docker Swarm?

a) docker cluster init b) docker swarm create c) docker swarm init d) docker init swarm

Respuesta

c) docker swarm init

docker swarm init inicializa el nodo actual como manager del Swarm. Se recomienda usar --advertise-addr para especificar la IP del manager. El comando devuelve un token que los workers usan para unirse con docker swarm join.

Pregunta 2

¿Cuál es la unidad mínima de despliegue en Kubernetes?

a) Container b) Deployment c) Pod d) Service

Respuesta

c) Pod

Un Pod es la unidad mínima de despliegue en Kubernetes. Puede contener uno o más contenedores que comparten red (mismo IP) y almacenamiento. Los contenedores dentro de un Pod se comunican por localhost.

Pregunta 3

¿Qué comando de kubectl aplica una configuración declarativa desde un archivo YAML?

a) kubectl create -f recurso.yaml b) kubectl apply -f recurso.yaml c) kubectl deploy -f recurso.yaml d) kubectl run -f recurso.yaml

Respuesta

b) kubectl apply -f recurso.yaml

kubectl apply -f aplica configuración de forma declarativa: crea el recurso si no existe o lo actualiza si ya existe. kubectl create es imperativo y falla si el recurso ya existe. apply es el método recomendado para gestión declarativa.

Pregunta 4

¿Qué tipo de Service en Kubernetes es accesible solo desde dentro del clúster?

a) NodePort b) LoadBalancer c) ClusterIP d) ExternalName

Respuesta

c) ClusterIP

ClusterIP es el tipo de Service por defecto. Asigna una IP virtual interna al clúster y solo es accesible desde dentro. NodePort expone en cada nodo, LoadBalancer provisiona un balanceador externo, y ExternalName crea un alias DNS.

Pregunta 5

¿Qué comando escala un servicio Docker Swarm a 5 réplicas?

a) docker service replicas web 5 b) docker service scale web=5 c) docker service update --replicas 5 web d) Tanto b) como c) son correctas

Respuesta

d) Tanto b) como c) son correctas

docker service scale web=5 y docker service update --replicas 5 web logran el mismo resultado: escalar el servicio “web” a 5 réplicas. scale es un atajo más directo, mientras que update permite cambiar múltiples parámetros simultáneamente.

Pregunta 6

¿Qué recurso de Kubernetes almacena datos de configuración no sensibles como pares clave-valor?

a) Secret b) ConfigMap c) Volume d) Annotation

Respuesta

b) ConfigMap

Los ConfigMaps almacenan datos de configuración no confidenciales como pares clave-valor. Se pueden inyectar en Pods como variables de entorno o montar como archivos. Los Secrets son para datos sensibles y se almacenan codificados en base64.

Pregunta 7

¿Qué comando de kubectl revierte un Deployment a la versión anterior?

a) kubectl rollout revert deployment web b) kubectl rollout undo deployment web c) kubectl rollback deployment web d) kubectl undo deployment web

Respuesta

b) kubectl rollout undo deployment web

kubectl rollout undo revierte un Deployment a la revisión anterior. Se puede especificar una revisión concreta con --to-revision=N. kubectl rollout history muestra las revisiones disponibles.

Pregunta 8

¿Qué recurso de Kubernetes gestiona el acceso HTTP/HTTPS externo con reglas de enrutamiento basadas en host y ruta?

a) Service b) NetworkPolicy c) Ingress d) Gateway

Respuesta

c) Ingress

Ingress gestiona el acceso HTTP/HTTPS externo al clúster, proporcionando enrutamiento basado en host y ruta, terminación TLS y balanceo de carga. Requiere un Ingress Controller (nginx, traefik, etc.) instalado en el clúster.

Pregunta 9

¿Qué comando despliega una aplicación multi-servicio en Docker Swarm desde un archivo compose?

a) docker compose up -d b) docker stack deploy -c docker-compose.yml mi-app c) docker swarm deploy docker-compose.yml d) docker service create -f docker-compose.yml

Respuesta

b) docker stack deploy -c docker-compose.yml mi-app

docker stack deploy despliega servicios definidos en un archivo compose como un stack en Docker Swarm. -c especifica el archivo compose. docker compose up es para Docker Compose local, no para Swarm.

Pregunta 10

¿Qué comando de kubectl muestra información detallada sobre un pod, incluyendo eventos y condiciones?

a) kubectl get pod mi-pod -o yaml b) kubectl info pod mi-pod c) kubectl describe pod mi-pod d) kubectl inspect pod mi-pod

Respuesta

c) kubectl describe pod mi-pod

kubectl describe muestra información detallada y legible sobre un recurso, incluyendo metadata, especificación, estado, condiciones y eventos recientes. get -o yaml muestra la definición completa en YAML pero sin eventos ni formato legible.

Pregunta 11

¿Qué componente del plano de control de Kubernetes almacena todo el estado del clúster como base de datos distribuida?

a) kube-apiserver b) kube-scheduler c) etcd d) kube-controller-manager

Respuesta

c) etcd

etcd es una base de datos distribuida clave-valor que almacena todo el estado y la configuración del clúster Kubernetes. Todos los demás componentes del plano de control interactúan con el estado del clúster a través de kube-apiserver, que es el único componente que accede directamente a etcd.

Pregunta 12

¿Qué tipo de Service en Kubernetes expone el servicio en un puerto estático de cada nodo del clúster?

a) ClusterIP b) NodePort c) LoadBalancer d) ExternalName

Respuesta

b) NodePort

NodePort expone el servicio en un puerto estático (rango 30000-32767) en cada nodo del clúster. El tráfico que llega a <IP-nodo>:<NodePort> se redirige al Service. NodePort incluye automáticamente un ClusterIP. LoadBalancer incluye automáticamente un NodePort.

Pregunta 13

¿Qué recurso de Kubernetes se utiliza para almacenar datos sensibles como contraseñas y tokens codificados en base64?

a) ConfigMap b) Secret c) Vault d) Credential

Respuesta

b) Secret

Los Secrets de Kubernetes almacenan datos sensibles como contraseñas, tokens y claves SSH codificados en base64. Se pueden inyectar en Pods como variables de entorno o montarse como archivos. A diferencia de los ConfigMaps, los Secrets están diseñados para datos confidenciales, aunque la codificación base64 no es cifrado real.

Pregunta 14

¿Qué componente de Kubernetes se ejecuta en cada nodo worker y se encarga de gestionar los Pods asignados a ese nodo?

a) kube-proxy b) kubelet c) kube-scheduler d) containerd

Respuesta

b) kubelet

El kubelet es un agente que se ejecuta en cada nodo worker. Recibe las especificaciones de Pods del API server y se asegura de que los contenedores descritos en esos Pods estén ejecutándose correctamente. Interactúa con el container runtime (containerd, CRI-O) para gestionar el ciclo de vida de los contenedores.

Pregunta 15

¿Cuántos nodos manager se recomiendan como mínimo en un clúster Docker Swarm para tolerar la falta de uno de ellos?

a) 1 b) 2 c) 3 d) 5

Respuesta

c) 3

Se necesitan al menos 3 nodos manager para tolerar la pérdida de 1 manager y mantener el quórum (consenso Raft). La fórmula es: con N managers, se toleran (N-1)/2 fallos. Con 3 managers, el quórum necesita 2 nodos activos, tolerando 1 fallo. Se recomiendan números impares (3, 5, 7).

Pregunta 16

¿Qué comando permite a un nodo abandonar un clúster Docker Swarm?

a) docker swarm disconnect b) docker swarm leave c) docker node remove d) docker swarm exit

Respuesta

b) docker swarm leave

docker swarm leave hace que el nodo actual abandone el clúster Swarm. En un nodo worker, funciona directamente. En un manager, requiere la opción --force si es el último manager. Después de salir, el nodo aparece como “Down” en la lista de nodos del clúster.

Pregunta 17

¿Qué campo del manifiesto YAML de un Deployment de Kubernetes especifica cuántas réplicas del Pod deben ejecutarse?

a) spec.instances b) spec.replicas c) spec.count d) spec.scale

Respuesta

b) spec.replicas

El campo spec.replicas en un Deployment define el número deseado de réplicas de Pods que deben estar ejecutándose. Kubernetes se asegura de mantener siempre ese número de Pods activos, creando o eliminando Pods según sea necesario para alcanzar el estado deseado.

Pregunta 18

¿Qué registro de contenedores de código abierto es comúnmente utilizado como registro empresarial privado?

a) Docker Hub b) Quay.io c) Harbor d) Amazon ECR

Respuesta

c) Harbor

Harbor es un registro de imágenes de contenedores de código abierto desarrollado por VMware (ahora proyecto CNCF). Ofrece funcionalidades empresariales como escaneo de vulnerabilidades, políticas de replicación, control de acceso basado en roles (RBAC) y firma de imágenes. Se despliega on-premise.

Pregunta 19

¿Qué comando de kubectl permite ver el historial de revisiones de un Deployment?

a) kubectl rollout log deployment web b) kubectl rollout history deployment web c) kubectl revision list deployment web d) kubectl get deployment web --revisions

Respuesta

b) kubectl rollout history deployment web

kubectl rollout history deployment web muestra todas las revisiones de un Deployment con sus números de revisión. Se puede ver el detalle de una revisión específica con --revision=N. Esta información es útil para decidir a qué versión revertir con kubectl rollout undo.

Pregunta 20

¿Qué campo del manifiesto YAML de un Pod define los límites máximos de CPU y memoria que un contenedor puede consumir?

a) spec.containers[].requests b) spec.containers[].resources.limits c) spec.containers[].resources.max d) spec.containers[].quota

Respuesta

b) spec.containers[].resources.limits

En el manifiesto de un Pod, resources.limits define los valores máximos de CPU y memoria que un contenedor puede usar. resources.requests define los recursos mínimos garantizados. Si un contenedor excede su límite de memoria, es terminado (OOMKilled). El límite de CPU se aplica mediante throttling.

Pregunta 21

Escribe el comando para crear un servicio en Docker Swarm llamado web con 3 réplicas, mapeando el puerto 8080 al 80, usando la imagen nginx.

Respuesta

docker service create —name web —replicas 3 -p 8080:80 nginx

docker service create crea un servicio en Docker Swarm. --name asigna el nombre, --replicas el número de instancias, -p el mapeo de puertos. Swarm distribuye las réplicas entre los nodos disponibles y mantiene el número deseado de instancias activas.

Pregunta 22

Escribe el comando de kubectl para escalar un Deployment llamado web-deployment a 5 réplicas.

Respuesta

kubectl scale deployment web-deployment —replicas=5

kubectl scale permite cambiar el número de réplicas de un Deployment, ReplicaSet o StatefulSet. --replicas=5 establece el número deseado. Kubernetes ajustará el número de Pods hasta alcanzar las 5 réplicas solicitadas.

Pregunta 23

Escribe el comando para crear un namespace llamado produccion en Kubernetes.

Respuesta

kubectl create namespace produccion

kubectl create namespace crea un nuevo namespace para aislamiento lógico de recursos. Los namespaces permiten dividir el clúster entre equipos o entornos (desarrollo, staging, producción). Para operar en un namespace: kubectl get pods -n produccion.

Pregunta 24

Escribe el comando para ejecutar una shell bash interactiva dentro de un Pod llamado mi-pod en Kubernetes.

Respuesta

kubectl exec -it mi-pod — bash

kubectl exec ejecuta un comando dentro de un Pod en ejecución. -i mantiene stdin abierto, -t asigna un pseudo-TTY. El -- separa los argumentos de kubectl del comando a ejecutar. Para Pods multi-contenedor, se especifica el contenedor con -c nombre-contenedor.

Pregunta 25

Escribe el comando para obtener el token que permite a un nodo unirse como worker a un clúster Docker Swarm.

Respuesta

docker swarm join-token worker

docker swarm join-token worker muestra el token y el comando completo de docker swarm join que un nodo debe ejecutar para unirse al clúster como worker. Para obtener el token de manager se usa docker swarm join-token manager. Los tokens pueden rotarse por seguridad con --rotate.