Lecciones en español / CKAD / Hoja de repaso · English
Hoja de repaso de CKAD CKAD (Kubernetes v1.35 curriculum)
Dominio 1: Application Design and Build (20%)
Consejos para el examen
- Recuerda la regla de combinación: ENTRYPOINT más CMD se ejecutan juntos, y los argumentos en tiempo de ejecución reemplazan solo a CMD. Las preguntas suelen pedir qué comando ejecuta realmente un contenedor.
- Las tareas que piden un archivo de imagen quieren
save(imagen con capas y metadatos), noexport(el sistema de archivos plano de un contenedor). Lee también la etiqueta exacta y la ruta de salida que pide la tarea. - Definir solo
commanddescarta el CMD de la imagen en lugar de agregarlo al final. Y--commanden kubectl run decide si las palabras después de--terminan en command o en args. - Busca las palabras clave: 'uno por nodo' significa DaemonSet, 'identidad estable u ordenado' significa StatefulSet, 'se ejecuta hasta completarse' significa Job, 'según una programación' significa CronJob y 'app escalable sin estado' significa Deployment.
- Conoce los valores por defecto (completions 1, parallelism 1, backoffLimit 6) y que activeDeadlineSeconds gana sobre backoffLimit. Recuerda también que Never crea Pods nuevos en cada reintento, mientras que OnFailure reinicia el mismo Pod.
- El comando para disparar un CronJob a mano es
kubectl create job <new-name> --from=cronjob/<cronjob-name>. Recuerda también que restartPolicy va en la plantilla de Pod más interna. - Si un Pod está atascado en estado
Init:, el problema es un init container: revísalo conkubectl logs <pod> -c <init-name>. Un sidecar nativo vive bajo initContainers pero tiene restartPolicy: Always. - Los volúmenes secret usan
secretName, noname, y las fuentes projected usannamepara ambos. Recuerda también que las variables de entorno no se actualizan cuando cambia un ConfigMap, pero los archivos montados (sin subPath) sí. - Los Pods hacen referencia a PVCs, no a PVs. Para que un PV estático y un PVC se vinculen, storageClassName, el modo de acceso y la capacidad (el PV al menos tan grande como la solicitud) deben ser compatibles.
- Un volumen necesita ambas mitades: una entrada en spec.volumes y una entrada volumeMounts correspondiente en cada contenedor. Los montajes con subPath no se actualizan automáticamente desde ConfigMaps o Secrets.
Términos clave
- Base image (imagen base)
- La imagen indicada en FROM que aporta el sistema de archivos inicial y el runtime para tu build.
- Layer (capa)
- Un cambio de sistema de archivos de solo lectura y en caché, producido por una instrucción como RUN o COPY.
- Multi-stage build (build multietapa)
- Un Dockerfile con varias etapas FROM en el que solo se copian artefactos seleccionados a la imagen final.
- ENTRYPOINT
- El ejecutable fijo que el contenedor ejecuta al iniciar.
- CMD
- Argumentos por defecto (o un comando por defecto si no hay ENTRYPOINT) que se reemplazan con los argumentos dados en tiempo de ejecución.
- Build context (contexto de build)
- El directorio enviado al builder cuyos archivos pueden alcanzar COPY y ADD.
- Tag (etiqueta)
- Un rótulo legible y movible, como 1.0, que apunta a una imagen.
- Digest
- El hash de contenido sha256 inmutable que identifica una imagen de forma única.
- docker save / load
- Comandos que exportan imágenes con todas sus capas y metadatos a un archivo tar y las vuelven a importar.
- command
- Campo del contenedor que reemplaza el ENTRYPOINT de la imagen.
- args
- Campo del contenedor que reemplaza el CMD de la imagen.
- $(VAR) expansion (expansión de $(VAR))
- Sustitución que hace Kubernetes de las variables de entorno del contenedor dentro de command y args, sin usar un shell.
- Deployment
- Controlador para réplicas sin estado e intercambiables, con rolling updates y rollback.
- StatefulSet
- Controlador que da a cada réplica un nombre estable, arranque ordenado y su propio almacenamiento persistente.
- DaemonSet
- Controlador que ejecuta un Pod por cada nodo elegible.
- Job / CronJob
- Controladores para trabajo que se ejecuta hasta completarse, una vez o según una programación.
- completions
- Número de ejecuciones exitosas de Pod necesarias para que el Job termine (por defecto 1).
- parallelism
- Número máximo de Pods del Job ejecutándose a la vez (por defecto 1).
- backoffLimit
- Número de reintentos antes de que el Job se marque como Failed (por defecto 6).
- activeDeadlineSeconds
- Tiempo máximo de ejecución de todo el Job, tras el cual sus Pods se detienen y el Job falla.
- schedule
- Expresión cron de cinco campos: minuto, hora, día del mes, mes, día de la semana.
- concurrencyPolicy
- Allow, Forbid o Replace: qué hacer si toca una ejecución mientras la anterior sigue activa.
- History limits (límites de historial)
- successfulJobsHistoryLimit y failedJobsHistoryLimit, el número de Jobs terminados que se conservan.
- jobTemplate
- La especificación de Job que el CronJob genera en cada ejecución.
- Init container
- Un contenedor que se ejecuta hasta completarse, en orden, antes de que arranquen los contenedores de la app.
- Sidecar
- Un contenedor auxiliar que se ejecuta junto al contenedor principal durante toda la vida del Pod.
- Native sidecar (sidecar nativo)
- Un init container con restartPolicy: Always, que se inicia antes y se detiene después de los contenedores principales.
- Adapter
- Un auxiliar que convierte la salida del contenedor principal a un formato estándar.
- Ambassador
- Un auxiliar que hace de proxy para las conexiones de la app hacia servicios externos a través de localhost.
- emptyDir
- Un volumen temporal que dura lo que el Pod, vacío al inicio y compartido por los contenedores del Pod.
- medium: Memory
- Convierte un emptyDir en un tmpfs respaldado en RAM que cuenta para el uso de memoria.
- Projected volume (volumen proyectado)
- Un volumen que combina fuentes configMap, secret, downwardAPI y serviceAccountToken en un solo directorio.
- Ephemeral volume (volumen efímero)
- Almacenamiento cuya vida está ligada al Pod y se elimina con él.
- PersistentVolume (PV)
- Un objeto de ámbito de clúster que representa una pieza de almacenamiento real.
- PersistentVolumeClaim (PVC)
- Una solicitud de almacenamiento con namespace que se vincula a un PV compatible.
- StorageClass
- Un tipo de almacenamiento con nombre, con un provisioner usado para el aprovisionamiento dinámico.
- Access mode (modo de acceso)
- RWO, ROX, RWX o RWOP: cuántos nodos o Pods pueden montar el volumen y si pueden escribir.
- Reclaim policy (política de recuperación)
- Delete o Retain: qué ocurre con el almacenamiento de un PV después de liberarse su claim.
- volumeMounts
- Lista por contenedor que enlaza un volumen del Pod con una ruta dentro de ese contenedor.
- mountPath
- La ruta absoluta en el contenedor donde aparece el volumen, ocultando lo que ya hubiera allí.
- subPath
- Monta un solo archivo o subdirectorio de un volumen en lugar de toda su raíz.
- readOnly (solo lectura)
- Opción de montaje que bloquea las escrituras de ese contenedor en el volumen.
Dominio 2: Application Deployment (20%)
Consejos para el examen
- Si
kubectl applyfalla con 'selector does not match template labels', haz que spec.selector.matchLabels sea un subconjunto de spec.template.metadata.labels. En apps/v1 el selector no puede cambiarse después. - Haz la aritmética: Pods máximos = replicas + maxSurge, mínimo disponible = replicas - maxUnavailable. Elige Recreate cuando una tarea diga que la versión antigua y la nueva nunca deben ejecutarse juntas.
- En
kubectl set image, el lado izquierdo es el nombre del contenedor. Usakubectl get deploy web -o jsonpath='{.spec.template.spec.containers[*].name}'si no estás seguro. - El cambio ocurre en el Service, no en los Deployments. Asegúrate de que la etiqueta de versión esté en la plantilla de Pod y de que el selector del Service la incluya.
- El porcentaje para el canary es réplicas canary dividido entre réplicas totales. El selector del Service debe coincidir con una etiqueta compartida por ambos Deployments y no debe incluir la etiqueta de track.
- Pasa siempre el namespace
-ncorrecto a helm list, upgrade, rollback y uninstall, y usahelm list -Acuando no sepas dónde está un release. - Encuentra la ruta exacta de la clave con
helm show valuesantes de usar --set. Una clave incorrecta se ignora en silencio, así que verifica conhelm get valuesohelm template. - El name de
imagescoincide con la imagen tal como está escrita en el manifiesto, no con el nombre del contenedor. Los ConfigMaps generados tienen un sufijo hash, así que búscalos conkubectl get cmen lugar de adivinar el nombre. -krecibe un directorio, no un archivo, ykubectl kustomize(sin apply) es la previsualización segura. Usakubectl diff -kpara ver exactamente qué cambiará.
Términos clave
- ReplicaSet
- Controlador que mantiene en ejecución un número fijo de Pods idénticos; normalmente lo gestiona un Deployment.
- Pod template (plantilla de Pod)
- Los metadatos y la spec de Pod dentro de un controlador a partir de los cuales se crea cada réplica.
- Label selector (selector de etiquetas)
- Una consulta sobre etiquetas, como matchLabels app: web, que decide qué Pods gestiona o apunta un objeto.
- pod-template-hash
- Etiqueta añadida por el Deployment para distinguir los Pods de distintos ReplicaSets.
- RollingUpdate
- Estrategia por defecto del Deployment que reemplaza los Pods gradualmente mientras la app sigue atendiendo.
- maxSurge
- Cuántos Pods por encima del número deseado pueden existir durante una actualización (por defecto 25%).
- maxUnavailable
- Cuántos Pods por debajo del número deseado pueden estar no disponibles durante una actualización (por defecto 25%).
- minReadySeconds
- Cuánto tiempo debe permanecer listo un Pod nuevo antes de contar como disponible.
- Recreate
- Estrategia que termina todos los Pods antiguos antes de crear los nuevos, causando una breve inactividad.
- Revision (revisión)
- Una versión numerada de la plantilla de Pod de un Deployment que se guarda para el rollback.
- rollout undo
- Devuelve el Deployment a la revisión anterior o a una elegida volviendo a aplicar su plantilla.
- rollout pause / resume
- Detiene y reanuda temporalmente los rollouts para que varios cambios se apliquen como uno solo.
- change-cause
- La anotación kubernetes.io/change-cause que se muestra en rollout history.
- Blue/green deployment (despliegue azul/verde)
- Ejecutar la versión antigua y la nueva completas lado a lado y cambiar todo el tráfico de una vez.
- Service selector (selector del Service)
- Consulta de etiquetas que decide qué Pods reciben el tráfico de un Service.
- Cut-over (conmutación)
- El momento en que el tráfico pasa de la versión antigua a la nueva.
- Canary release (lanzamiento canario)
- Enviar una pequeña parte del tráfico a una versión nueva para probarla con usuarios reales.
- Track label (etiqueta de track)
- Una etiqueta como track: canary usada para distinguir los Pods de los dos Deployments sin afectar al Service.
- Replica weighting (ponderación por réplicas)
- Usar la proporción de Pods para aproximar una división de tráfico detrás de un Service.
- Chart
- Un paquete de Helm con manifiestos de Kubernetes en plantillas más valores por defecto.
- Repository (repositorio)
- Un servidor que aloja un índice de charts, agregado localmente con helm repo add.
- Release
- Una instancia instalada y con nombre de un chart en un namespace, con historial de revisiones.
- helm rollback
- Devuelve un release a una revisión anterior, registrada como una nueva revisión.
- values.yaml
- El archivo de configuración por defecto del chart, leído por sus plantillas.
- --set
- Sobrescritura de valores individuales en la línea de comandos usando claves con puntos.
- -f / --values
- Proporciona un archivo YAML con valores a sobrescribir; se puede repetir.
- helm template
- Renderiza localmente los manifiestos del chart sin instalar nada.
- kustomization.yaml
- El archivo que lista los recursos y las transformaciones que Kustomize les aplica.
- namePrefix
- Texto agregado al inicio del nombre de cada recurso, con las referencias actualizadas.
- labels / commonLabels
- Campos que agregan etiquetas a todos los recursos; commonLabels también cambia los selectores y está obsoleto.
- patches
- Cambios parciales (strategic merge o JSON 6902) aplicados a los recursos seleccionados.
- configMapGenerator
- Crea ConfigMaps a partir de literales, archivos o archivos env, con un hash del contenido en el nombre.
- Base
- Un directorio de kustomization con manifiestos compartidos sobre los que se construyen los overlays.
- Overlay
- Una kustomization que referencia una base y agrega cambios específicos del entorno.
- kubectl apply -k
- Construye la kustomization de un directorio y aplica el resultado al clúster.
- kubectl kustomize
- Construye una kustomization e imprime el YAML resultante sin aplicarlo.
Dominio 3: Application Observability and Maintenance (15%)
Consejos para el examen
- 'no matches for kind X in version Y' casi siempre significa que la versión de API se eliminó.
kubectl api-resources | grep -i <kind>te da la correcta en segundos. - Para Ingress, cambiar solo el apiVersion no basta: corrige el formato del backend y agrega pathType. Para CronJob, el cambio de apiVersion suele ser todo lo necesario.
- Conoce los valores por defecto: period 10s, timeout 1s, failureThreshold 3, successThreshold 1, initialDelay 0. Para arranques lentos, la respuesta preferida es un startup probe, no un initialDelaySeconds enorme.
- Falla liveness: el contenedor se reinicia. Falla readiness: el Pod sale del Service pero sigue ejecutándose. Si una pregunta menciona reinicios que suben, piensa en liveness; si menciona que no hay tráfico pero tampoco reinicios, piensa en readiness.
gette dice qué,describey los eventos te dicen por qué,topte dice cuánto. Sikubectl topda error, falta metrics-server o todavía no está listo.- Para contenedores que fallan, recurre primero a
--previous. En Pods multicontenedor,-ces necesario para obtener el contenedor correcto. - Asocia cada estado con el siguiente comando: Pending e ImagePullBackOff llevan a
describe, CrashLoopBackOff lleva alogs --previousy OOMKilled lleva al límite de memoria. - Recuerda
--rm -it --restart=Neverpara Pods de prueba desechables, y que port-forward a un Service sigue llegando a un solo Pod. - Para
kubectl get pods(una lista), jsonpath empieza en.items, pero las rutas de--sort-byson relativas a cada elemento. Pon siempre las expresiones jsonpath entre comillas simples.
Términos clave
- apiVersion
- El grupo de API y la versión de un objeto, como apps/v1; los objetos core usan solo v1.
- Deprecation (deprecación u obsolescencia)
- Una versión de API se marca para eliminarse en el futuro; todavía funciona pero produce advertencias.
- kubectl api-resources
- Lista los tipos de recursos con nombres cortos, versión de API, indicador de namespace y kind.
- kubectl explain
- Muestra la documentación y la estructura de campos de un tipo de recurso y versión.
- networking.k8s.io/v1
- Grupo/versión de API estable para Ingress y NetworkPolicy.
- pathType
- Campo obligatorio de path de Ingress en v1: Prefix, Exact o ImplementationSpecific.
- autoscaling/v2
- Versión estable de HPA con una lista de métricas que admite métricas resource, pods, object y external.
- batch/v1
- Grupo/versión estable para Job y CronJob.
- Liveness probe
- Verifica si un contenedor debe reiniciarse.
- Readiness probe
- Verifica si un contenedor debe recibir tráfico del Service.
- Startup probe
- Verifica si un contenedor lento ya arrancó, dejando en espera los otros probes hasta que lo haga.
- failureThreshold
- Fallos consecutivos necesarios antes de considerar que el probe falló (por defecto 3).
- Probe handler
- El método de verificación: httpGet, tcpSocket, exec o grpc.
- Restart (reinicio)
- La acción ante fallo de liveness/startup: el kubelet mata el contenedor y lo vuelve a iniciar en el mismo Pod.
- Not ready (no listo)
- El estado ante fallo de readiness: el Pod sigue en ejecución pero se quita de los endpoints del Service.
- Ready condition (condición Ready)
- Condición de estado del Pod mostrada en la columna READY que decide si el Pod recibe tráfico del Service.
- kubectl describe
- Vista detallada de un objeto, incluido su estado relacionado y los eventos recientes.
- Event (evento)
- Un registro de corta duración de algo que le ocurrió a un objeto, como un fallo de scheduling o la descarga de una imagen.
- metrics-server
- Complemento del clúster que recopila el uso de CPU y memoria de los kubelets para kubectl top y el HPA.
- kubectl top
- Muestra el uso actual de CPU y memoria de nodos o Pods a partir de la Metrics API.
- -c
- Selecciona de qué contenedor mostrar los logs en un Pod multicontenedor.
- --previous
- Muestra los logs de la última instancia terminada del contenedor.
- -f
- Sigue el flujo de logs a medida que se escriben líneas nuevas.
- -l
- Selecciona Pods por etiqueta para mostrar logs de varios Pods a la vez.
- Pending
- Pod aceptado pero con contenedores que aún no se ejecutan, a menudo sin programar o todavía creándose.
- ImagePullBackOff
- La imagen no se puede descargar y Kubernetes espera cada vez más entre reintentos.
- CrashLoopBackOff
- El contenedor termina repetidamente tras arrancar y se reinicia con retrasos crecientes.
- OOMKilled
- El contenedor fue terminado por superar su límite de memoria, normalmente con código de salida 137.
- Exit code 128+n (código de salida 128+n)
- Un proceso terminado por la señal n, como 137 para SIGKILL o 143 para SIGTERM.
- kubectl exec
- Ejecuta un comando, o un shell interactivo con -it, dentro de un contenedor en ejecución.
- Ephemeral container (contenedor efímero)
- Un contenedor temporal de depuración que kubectl debug agrega a un Pod en ejecución.
- kubectl debug --copy-to
- Crea una copia modificada de un Pod para diagnóstico.
- kubectl port-forward
- Crea un túnel desde un puerto local hasta un puerto de un Pod a través del API server.
- -o wide
- Agrega columnas adicionales como la IP del Pod, el nodo y las imágenes.
- -o yaml
- Imprime el objeto completo, incluido el status y los valores por defecto.
- jsonpath
- Plantilla de salida que extrae campos específicos del árbol del objeto.
- --sort-by
- Ordena la salida de una lista por un campo dado como expresión JSONPath.
- custom-columns
- Formato de salida que construye una tabla a partir de rutas de campos con nombre.
Dominio 4: Application Environment, Configuration and Security (25%)
Consejos para el examen
- El nombre de la CRD es
<plural>.<group>, y los recursos personalizados usanapiVersion: <group>/<version>.kubectl api-resourceste dice el plural y los nombres cortos exactos que debes usar. - Orden: autenticación, autorización, admisión mutating, validación, admisión validating. 401 significa identidad, 403 con 'cannot' significa RBAC, y los mensajes de cuota o PodSecurity significan admisión.
- Los recursos core usan apiGroups [""], y --serviceaccount recibe namespace:name. Un ClusterRole vinculado por un RoleBinding solo otorga acceso en el namespace de ese binding.
- Guaranteed necesita requests iguales a limits tanto para CPU como para memoria en todos los contenedores. CPU por encima del límite significa throttling; memoria por encima del límite significa OOMKilled.
- Una cuota de cómputo obliga a cada Pod nuevo a declarar ese recurso; un default de LimitRange es la solución habitual. Los errores de cuota de los Deployments aparecen en el ReplicaSet, no en el Deployment.
- --from-file=app.env crea una clave que contiene todo el archivo; --from-env-file=app.env crea una clave por línea. Y los valores de env no se actualizan hasta que el Pod se reinicia.
- Base64 es codificación, no cifrado. Conoce los tres tipos de create (generic, docker-registry, tls) y que los volúmenes de secret usan
secretName. - El campo del Pod es
serviceAccountName(el antiguoserviceAccountestá obsoleto), la configuración de automount a nivel de Pod sobrescribe la de la ServiceAccount y no puedes cambiar la ServiceAccount de un Pod en ejecución. - fsGroup es solo a nivel de Pod; readOnlyRootFilesystem, allowPrivilegeEscalation, capabilities y privileged son solo a nivel de contenedor. Los valores del contenedor sobrescriben los del Pod.
- Las capabilities son solo a nivel de contenedor y se escriben sin CAP_. Los errores de PSA de los Deployments aparecen en el ReplicaSet, y restricted exige drop ALL, runAsNonRoot, allowPrivilegeEscalation false y un perfil seccomp RuntimeDefault o Localhost.
Términos clave
- CustomResourceDefinition (CRD)
- Un objeto que registra un nuevo tipo de recurso en la API de Kubernetes.
- Custom resource (recurso personalizado)
- Un objeto de un tipo definido por una CRD, administrado con kubectl como los objetos integrados.
- Controller (controlador)
- Un programa que observa objetos y actúa para que el estado real coincida con su spec.
- Operator
- Un controlador más CRDs que automatizan la operación de una aplicación específica.
- Authentication (autenticación)
- Establecer quién hace la solicitud; un fallo devuelve 401.
- Authorization (autorización)
- Decidir si la identidad puede realizar el verbo sobre el recurso; un fallo devuelve 403.
- Mutating admission (admisión mutating)
- Paso de admisión que puede modificar un objeto antes de guardarlo.
- Validating admission (admisión validating)
- Paso de admisión que acepta o rechaza un objeto sin cambiarlo.
- Role
- Conjunto de verbos permitidos sobre recursos, con namespace.
- ClusterRole
- Conjunto de permisos sin namespace, utilizable en todo el clúster o vinculado por namespace.
- RoleBinding
- Otorga un Role o ClusterRole a sujetos dentro de un namespace.
- ClusterRoleBinding
- Otorga un ClusterRole a sujetos en todo el clúster.
- kubectl auth can-i --as
- Verifica si un usuario o ServiceAccount puede realizar una acción, usando suplantación.
- Request (solicitud)
- Recursos reservados para un contenedor, que el scheduler usa para decidir la ubicación.
- Limit (límite)
- Recursos máximos que puede usar un contenedor; la CPU se estrangula y el exceso de memoria se mata.
- Millicore (m) (milinúcleo)
- Una milésima de núcleo de CPU; 500m es medio núcleo.
- Mi / Gi
- Unidades binarias de memoria basadas en potencias de 1024.
- QoS class (clase de QoS)
- Guaranteed, Burstable o BestEffort, derivada de los requests y limits y usada para el orden de desalojo.
- ResourceQuota
- Límite a nivel de namespace sobre el uso total de recursos y el número de objetos.
- LimitRange
- Política del namespace que define recursos por defecto y mínimos/máximos por contenedor, Pod o PVC.
- defaultRequest / default
- Campos de LimitRange que dan el request y el limit que se aplican cuando un contenedor los omite.
- count/<resource>
- Clave de cuota que limita cuántos objetos de un tipo pueden existir en el namespace.
- ConfigMap
- Un objeto que contiene configuración no secreta como pares clave-valor.
- --from-env-file
- Crea una clave del ConfigMap por cada línea KEY=value de un archivo.
- configMapKeyRef
- Define una variable de entorno a partir de una clave de un ConfigMap.
- envFrom
- Importa todas las claves de un ConfigMap o Secret como variables de entorno.
- Opaque
- Tipo de Secret por defecto para datos arbitrarios del usuario, creado con kubectl create secret generic.
- kubernetes.io/dockerconfigjson
- Tipo de Secret que contiene credenciales de registry, usado mediante imagePullSecrets.
- kubernetes.io/tls
- Tipo de Secret que contiene tls.crt y tls.key para certificados.
- Base64
- Codificación de texto reversible usada para los datos de un Secret; no aporta confidencialidad.
- secretKeyRef
- Define una variable de entorno a partir de una clave de un Secret.
- ServiceAccount
- Una identidad con namespace para los procesos que se ejecutan en Pods.
- serviceAccountName
- Campo de la spec del Pod que elige con qué ServiceAccount se ejecuta el Pod.
- Bound (projected) token (token vinculado o proyectado)
- Un token de corta duración, limitado a una audiencia, ligado a un Pod y renovado por el kubelet.
- automountServiceAccountToken
- Configuración en una ServiceAccount o Pod que controla si se monta el token.
- kubectl create token
- Comando que emite un token de corta duración para una ServiceAccount.
- runAsUser
- UID numérico con el que se ejecutan los procesos del contenedor.
- runAsNonRoot
- Hace que el kubelet se niegue a iniciar un contenedor que se ejecutaría como UID 0.
- fsGroup
- Grupo suplementario a nivel de Pod aplicado a los contenedores y a la propiedad de los volúmenes compatibles.
- readOnlyRootFilesystem
- Configuración a nivel de contenedor que hace de solo lectura el sistema de archivos raíz del contenedor.
- allowPrivilegeEscalation
- Configuración a nivel de contenedor que, en false, impide que los procesos obtengan más privilegios que su padre.
- Capability
- Una porción con nombre del privilegio de root, como NET_BIND_SERVICE, que se puede agregar a un contenedor o quitarle.
- Pod Security Admission
- Admission controller integrado que aplica los Pod Security Standards mediante etiquetas en el namespace.
- Baseline
- Nivel de Pod Security que bloquea escaladas de privilegios conocidas, como contenedores privileged y namespaces del host.
- Restricted
- El nivel de Pod Security más estricto: exige no root, sin escalada de privilegios, capabilities quitadas y un perfil seccomp.
- enforce / audit / warn
- Modos de PSA que rechazan, registran o advierten sobre los Pods que incumplen.
Dominio 5: Services and Networking (20%)
Consejos para el examen
- Cada tipo se basa en el anterior: LoadBalancer incluye un NodePort, que incluye un ClusterIP. ExternalName y headless son los diferentes: sin proxy y sin IP virtual.
- port es lo que llaman los clientes, targetPort es donde escucha el Pod, nodePort está en los nodos. Endpoints presentes pero conexiones rechazadas apunta a targetPort; sin endpoints apunta al selector o a la readiness.
- Endpoints vacíos significa una de dos cosas: ningún Pod coincide con el selector, o los Pods que coinciden no están listos. Revisa
kubectl get pods -l <selector>y la columna READY. - Un nombre corto de Service solo se resuelve desde el mismo namespace. Entre namespaces, usa al menos
<service>.<namespace>. exposecopia el selector real;create serviceasume app=<name>.exposeno tiene opción para un nodePort específico, así que genera el YAML y agrégalo.- Las políticas solo agregan permisos; lo que aísla es estar seleccionado.
podSelector: {}significa todos los Pods, mientras queingress: [{}]significa permitir todo, lo contrario de no tener reglas. - Un guion con ambos selectores significa AND; dos guiones significan OR. Después de agregar una política de egress, permite siempre el puerto 53 UDP y TCP para el DNS.
- Si una pregunta al estilo del examen pregunta por qué una NetworkPolicy correcta no tiene efecto, la respuesta es que el plugin CNI del clúster no aplica NetworkPolicy.
- Prefix coincide con segmentos completos de la ruta (
/apino coincide con/apiv2); Exact coincide con una sola ruta. Enkubectl create ingress, un*final significa Prefix. - Un 404 del controlador significa que ninguna regla coincidió (host, path o clase); un 503 significa que la regla coincidió pero el Service no tiene endpoints listos. Define siempre la cabecera Host cuando pruebes por IP.
Términos clave
- ClusterIP
- Tipo de Service por defecto, con una IP virtual interna alcanzable solo dentro del clúster.
- NodePort
- Tipo de Service que además abre un puerto (rango por defecto 30000-32767) en todos los nodos.
- LoadBalancer
- Tipo de Service que aprovisiona un balanceador de carga externo a través del proveedor de nube o un complemento.
- ExternalName
- Tipo de Service que devuelve un CNAME de DNS hacia un host externo, sin hacer de proxy.
- Headless Service (Service headless)
- Service con clusterIP: None cuyo DNS devuelve las IPs individuales de los Pods.
- port
- El puerto en el que escucha el Service, en su ClusterIP y nombre DNS.
- targetPort
- El puerto del Pod al que se reenvía el tráfico; por defecto es igual a port y puede ser un puerto con nombre.
- Named port (puerto con nombre)
- Un containerPort con nombre que un Service puede referenciar como su targetPort.
- EndpointSlice
- Un objeto que lista las direcciones, puertos y readiness de los Pods que respaldan un Service.
- kubernetes.io/service-name
- Etiqueta que vincula una EndpointSlice con su Service.
- Ready condition (condición ready)
- Indicador del endpoint que muestra si un Pod de backend debe recibir tráfico.
- CoreDNS
- El servidor DNS que normalmente proporciona el DNS del clúster para Services y Pods.
- Service FQDN (nombre completo del Service)
- El nombre de Service totalmente calificado <service>.<namespace>.svc.cluster.local.
- Search domains (dominios de búsqueda)
- Sufijos en el resolv.conf de un Pod que permiten que nombres cortos como web se resuelvan dentro de su namespace.
- ndots
- Opción del resolver que indica cuántos puntos necesita un nombre para probarse primero como absoluto.
- kubectl expose
- Crea un Service para un recurso existente, copiando su selector.
- kubectl create service
- Crea un Service de un tipo dado desde cero, con el selector app=<name>.
- --tcp=port:targetPort
- Opción de create service que define el puerto del Service y el puerto de destino.
- kubectl port-forward
- Túnel temporal desde un puerto local hasta un Pod; no crea ningún Service.
- NetworkPolicy
- Objeto con namespace que restringe el tráfico hacia y desde los Pods seleccionados.
- podSelector
- Elige los Pods a los que se aplica una política; {} selecciona todos los Pods del namespace.
- policyTypes
- Ingress, Egress o ambos: qué direcciones aísla la política.
- Isolated Pod (Pod aislado)
- Un Pod seleccionado por una política para una dirección, que entonces solo permite el tráfico autorizado explícitamente.
- Default deny (denegación por defecto)
- Una política que selecciona todos los Pods sin reglas de permiso, bloqueando todo el tráfico en las direcciones indicadas.
- namespaceSelector
- Peer que coincide con los Pods de los namespaces que tienen las etiquetas indicadas.
- ipBlock
- Peer que coincide con un rango CIDR, con rangos except opcionales, normalmente para tráfico externo.
- AND semantics (semántica AND)
- namespaceSelector y podSelector en el mismo elemento de peer deben coincidir ambos.
- OR semantics (semántica OR)
- Elementos de peer separados o reglas separadas permiten tráfico cada uno de forma independiente.
- kubernetes.io/metadata.name
- Etiqueta automática del namespace que contiene su nombre.
- CNI (Container Network Interface)
- La interfaz estándar que usa Kubernetes para que un plugin configure la red de los Pods.
- Network plugin (plugin de red)
- La implementación CNI que proporciona la red de los Pods y, si lo admite, aplica NetworkPolicy.
- Calico / Cilium
- Plugins de red muy usados que aplican NetworkPolicy.
- eBPF
- Tecnología del kernel de Linux para ejecutar pequeños programas verificados, que algunos plugins usan para filtrar tráfico.
- Ingress
- Un objeto que define reglas de enrutamiento HTTP(S) hacia Services basadas en host y path.
- ingressClassName
- Campo que elige qué IngressClass (controlador) implementa el Ingress.
- pathType Prefix
- Coincide con el path y con todo lo que está por debajo, elemento por elemento.
- pathType Exact
- Coincide solo con la ruta de URL exacta.
- defaultBackend
- Service que recibe las solicitudes que no coinciden con ninguna regla.
- Ingress controller
- El componente que observa los objetos Ingress y ejecuta el proxy que enruta el tráfico.
- IngressClass
- Objeto que identifica un controlador, que los Ingresses seleccionan con ingressClassName.
- Host header (cabecera Host)
- Cabecera HTTP que nombra el host solicitado, usada por las reglas de host del Ingress.
- curl --resolve
- Hace que curl se conecte a una IP elegida para un nombre de host, manteniendo el nombre correcto para TLS.
Estudia CKAD gratis
Plan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.
Abrir el plan de estudioPlan semana a semana con lecciones, cuestionarios, simulaciones de examen y práctica, en español.