CKAD / Lecciones en español · English
Lecciones de CKAD CKAD (Kubernetes v1.35 curriculum)
- Escribir Dockerfiles: imágenes base, capas, builds multietapa, ENTRYPOINT vs CMD
- Construir, etiquetar, guardar y cargar imágenes con docker o podman (build, tag, save, load)
- Cómo `command` y `args` del Pod sobrescriben ENTRYPOINT y CMD de la imagen
- Elegir un workload: Deployment, StatefulSet, DaemonSet, Job, CronJob, Pod suelto
- Jobs: completions, parallelism, backoffLimit, activeDeadlineSeconds, restartPolicy Never/OnFailure
- CronJobs: sintaxis de schedule, concurrencyPolicy, límites de historial y ejecución manual de un Job desde un CronJob
- Patrones multicontenedor: init containers, sidecars (incluidos los sidecars nativos con restartPolicy: Always), adapter y ambassador
- Volúmenes efímeros: emptyDir (incluido medium: Memory) y volúmenes configMap/secret/projected
- Almacenamiento persistente: PersistentVolume, PersistentVolumeClaim, StorageClass, modos de acceso y aprovisionamiento dinámico
- Montar volúmenes con volumeMounts, mountPath, subPath y readOnly
- Deployments y ReplicaSets: cómo encajan la plantilla de Pod, las etiquetas y los selectores
- Rolling updates: maxSurge, maxUnavailable, minReadySeconds; la estrategia Recreate
- kubectl rollout status, history, undo (--to-revision), pause y resume; kubectl set image y scale
- Despliegues blue/green cambiando el selector de un Service entre dos Deployments
- Canary releases con dos Deployments detrás de un Service, ponderados por número de réplicas
- Fundamentos de Helm: repositorios, charts, releases; helm repo add/update, search, install, upgrade, rollback, uninstall, list
- Valores de Helm: helm show values, --set y -f values.yaml, helm template, namespaces con -n y --create-namespace
- Kustomize: kustomization.yaml, resources, namePrefix, namespace, commonLabels/labels, images, patches, configMapGenerator
- Aplicar overlays con kubectl apply -k y previsualizar con kubectl kustomize
- APIs obsoletas y eliminadas: encontrar los apiVersion actuales con kubectl api-resources, api-versions y explain
- Actualizar manifiestos a grupos de API soportados (Ingress networking.k8s.io/v1, CronJob batch/v1, HPA autoscaling/v2)
- Probes de liveness, readiness y startup; handlers httpGet, tcpSocket, exec y grpc; campos de temporización
- Qué provoca el fallo de cada probe: reiniciar el contenedor vs quitar el Pod de los endpoints del Service
- kubectl get, describe, get events y top pod/node (metrics-server) para monitoreo
- Logs de contenedores: kubectl logs con -c, -f, --previous, --tail, --since, -l y deploy/<name>
- Leer el estado de un Pod: Pending, ImagePullBackOff, CrashLoopBackOff, OOMKilled, Completed y códigos de salida
- Depuración: kubectl exec, kubectl debug (contenedores efímeros y copias de Pods), port-forward y Pods temporales de busybox
- Trucos de salida para diagnosticar rápido: -o wide, -o yaml, jsonpath, --show-labels, --sort-by
- Extender Kubernetes: CustomResourceDefinitions, recursos personalizados y Operators; descubrirlos con kubectl get crd y api-resources
- Flujo de una solicitud: autenticación, autorización (RBAC) y control de admisión (mutating y validating)
- Objetos RBAC: Role, ClusterRole, RoleBinding, ClusterRoleBinding; kubectl auth can-i con --as
- Requests y limits de CPU y memoria; unidades (m, Mi, Gi); clases de QoS
- ResourceQuota del namespace y valores por defecto de LimitRange
- ConfigMaps: crear desde literales, archivos y archivos env; consumir como env, envFrom y volúmenes
- Secrets: tipos generic, docker-registry y tls; codificación base64 vs cifrado; secretKeyRef y montaje como volumen
- ServiceAccounts: serviceAccountName, proyección de tokens, automountServiceAccountToken, kubectl create token
- SecurityContext a nivel de Pod y de contenedor: runAsUser, runAsNonRoot, fsGroup, readOnlyRootFilesystem, allowPrivilegeEscalation
- Capabilities de Linux (add/drop) y niveles de Pod Security Admission (privileged, baseline, restricted)
- Tipos de Service: ClusterIP, NodePort, LoadBalancer, ExternalName y headless (clusterIP: None)
- Selectores, port vs targetPort vs nodePort y puertos con nombre
- EndpointSlices y por qué una lista de endpoints vacía significa que el selector o la readiness están mal
- Nombres DNS del clúster: <service>.<namespace>.svc.cluster.local
- kubectl expose, kubectl create service y kubectl port-forward
- Fundamentos de NetworkPolicy: podSelector, policyTypes, reglas de ingress y egress, denegación por defecto
- Peers de NetworkPolicy: podSelector, namespaceSelector, ipBlock; semántica AND vs OR de las reglas; permitir DNS en egress
- NetworkPolicy necesita un plugin CNI que la aplique (por ejemplo Calico o Cilium)
- Recursos Ingress: ingressClassName, reglas de host y path, pathType Prefix vs Exact, default backend y Secrets TLS
- Ingress controllers (por ejemplo ingress-nginx) y pruebas con curl y cabeceras Host