Probar Linux real en el navegador (beta) · Debian, con root, prácticas y botón Reset. La terminal simulada sigue disponible.
SANDBOX · LINUX / RHCSA 9
Terminal Linux · RHCSA 9
Una máquina Rocky Linux 9.4 para practicar RHCSA 9: recuperación mediante GRUB, usuarios, permisos, SELinux, systemd, red y almacenamiento. Escribe help o man <comando>.
visitor@s2ktux: ~
Rocky Linux 9.4 · RHCSA 9
visitor@s2ktux:~$
Ctrl+C cancela · Tab completa · ↑↓ recupera el historial · Esc sale de editores y menús.
↑ ↓ recuperan comandos · Tab completa órdenes y rutas · Ctrl+C cancela · Ctrl+Z pausa · Ctrl+D cierra · Ctrl+R busca en el historial · | > 2> conectan y redirigen
CHEATSHEET · LINUX / RHCSA 9
Shell y ficheros
Permisos y ACL
Usuarios
Procesos y systemd
Paquetes
Almacenamiento
Red
SELinux
Flujo diario
Imágenes y Dockerfile
Contenedores
Volúmenes
Redes
Docker Compose
Producción
Arranque y tareas
Red del lab
kubectl y YAML
Clúster y Pods
Workloads
Config
Scheduling
Storage
Servicios y Red
RBAC
Administración
YAML útiles
Troubleshooting
Flujo recomendado: localiza, inspecciona, transforma y solo después modifica. Usa man COMANDO para consultar opciones sin salir de la terminal.
pwd · cd · lsRuta actual, cambiar de directorio, listar.
tree · cat · head · tailÁrbol, ver contenido, principio/final.
mkdir · rmdir · touchCrear directorio / borrar vacío / crear fichero.
rm · cp · mv · lnBorrar, copiar, mover, enlazar.
find · grep · wcBuscar ficheros / texto / contar.
grep -Rin PATRÓN RUTABusca texto recursivamente mostrando línea; añade -E para expresiones regulares extendidas.
sed · awk · cut · trFiltra, sustituye y selecciona columnas en flujos de texto.
stat · file · whichMetadatos / tipo / ruta del ejecutable.
sort · uniq · nlOrdenar / quitar duplicados / numerar.
> · >> · 2> · 2>&1Redirige salida, añade, separa errores o reúne stdout y stderr.
cmd1 | cmd2Tuberías: encadena la salida de un comando a otro.
cmd1 && cmd2 · || · ;Encadena por éxito / fallo / siempre.
tar -caf copia.tar.xz RUTA · tar -xaf copia.tar.xzCrea o extrae un archivo; -a elige la compresión por la extensión.
$VAR · "$VAR" · '*.log'Expansión de variables; comillas dobles expanden y simples conservan el texto literal.
vi FICHERO · nano FICHEROEditores (vi modal; nano con ^O/^X).
./script.shEjecuta un script con permiso +x.
ls -lLee permisos: rwx para usuario/grupo/otros. Ej: -rwxr-x--- = 750.
chmod 640 F · chmod u+x FOctal (r=4 w=2 x=1) o simbólico (u/g/o + +/- + rwx). Ej: 640 = rw-r-----.
chmod -R g+w DIR-R aplica recursivamente a todo el árbol.
chown usuario:grupo FCambia propietario y grupo (chgrp solo el grupo).
umaskMáscara por defecto (022 → ficheros 644, directorios 755).
chmod u+s · g+s · +tEspeciales: SUID / SGID (herencia de grupo en dirs) / sticky bit.
getfacl FMuestra las ACL de un fichero (permisos más allá de ugo).
setfacl -m u:ana:rwx FDa permisos a un usuario concreto (-m modifica, -x quita, -b borra todas).
Regla práctica: crea la cuenta, asigna grupos, define caducidad y verifica siempre con id y getent.
whoami · id · groupsQuién soy, UID/GID, grupos.
useradd -m -s /bin/bash anaCrea usuario con directorio personal y shell explícita.
usermod -aG wheel anaAñade a un grupo suplementario sin borrar los grupos actuales.
userdel -r ana · groupadd · groupdelElimina cuenta y home; crea o elimina grupos.
passwd · chage -M 90 -W 7 anaContraseña y política de caducidad; comprueba con chage -l.
su · exit · getentCambiar de usuario / volver / consultar BD.
visudo · /etc/sudoers.d/anaEdita y valida privilegios sudo sin arriesgar un fichero inválido.
Diagnóstico: identifica el proceso, comprueba el servicio y correlaciona su fallo con el journal antes de reiniciarlo.
ps aux · ps -ef · pgrep -a NOMBREVista global o búsqueda precisa de procesos y argumentos.
top · uptime · free -hCPU/carga, tiempo activo y memoria disponible.
comando & · jobs · fg · bgEjecuta y controla trabajos en segundo o primer plano.
kill -TERM PID · kill -KILL PIDSolicita cierre limpio; usa KILL solo cuando el proceso no responde.
nice -n 10 CMD · renice 5 -p PIDInicia o reajusta la prioridad de CPU.
systemctl status|start|stop UNIDADConsulta y controla el estado actual del servicio.
systemctl enable --now UNIDADArranca ahora y también durante los próximos inicios.
journalctl -u UNIDAD -b --since -30mLogs de la unidad en este arranque y periodo reciente.
dnf search TEXTO · dnf info PAQBusca en los repos y muestra detalles de un paquete.
dnf install PAQ · -yInstala (pide confirmación; -y la salta). Ej: dnf install httpd.
dnf remove · dnf updateElimina o actualiza todo el sistema.
dnf list installed · availableLista paquetes instalados o disponibles.
dnf provides /ruta · repolistQué paquete da un fichero · repos activos.
dnf config-manager --add-repo URLAñade un repositorio en /etc/yum.repos.d/.
dnf group list · group installGrupos de paquetes (p.ej. "Development Tools").
rpm -qa · rpm -q PAQLista todo lo instalado · consulta un paquete.
rpm -ql PAQ · rpm -qf /rutaFicheros de un paquete · a qué paquete pertenece un fichero.
rpm -qi PAQ · rpm -V PAQInformación detallada · verifica integridad.
rpm -ivh FICHERO.rpmInstala un .rpm local (para RHCSA; dnf resuelve dependencias).
yumObsoleto en RHEL 9: usa dnf (apt/dpkg no existen en Red Hat).
Orden seguro: identifica el dispositivo, crea partición/volumen, formatea, monta, verifica y finalmente hazlo persistente.
lsblk · fdisk · blkidDiscos, particiones y UUIDs. Hay un /dev/sdb vacío.
partedParticionado (también discos grandes / GPT).
mkfs.xfs · mkfs.ext4Formatea una partición.
mount · umount · df · duMonta / desmonta / uso de disco.
blkid · /etc/fstab · mount -aObtén el UUID, declara el montaje persistente y valida la sintaxis sin reiniciar.
pvcreate · vgcreate · vgextendLVM: inicia PV, crea/amplía el grupo (VG). Compruébalo con pvs / vgs.
lvcreate -n x -L 5G vgCrea un volumen lógico (· -l 100%FREE usa todo el espacio libre).
lvextend -r -L +2G /dev/vg/xAmplía el LV y, con -r, también el FS (o xfs_growfs / resize2fs).
pvs vgs lvs · lvremoveVer PV/VG/LV · eliminar un volumen.
mkswap · swapon --showCrear y activar/ver el swap.
mount -t nfs SERVIDOR:/ruta /mntMonta un recurso NFS; usa _netdev en fstab para montajes de red.
/etc/auto.master.d/ · /etc/auto.*Mapas de autofs para montar recursos bajo demanda.
Diagnóstico por capas: enlace → dirección → ruta → DNS → puerto → firewall.
ip a · ip routeDirecciones IP e interfaces · tabla de rutas (puerta de enlace).
ip link set eth0 up|downActiva o desactiva el enlace (equivale a ifup/ifdown).
nmcli general · dev statusEstado de red y de los dispositivos (connected/disconnected).
nmcli con show [eth0]Lista conexiones · detalle completo de una (IP, gateway, DNS).
nmcli con mod eth0 ipv4.method manualFija IP estática (método manual).
... ipv4.addresses 10.0.0.5/24Dirección y máscara. Añade ipv4.gateway y ipv4.dns.
nmcli con up eth0Aplica los cambios (obligatorio tras con mod).
nmtuiConfiguración de red por menús (editar/activar/hostname).
ping 8.8.8.8 · ping HOSTPrueba conectividad. Falla si falta enlace, gateway o DNS.
ss -tlnpPuertos TCP en escucha y el proceso que los abre.
firewall-cmd --list-allFirewalld: servicios/puertos. --add-* --permanent y --reload.
ssh-keygen · ssh-copy-id usuario@hostCrea una clave y autorízala para iniciar sesión sin contraseña.
curl -I URL · ssh -v usuario@hostPrueba HTTP o depura paso a paso una conexión SSH.
hostnamectl set-hostname NOMBREFija el nombre del sistema de forma persistente.
getenforce · sestatusModo actual / estado de SELinux.
setenforce 0|1Permissive / Enforcing.
getsebool · setseboolVer / cambiar booleanos.
semanage · restorecon · chconPuertos, contextos y su restauración.
ls -Z · ls -lZContexto SELinux de los ficheros (· -lZ en formato largo).
restorecon -Rv RUTARestaura el contexto correcto (p.ej. tras tocar /etc/shadow en rescate).
touch /.autorelabelFuerza el reetiquetado de todo el FS en el próximo arranque.
Flujo profesional: inspecciona lo que existe, usa tags explícitos, crea de forma reproducible y verifica estado, logs y recursos.
docker version · docker infoComprueba las versiones del cliente y servidor y revisa el estado general del host.
docker search TÉRMINOBusca imágenes compatibles en el catálogo simulado de Docker Hub.
docker pull IMAGEN[:TAG]Descarga las capas de una imagen y la incorpora al almacén local.
docker imagesMuestra las imágenes que ya existen en este host.
docker run [OPCIONES] IMAGENCrea y arranca un contenedor; si falta la imagen, primero realiza el pull.
docker ps · docker ps -aLista los contenedores activos o todos, incluidos los detenidos.
docker stop · start · restart · rmAdministra el ciclo de vida y elimina contenedores.
Imágenes disponibles: alpine · nginx · httpd · debian · ubuntu · rockylinux · busybox · mariadb · mysql · postgres · redis · mongo · node · python · php · traefik · rabbitmq · wordpress · hello-world
Idea clave: una imagen debe poder reconstruirse desde su Dockerfile. Las capas se reutilizan por caché; ordena primero lo que menos cambia.
docker search TERM · docker pull IMGBusca y descarga imágenes desde un registry.
docker images · image lsLista repositorio, tag, ID y tamaño local.
docker inspect IMG · history IMGMetadatos completos y capas de construcción.
docker build -t miapp:v1 .Construye una imagen desde el Dockerfile del contexto actual.
docker build --no-cache -t IMG .Reconstruye todas las capas sin reutilizar caché.
docker tag ORIG usuario/app:v1Añade una referencia lista para publicar.
docker login · docker push IMGAutenticación y publicación en el registry.
docker save -o img.tar IMG · load -i img.tarExporta e importa imágenes sin registry.
docker rmi IMG · image pruneElimina imágenes concretas o capas sin uso.
FROM · WORKDIR · COPY · RUNBase, directorio de trabajo, entrada de ficheros y pasos de construcción.
ENV · EXPOSE · USER · CMD · ENTRYPOINTEntorno, puerto documentado, usuario y proceso principal del contenedor.
Dockerfile reproducible y ligero
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
Diferencia esencial: una imagen es la plantilla; un contenedor es una instancia con estado y ciclo de vida propios.
docker run · ps · logsArranca contenedores, lista, logs.
docker run -d --name web -p 8080:80 nginxNombre, segundo plano y publicación de puertos.
start · stop · restart · rmCiclo de vida de un contenedor.
exec · attach · inspect · topEntrar, detalles y procesos.
docker logs -f --tail 100 CONTSigue logs y limita las líneas iniciales.
docker exec -it CONT shEjecuta una shell dentro de un contenedor activo.
docker cp CONT:/ruta ./destinoCopia ficheros entre contenedor y host.
docker create · start -aSepara la creación del arranque y adjunta la salida.
run -m --cpus --restartLímites de recursos y política de reinicio.
docker stats · docker top CONTCPU, memoria, red, bloque y procesos del contenedor.
Elección rápida: volumen para datos administrados por Docker; bind mount para compartir una ruta concreta del host.
docker volume create · ls · inspectVolúmenes persistentes administrados por Docker.
docker run -v datos:/ruta IMGMonta un volumen con nombre dentro del contenedor.
docker run -v /host:/contenedor IMGBind mount desde un directorio del host.
docker cp ORIGEN DESTINOCopia ficheros entre host y contenedor.
docker volume rm · volume pruneBorra volúmenes concretos o los que no están en uso.
--mount type=volume,src=datos,dst=/dataSintaxis explícita recomendada para montajes complejos.
Regla práctica: en una red bridge creada por ti, los contenedores se encuentran por nombre; publica puertos solo para acceder desde fuera.
docker network create · ls · inspectRedes bridge propias con DNS entre contenedores.
docker run --network labnet --name api IMGInicia el contenedor directamente en una red propia.
docker network connect · disconnectConecta o retira un contenedor de una red.
bridge · host · noneDrivers integrados: NAT aislado, pila del host o sin red.
-p 127.0.0.1:8080:80Publica un puerto solo en la interfaz local.
docker port CONTMuestra los mapeos de puertos efectivos.
docker network rm · network pruneLimpia redes propias sin contenedores conectados.
Compose: describe servicios, redes y persistencia como una única aplicación reproducible.
docker compose up -d · downArranca / para toda la app multi-contenedor.
docker compose ps · logs -fEstado de servicios y logs agregados.
docker compose build · pullConstruye servicios propios o actualiza imágenes.
docker compose up -d --scale web=3Escala un servicio durante el despliegue.
docker compose exec web shEjecuta un comando dentro de un servicio.
docker compose down -vElimina contenedores, red y volúmenes del proyecto.
compose.yaml
services:
web:
image: nginx:alpine
ports: ["8080:80"]
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: secreto
volumes: ["db_data:/var/lib/mysql"]
volumes:
db_data:
Antes de limpiar: revisa docker system df, dependencias y montajes. Un prune no distingue lo importante de lo olvidado.
docker stats · docker eventsMétricas en vivo y eventos del motor de contenedores.
docker system dfEspacio usado por imágenes, contenedores y volúmenes.
docker container/image/volume/network pruneLimpieza selectiva por tipo de objeto.
docker system prune -a --volumesLimpieza global agresiva; revisa antes qué está en uso.
--restart no|on-failure|always|unless-stoppedPolíticas de recuperación del contenedor.
--memory 256m --cpus 0.5Límites para evitar que un contenedor agote el host.
docker inspect --format '{{...}}'Extrae campos concretos para scripts y diagnóstico.
docker logs · inspect · exec · topSecuencia básica de troubleshooting operativo.
Persistencia: en RHCSA no basta con que funcione ahora; red, montajes, servicios y tareas deben sobrevivir a un reinicio.
systemctl get-default · set-default TARGETConsulta o cambia el objetivo de arranque predeterminado.
systemctl isolate multi-user.targetCambia al target indicado en la sesión actual.
reboot · shutdown -h nowReinicia o apaga de forma ordenada.
crontab -e · crontab -lPrograma y revisa tareas recurrentes del usuario.
at 22:00 · atq · atrm IDPrograma, lista o elimina una tarea de una sola ejecución.
systemd-run --on-calendar=... CMDCrea un timer transitorio administrado por systemd.
timedatectl · hostnamectlHora/zona y nombre persistente del host.
tuned-adm active · profile PERFILConsulta o aplica un perfil de rendimiento.
Atajos: ↑/↓ historial · Tab completa · Ctrl+C cancela · Ctrl+U borra la línea · Ctrl+A/E inicio/fin.
🖥️ Máquinas de la red del laboratorio (192.168.1.0/24). Escribe labhosts para verlas. Primero configura tu red; luego ssh alumno@web1 (contraseña alumno).
web1 · 192.168.1.10Servidor web (Apache) para practicar conectividad, ssh y curl.
node1 · 192.168.1.12Próximamente: nodo para Ansible y Kubernetes.
Ciclo CKA: consulta → genera → edita → aplica → verifica. Trabaja siempre en el contexto y namespace correctos.
kubectl config current-contextConfirma el clúster activo antes de modificar recursos.
kubectl config set-context --current --namespace=NSFija el namespace de trabajo y evita repetir -n.
kubectl run web --image=nginx --dry-run=client -o yamlGenera el YAML de un Pod sin crearlo.
kubectl create deployment web --image=nginx --dry-run=client -o yamlGenera una base editable para un Deployment.
kubectl expose deploy web --port=80 --dry-run=client -o yamlGenera el Service sin tocar el clúster.
kubectl apply -f recurso.yamlConverge el estado real hacia lo declarado.
kubectl get recurso nombre -o yamlInspecciona el objeto que realmente guarda la API.
kubectl explain deployment.spec --recursiveConsulta campos y estructura directamente desde el esquema de la API.
pwd · cd · ls · cat · grepNavegar, leer YAML y filtrar logs.
vi · nano · cp recurso.yaml{,.bak}Edita y conserva una copia antes de cambios delicados.
Ámbito: los Nodes, PV y StorageClass son de clúster; Pods, Deployments, Services y la mayoría de objetos viven en un namespace.
kubectl cluster-infoInfo del control plane.
kubectl get nodes -o wideNodos del clúster y su estado.
kubectl get pods -ATodos los pods, todos los namespaces.
kubectl describe pod NOMBREDetalle completo + eventos.
kubectl explain pod.specDocumentación de un campo del API.
kubectl config get-contexts / use-contextVer y cambiar de clúster/contexto.
kubectl api-resources · api-versionsRecursos disponibles, nombres cortos, grupos y versiones.
kubectl get RESOURCE -o yaml|jsonInspección declarativa completa del objeto.
-n NS · -A · --context CONTEXTOÁmbito de namespace, todos los namespaces o contexto concreto.
Elige el controlador: Deployment para servicios sin estado, StatefulSet para identidad estable, DaemonSet por nodo y Job/CronJob para tareas finitas.
kubectl run NOMBRE --image=IMGPod suelto (debug rápido).
kubectl create deployment NOMBRE --image=IMGDeployment con su ReplicaSet.
kubectl scale deployment NOMBRE --replicas=NEscalar réplicas.
kubectl rollout status/history/undo deployment NOMBREEstado, historial y rollback.
kubectl apply -f fichero.yamlAplica el estado declarado (YAML).
kubectl edit deployment NOMBREEdita el recurso en caliente.
kubectl delete -f fichero.yamlElimina lo declarado en el fichero.
kubectl set image deploy/app c=IMGActualiza la imagen de un contenedor del Deployment.
kubectl rollout restart deploy/appFuerza un nuevo rollout sin cambiar la plantilla funcional.
kubectl create job · create cronjobTrabajo finito o ejecución programada.
kubectl autoscale deploymentCrea un HPA basado en métricas.
Separa imagen y configuración: ConfigMap para datos no sensibles, Secret para credenciales y probes para comunicar salud real al clúster.
kubectl create configmap N --from-literal=k=vConfiguración no sensible.
kubectl create secret generic N --from-literal=k=vConfiguración sensible (base64, no cifrado).
envFrom / valueFrom.configMapKeyRefInyectar como variables de entorno del Pod.
volumeMounts + configMap/secret como volumenInyectar como ficheros dentro del contenedor.
kubectl get secret N -o jsonpath='{.data.k}' | base64 -dLeer el valor real de un secret.
kubectl create configmap N --from-file=RUTAConstruye un ConfigMap desde uno o varios ficheros.
command / args / envSobrescribe ENTRYPOINT, CMD y variables del contenedor.
livenessProbe · readinessProbe · startupProbeSalud, disponibilidad para tráfico y arranque lento.
securityContextUsuario, grupo, privilegios y capacidades del Pod/contenedor.
Primero filtra, después puntúa: requests, taints y afinidades determinan dónde puede ejecutarse un Pod; las preferencias ayudan a elegir entre nodos válidos.
resources.requests / resources.limitsReserva mínima y techo de CPU/memoria por contenedor.
kubectl describe node NODOCapacidad del nodo y lo ya reservado.
nodeSelector: disktype: ssdFuerza el pod a nodos con esa etiqueta.
affinity / anti-affinityReglas finas de "cerca de" / "lejos de" otros pods o nodos.
kubectl taint NODO clave=valor:EffectEl nodo repele pods salvo que los toleren.
tolerationsPermite a un pod aceptar un taint concreto.
kubectl cordon/drain/uncordon NODOSacar un nodo de servicio para mantenimiento.
priorityClassName · preemptionPolicyPrioridad y posible desalojo de Pods menos importantes.
topologySpreadConstraintsDistribuye réplicas entre zonas, hosts u otros dominios.
kubectl top nodes · top podsConsumo actual para decisiones de scheduling.
Cadena: el Pod monta un PVC; el PVC enlaza con un PV existente o solicita que una StorageClass lo aprovisione.
PersistentVolume (PV)Almacenamiento real, lo provee el clúster/admin.
PersistentVolumeClaim (PVC)Petición de almacenamiento que hace una app.
StorageClassPlantilla para aprovisionar PVs de forma dinámica.
kubectl get pv,pvcVer volúmenes y sus peticiones.
accessModes: RWO / ROX / RWXCómo se puede montar (uno, varios en lectura, varios en escritura).
reclaimPolicy: Delete|RetainQué ocurre con el volumen cuando se elimina el claim.
volumeMode: Filesystem|BlockEntrega un sistema de ficheros o un dispositivo de bloque crudo.
kubectl describe pvc NOMBREDiagnostica Pending, clase, eventos y binding.
Ruta del tráfico: cliente → Gateway/Ingress o Service → EndpointSlice → Pod. Comprueba cada salto por separado.
Service ClusterIPIP estable interna para un grupo de pods (por defecto).
Service NodePort / LoadBalancerExposición hacia fuera del clúster.
CoreDNSResuelve Services por nombre (servicio.namespace).
IngressEnruta HTTP/HTTPS por host/ruta a varios Services.
Gateway APIEl sucesor de Ingress (GatewayClass, Gateway, HTTPRoute).
NetworkPolicyReglas de firewall entre pods.
kubectl expose deploy APP --port=80 --target-port=8080Crea un Service que selecciona el Deployment.
kubectl get endpoints · endpointslicesComprueba si el selector del Service encuentra backends.
kubectl port-forward svc/app 8080:80Acceso temporal local sin cambiar el Service.
nslookup servicio.namespaceComprueba el DNS interno desde un Pod de diagnóstico.
Modelo: Role define permisos; RoleBinding los entrega a un usuario, grupo o ServiceAccount. Aplica siempre mínimo privilegio.
Role / ClusterRolePermisos dentro de un namespace / en todo el clúster.
RoleBinding / ClusterRoleBindingAsigna un Role a un usuario o ServiceAccount.
ServiceAccount"Usuario" para procesos que corren dentro del clúster (pods).
kubectl auth can-i VERBO RECURSOComprueba si tienes permiso para algo.
kubectl create token SERVICEACCOUNTGenera un token de acceso.
kubectl auth can-i --list -n NSEnumera las acciones permitidas en un namespace.
kubectl auth can-i get pods --as system:serviceaccount:NS:SASimula la autorización de un ServiceAccount.
verbs · apiGroups · resources · resourceNamesCampos principales de una regla RBAC precisa.
CKA actual: instalación, ciclo de vida y alta disponibilidad, además de extensiones y componentes instalados con Helm o Kustomize.
kubeadm init / kubeadm joinArrancar el control plane / unir un nodo nuevo.
kubeadm upgrade plan/applySubir de versión el clúster.
--control-plane-endpoint · --upload-certsPunto estable y certificados para un control plane de alta disponibilidad.
etcdctl snapshot save/restoreCopia de seguridad y restauración de etcd.
helm install/upgrade/uninstallGestor de paquetes de Kubernetes (charts).
kustomize build · kubectl apply -kVariantes de manifiestos sin plantillas.
kubeadm certs check-expirationRevisa la caducidad de certificados del control plane.
kubectl drain NODO --ignore-daemonsetsPreparación segura del nodo antes de mantenimiento o upgrade.
etcdctl endpoint health · statusSalud y estado del almacén del clúster.
crictl ps · crictl logs IDDiagnóstico directo del runtime cuando kubectl no basta.
CNI · CSI · CRIInterfaces estándar para red, almacenamiento y runtime de contenedores.
CRD · OperatorAmplía la API con nuevos recursos y controladores que los reconcilian.
Cómo leer un manifiesto: apiVersion + kind dicen qué recurso es, metadata lo identifica, spec declara lo deseado y status lo completa Kubernetes.
Deployment + Service
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
spec:
replicas: 3
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web
spec:
selector: { app: web }
ports:
- port: 80
targetPort: 80
Configuración, recursos y salud
spec:
containers:
- name: api
image: mi-api:1.4
envFrom:
- configMapRef: { name: api-config }
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { cpu: 500m, memory: 256Mi }
readinessProbe:
httpGet: { path: /ready, port: 8080 }
livenessProbe:
httpGet: { path: /health, port: 8080 }
PVC y montaje persistente
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: datos
spec:
accessModes: [ReadWriteOnce]
resources:
requests:
storage: 2Gi
# Dentro de spec.template.spec:
volumes:
- name: datos
persistentVolumeClaim: { claimName: datos }
# Dentro del contenedor:
volumeMounts:
- name: datos
mountPath: /var/lib/app
NetworkPolicy: entrada solo desde frontend
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-desde-frontend
spec:
podSelector:
matchLabels: { app: api }
policyTypes: [Ingress]
ingress:
- from:
- podSelector:
matchLabels: { app: frontend }
ports:
- protocol: TCP
port: 8080
Orden de diagnóstico: estado → eventos → describe → logs → configuración → nodo/control plane. No reinicies antes de capturar la causa.
kubectl get events --sort-by=.lastTimestampQué ha pasado últimamente en el clúster.
kubectl logs POD -c CONTENEDOR --previousLogs del contenedor, incluso si reinició.
kubectl describe pod PODMotivo real de un Pending/CrashLoopBackOff.
kubectl get pods -o wideEn qué nodo está y su IP.
kubectl exec -it POD -- shEntrar a inspeccionar desde dentro.
systemctl status kubelet (en el nodo)Diagnóstico cuando un nodo está NotReady.
kubectl get pod POD -o jsonpath='{.status...}'Extrae condiciones y mensajes exactos para aislar el fallo.
kubectl debug POD -it --image=busyboxAñade un contenedor efímero de diagnóstico.
kubectl debug node/NODO -itAbre un entorno de diagnóstico sobre el nodo.
crictl pods · ps -a · inspectComprueba sandboxes y contenedores directamente con CRI.
journalctl -u kubelet --since -15mAcota los logs al intervalo del incidente.
PRÁCTICAS GUIADAS · RHCSA 9
SIMULACRO CKA
Dos horas, objetivos visibles y sin validaciones durante el examen. Al finalizar recibirás una puntuación global.
Elige un reto, resuélvelo en la terminal de arriba y pulsa Comprobar. El sistema mira el estado real de tu máquina y te dice si lo has conseguido.
▼