Ejercicios de Labels y Selectors en Kubernetes
En esta entrada vamos a ver una serie de ejercicios de Labels y Selectors en kubernetes. Si quieres dar un repaso a algún concepto de Kubernetes puedes echar un ojo en alguna de nuestras entradas anteriores.
Labels son un par clave/valor adjunto a un objeto, como pueden ser los Pods. Son usados para identificar a los objetos que serán relevantes a los usuarios. Por ejemplo, tienes un conjunto de objetos que van a funcionar en producción y otros en desarrollo.
Los Node Selector, al igual que los labels son clave/valor y sirve para identificar que objeto esta en qué nodo.
Ejercicios de Kubernetes con Labels y Selectors
1 .- Crear dos pods que tengan la etiqueta app=v1
kubectl run mypod1 --image=nginx --restart=Never -l app=v1 kubectl run mypod2 --image=nginx --restart=Never -l app=v1
2.- Ver las etiquetas de los Pods.
kubectl get po --show-labels
3.- Cambiar la etiqueta del pod mypod2 a app=v2
kubectl label pod mypod1 app=v2 --overwrite
4.- Obetener el Label app de los pods
kubectl describe pods mypod{1..2} | grep Labels
5.- Obtener los pods con la etiqueta app=v2
Kubectl get pods -l app=v2
6.- Eliminar la etiqueta app de los pods que se han creado
kubectl label pods mypod{1..2} app-
7.- Crear un pod que será desplegado en un Nodo con la etiqueta ‘accelerator=nvidia-tesla-p100’
Paso 1:
kubectl run mypod2 --image=nginx --restart=Never --dry-run=client -o yaml >> mypod2.yaml
Paso 2:
nano mypod2.yaml
apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: mypod2 name: mypod2 spec: containers: - image: nginx name: mypod2 resources: {} nodeSelector: # añadir estas dos líneas accelerator: nvidia-tesla-p100 dnsPolicy: ClusterFirst restartPolicy: Never status: {}
8 .- Anotar pods mypod1, mypod2 con «description=’my description'»
kubectl annotate pods mypod{1..2} description='my description'
9.- Comprobar la anotación para mypod1
kubectl describe pods mypod1 | grep Annotations:
10.- Eliminar la anotación creada para los 2 pods
kubectl annotate pods mypod1 description-
11.- Crear un pod mypod3 y asignarle la etiqueta status=online
kubectl run mypod3 --image=nginx --restart=Never -l status=online
12.- Crear dos pods mypod1 y 2 con etiquetas statuns=offline
kubectl run mypod1 --image=nginx --restart=Never -l status=offline kubectl run mypod2 --image=nginx --restart=Never -l status=offline
13.- Obtener todos los pods que tienen status diferente a online
kubectl get pods -l status!=online
14.- Asignar la etiqueta app=declarative en mypod3 añadiendola directamente en el yaml.
kubectl edit pod mypod3 #con el resultado ir a labels y añadir: ..... labels: status: online app=declarative .......
15.- Encontrar aquellos pods en los que el status se encuentre en online, pero de manera Set-Based Requirement:
kubectl get pod -l 'status in (online)'
Conclusión
Estos son algunos ejercicios de Labels y Selectors en Kubernetes, que ayudarán a familiarizarse con los labels y selectors en k8s.