Ir al contenido principal

Contextos y Namespaces. Todo lo que hay que saber sobre estos conceptos para el examen CKA.

Conceptos:

  • Namespaces: Son divisiones lógicas dentro de un clúster de Kubernetes que permiten aislar y organizar recursos. Son especialmente útiles cuando múltiples equipos o aplicaciones comparten el mismo clúster, facilitando la gestión y evitando conflictos de nombres.

  • Contextos: Un contexto en Kubernetes es una combinación de un clúster, un usuario y un namespace predeterminado. Facilita la conexión y operación en diferentes entornos sin necesidad de especificar estos parámetros en cada comando.


 Puedes crear múltiples contextos que apunten al mismo clúster, pero con diferentes combinaciones de usuario y namespace. Ejemplos:

Mismo clúster, diferentes namespaces: Esto es útil si trabajas en distintos entornos (desarrollo, staging, producción) dentro del mismo clúster.

Mismo clúster, diferentes usuarios: Permite que distintos usuarios tengan configuraciones personalizadas según sus permisos y roles.

Contextos para diferentes clústeres: Facilita la administración de múltiples clústeres desde una única configuración.

 Básicamente, los contextos son combinaciones de:

  • Clúster (definido por --cluster)
  • Usuario (definido por --user)
  • Namespace (definido por --namespace)
