¿Qué vamos a ver?
Basado en la documentación oficial de K8s (licencia CC-BY-4.0).
>_.source <(kubectl completion bash)
Comprueba que funciona escribiendo kubectl y presionando la tecla "TAB" 2 veces.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.
kubectl get nodes --show-labels
¿Qué etiquetas asigna K8s por defecto a estos Nodos?[NOMBRE_NODO] y añádele una etiqueta:kubectl label nodes [NOMBRE_NODO] disktype=ssd
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.
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
kubectl apply -f pods/pod-node-selection.yaml -n lab-node-selection
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.
kubectl get nodes
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]
kubectl apply -f pods/pod-node-selection2.yaml -n lab-node-selection
kubectl get pods nginx-2 -n lab-node-selection -o wide
Elimina el namespace, lo cual eliminará todos los recursos:
kubectl delete namespace lab-node-selection
En esta práctica hemos visto cómo: