¿Qué vamos a ver?

What You'll Learn

Basado en la documentación oficial de K8s (licencia CC-BY-4.0).

  1. Accede a console.cloud.google.com
  2. Loguéate con tu cuenta de usuario elegida para el curso.
  3. Una vez ya en la consola, en la esquina superior izquierda busca un desplegable con 3 hexágonos pequeños para seleccionar tu proyecto.
  4. Ábrelo y selecciona tu proyecto asignado. Puedes tener que hacer click en el desplegable de organizaciones y cambiar a Sin organización.
  5. Te recomendamos dividir el escritorio horizontalmente en dos ventanas, una con la consola y/o Cloud Shell y otra con las instrucciones.
  6. Activa Cloud Shell en el icono de la parte superior derecha >_.
  7. Puedes configurar la completación de comandos para kubectl con la tecla "TAB":
    source <(kubectl completion bash)
    
    Comprueba que funciona escribiendo kubectl y presionando la tecla "TAB" 2 veces.

Crea un namespace

Crea un namespace para aislar los recursos de este ejercicio del resto de recursos en tu clúster:

kubectl create namespace lab-node-selection

Podemos añadir etiquetas a Nodos de la misma forma que a cualquier otro objeto en K8s, permitiéndonos así referenciarlo en el futuro.

  1. Lista los Nodos disponibles en tu clúster y sus etiquetas por defecto:
    kubectl get nodes --show-labels
    
    ¿Qué etiquetas asigna K8s por defecto a estos Nodos?
  2. Elige uno de los Nodos con nombre [NOMBRE_NODO] y añádele una etiqueta:
    kubectl label nodes [NOMBRE_NODO] disktype=ssd
    
  3. Verifica que la etiqueta se ha asignado correctamente:
    kubectl get nodes [NOMBRE_NODO] --show-labels
    

Vamos a crear un Pod en un tipo de Nodo específico, usando una etiqueta asignada al Nodo, disktype=ssd.

  1. Crea el archivo pods/pod-node-selection.yaml con este manifiesto:
    apiVersion: v1
    kind: Pod
    metadata:
    name: nginx
    labels:
    env: test
    spec:
    containers:
    - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    nodeSelector:
    disktype: ssd       
    
  2. Crea el Pod:
    kubectl apply -f pods/pod-node-selection.yaml -n lab-node-selection
    
  3. Verifica que está ejecutándose en el Nodo correcto:
    kubectl get pods nginx -n lab-node-selection -o wide
    

En este caso vamos a crear un Pod en un Nodo en concreto, usando el nombre del Nodo.

  1. Vuelve a listar los Nodos disponibles y escoge uno de ellos:
    kubectl get nodes
    
  2. Crea el archivo pods/pod-node-selection2.yaml con este manifiesto, sustituyendo [NOMBRE_NODO] por el nombre del Nodo seleccionado:
    apiVersion: v1
    kind: Pod
    metadata:
    name: nginx-2
    labels:
    env: test
    spec:
    containers:
    - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    nodeName: [NOMBRE_NODO]
    
  3. Crea el Pod:
    kubectl apply -f pods/pod-node-selection2.yaml -n lab-node-selection
    
  4. Verifica que está ejecutándose en el Nodo correcto:
    kubectl get pods nginx-2 -n lab-node-selection -o wide
    

Eliminar los recursos usados

Elimina el namespace, lo cual eliminará todos los recursos:

kubectl delete namespace lab-node-selection

En esta práctica hemos visto cómo:

What we've covered