La diferencia principal entre tener dos namespaces y tener dos contextos configurados para cada namespace radica en cómo manejas y accedes a los recursos dentro de los namespaces en Kubernetes.


  • Si trabajas en pocos namespaces y no cambias de uno a otro frecuentemente, usar -n <namespace> o cambiar el namespace temporalmente puede ser suficiente.
  • Si trabajas en varios namespaces de forma regular, tener contextos separados es más eficiente porque facilita el cambio entre ellos sin errores.

    Uso de Contextos vs. Especificar Namespaces en Comandos:

    La principal diferencia entre tener múltiples namespaces y configurar contextos para cada uno radica en la eficiencia y facilidad de uso:

    • Uso de -n <namespace>: Es útil para cambios ocasionales de namespace. Sin embargo, puede ser propenso a errores si olvidas especificar el namespace en cada comando.

    • Configuración de contextos: Es más eficiente si trabajas regularmente con múltiples namespaces, ya que establece un namespace predeterminado, reduciendo la posibilidad de errores y la necesidad de especificar el namespace en cada comando

  •  Los namespaces predeterminados de tu clúster, organizan los recursos y dividen el clúster lógicamente, manteniendo la infraestructura básica y las aplicaciones de usuario separadas. Para trabajar eficazmente con Kubernetes, es clave entender qué namespace utilizar según el propósito del recurso:

    Para prepararte adecuadamente para el CKA, es esencial que practiques la creación y gestión de contextos y namespaces. Familiarízate con los comandos mencionados y asegúrate de entender cómo interactúan los contextos con los namespaces y usuarios.

    Parte práctica:

    Puedes crear un contexto directamente desde kubectl

    El comando principal que se utiliza para manejar contextos es kubectl config, que trabaja directamente con el archivo ~/.kube/config.


    Cómo crear un contexto manualmente desde kubectl

    1. Verifica los clústeres, usuarios y namespaces configurados
      Antes de crear un contexto, necesitas asegurarte de que los clústeres y usuarios estén correctamente configurados.

      kubectl config get-clusters kubectl config get-users kubectl get namespaces
    2. Ver el contexto actual.

      kubectl config current-context

    3. Ver el contenido del archivo kubeconfig.

      kubectl config view

      Sin opción --minify:

      Incluye detalles de todos los clústeres, usuarios y contextos en el archivo de configuración.

      Con opción --minify:

      Incluye solo la configuración activa.

    4. Crea el nuevo contexto
      Usa el siguiente comando para crear un contexto:

      kubectl config set-context <nombre-del-contexto> \ --cluster=<nombre-del-cluster> \ --namespace=<nombre-del-namespace> \ --user=<nombre-del-usuario>
      • --cluster: El nombre del clúster al que se conectará este contexto.
      • --namespace: El namespace predeterminado para este contexto.
      • --user: El usuario que se autentica con el clúster.

      Ejemplo:
      Supongamos que tienes un clúster llamado mi-cluster, un usuario admin-user y quieres trabajar en el namespace produccion:

      kubectl config set-context contexto-produccion \ --cluster=mi-cluster \ --namespace=produccion \ --user=admin-user
    5. Verifica que el contexto haya sido creado
      Lista los contextos para confirmar que se creó correctamente:

      kubectl config get-contexts
    6. Cambia al nuevo contexto
      Una vez que has creado el contexto, puedes cambiar a él usando:

      kubectl config use-context <nombre-del-contexto>

      En el ejemplo anterior:

      kubectl config use-context contexto-produccion

    Consejo adicional: Crear contextos en un archivo de configuración separado

    Si necesitas crear un contexto para un nuevo clúster sin modificar tu archivo ~/.kube/config, puedes usar un archivo de configuración independiente. Ejemplo:

    1. Genera un nuevo archivo de configuración de Kubernetes (por ejemplo, nuevo-config).

    2. Usa el comando kubectl para especificar el archivo al crear el contexto:

      kubectl --kubeconfig=nuevo-config config set-context <nombre-del-contexto> \ --cluster=<nombre-del-cluster> \ --namespace=<nombre-del-namespace> \ --user=<nombre-del-usuario>
    3. Usa ese archivo con la opción --kubeconfig cuando necesites interactuar con el clúster:

      kubectl --kubeconfig=nuevo-config get pods

    Eliminar un contexto si ya no lo necesitas

    Si creaste un contexto y ya no lo necesitas, puedes eliminarlo:

    kubectl config delete-context <nombre-del-contexto>

    Comandos útiles relacionados con namespaces

    1. Listar todos los namespaces:

      kubectl get namespaces
    2. Cambiar entre namespaces:

      • Con el comando kubectl, puedes especificar un namespace en cada solicitud con -n.
      kubectl get pods -n kube-system
      • O puedes cambiar el namespace por defecto con un contexto:
      kubectl config set-context --current --namespace=kube-system
    3. Crear un namespace nuevo:

      kubectl create namespace mi-namespace
    4. Eliminar un namespace:

      kubectl delete namespace mi-namespace
    5.  Listar todos los Pods de todos los namespaces en el contexto que estás utilizando actualmente:

      kubectl get pods --all-namespaces

    Escenario Común en el Examen CKA:

    • Configurar y gestionar namespaces para pruebas y luego eliminarlos al finalizar, asegurándote de no afectar recursos críticos.

    Trucazo que no tiene que con el CKA ni para usarlo en el exámen:

    Usar el prompt del shell

    Puedes personalizar tu shell (por ejemplo, bash o zsh) para que muestre el contexto y namespace actuales en el prompt. Aquí tienes un ejemplo para bash:

    function kube_ps1() { echo "$(kubectl config current-context):$(kubectl config view --minify --output 'jsonpath={..namespace}' || echo 'default')" }     export PS1='[\u@\h $(kube_ps1)]\$ '

    Esto agregará el contexto y el namespace al prompt.

    Comentarios

    Entradas populares de este blog

    Ubicación, Estructura y Manejo básico de certificados.

                                                         Kubernetes utiliza certificados TLS (X.509) para cifrar la comunicación entre sus componentes y autenticar identidades (usuarios, nodos, API Server, etc.). Estos certificados son generados y gestionados automáticamente cuando se instala un clúster con kubeadm . En este artículo, veremos dónde se almacenan los certificados , cuál es su estructura y cómo inspeccionarlos fácilmente, una habilidad muy útil para el examen CKA. Cuando creas un clúster con kubeadm , los certificados se generan por defecto en el directorio: /etc/ kubernetes /pki/ Puedes ver su contenido con: ls -l /etc/kubernetes/pki/ También hay certificados en: /etc/kubernetes/ (ahí verás admin.conf , kubelet.conf , etc., que incluyen certificados embebidos, como veremos más abajo). 🧱 Estructura de los ce...

    🔁 Renovación y Rotación de Certificados en Kubernetes (kubeadm certs)

      🎯 Introducción En un clúster de Kubernetes, la mayoría de los certificados generados por kubeadm tienen una validez de un año . Para evitar interrupciones en los componentes críticos, es fundamental revisar periódicamente su vigencia y saber cómo renovarlos correctamente. En este artículo aprenderás: Cómo comprobar la expiración de los certificados Cómo renovarlos automáticamente con kubeadm Cómo simular una renovación manual con openssl Cómo aplicar los cambios reiniciando los componentes afectados 🕵️‍♂️ Comprobación del estado de los certificados Kubernetes ofrece una herramienta integrada para revisar los certificados del clúster: kubeadm certs check-expiration Este comando muestra información clave: Fecha de expiración Tipo de certificado Ruta en el sistema 📌 Salida de ejemplo: CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY apiserver Jan 06 , 2026 19 :56 UTC 330d ...

    TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                           Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...