Introducción
En este laboratorio, exploraremos el comando kubectl annotate, que es una herramienta poderosa utilizada en Kubernetes para agregar o modificar anotaciones de metadatos a los recursos de Kubernetes. Las anotaciones se utilizan para adjuntar metadatos arbitrarios a los recursos de Kubernetes en forma de pares clave-valor, y se pueden utilizar para almacenar información adicional sobre un recurso que es posible que no sea utilizada por el propio sistema de Kubernetes, pero que puede ser utilizada por herramientas o procesos externos.
A lo largo de este laboratorio, comenzaremos con ejemplos simples y gradualmente avanzaremos hacia casos de uso más complejos del comando kubectl annotate, mostrando su versatilidad y utilidad en diversos escenarios.
Requisitos previos
- Un conocimiento básico de los conceptos y comandos de Kubernetes.
- Un clúster de Kubernetes configurado con
kubectlinstalado y configurado.
Iniciar el clúster de Minikube
Antes de crear recursos, necesitas un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en tu máquina local.
Navegar a tu directorio de trabajo:
Abre la terminal y navega hasta la carpeta de proyecto predeterminada:
cd /home/labex/projectIniciar Minikube:
Inicia Minikube para inicializar un clúster de Kubernetes:
minikube start- Este comando configura un clúster de Kubernetes de un solo nodo en tu máquina local.
- Minikube puede tardar unos minutos en iniciarse dependiendo del rendimiento de tu sistema.
Verificar que Minikube esté en ejecución:
Comprueba el estado del clúster de Minikube:
minikube status- Busca componentes como
kubeletyapiserverlistados comoRunning(En ejecución). - Si el clúster no está en ejecución, vuelve a ejecutar
minikube start.
- Busca componentes como
Si encuentras problemas al iniciar Minikube, utiliza minikube delete para restablecer el entorno si es necesario.
Explorar el comando kubectl annotate
El comando kubectl annotate se utiliza para actualizar o eliminar anotaciones en los recursos de Kubernetes. Las anotaciones son pares clave-valor que almacenan metadatos, que pueden incluir cadenas arbitrarias o JSON estructurado. Son útiles para que las herramientas y extensiones almacenen sus datos.
Ejecuta el siguiente comando para ver las opciones disponibles para kubectl annotate:
kubectl annotate -h
Verás la siguiente salida:
Actualiza las anotaciones en uno o más recursos.
Todos los objetos de Kubernetes admiten la capacidad de almacenar datos adicionales con el objeto como anotaciones. Las anotaciones son
pares clave/valor que pueden ser más grandes que las etiquetas y que incluyen valores de cadena arbitrarios, como JSON estructurado. Las herramientas y
las extensiones del sistema pueden utilizar las anotaciones para almacenar sus propios datos.
Intentar establecer una anotación que ya existe fallará a menos que se establezca --overwrite. Si se especifica --resource-version y no coincide con la versión actual del recurso en el servidor, el comando fallará.
Utilice "kubectl api-resources" para obtener una lista completa de los recursos admitidos.
Ejemplos:
## Actualiza el pod 'foo' con la anotación 'description' y el valor 'my frontend'
## Si se establece la misma anotación varias veces, solo se aplicará el último valor
kubectl annotate pods foo description='my frontend'
## Actualiza un pod identificado por tipo y nombre en "pod.json"
kubectl annotate -f pod.json description='my frontend'
## Actualiza el pod 'foo' con la anotación 'description' y el valor 'my frontend running nginx', sobrescribiendo cualquier
valor existente
kubectl annotate --overwrite pods foo description='my frontend running nginx'
## Actualiza todos los pods en el espacio de nombres
kubectl annotate pods --all description='my frontend running nginx'
## Actualiza el pod 'foo' solo si el recurso no se ha modificado desde la versión 1
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
## Actualiza el pod 'foo' eliminando una anotación llamada 'description' si existe
## No requiere la bandera --overwrite
kubectl annotate pods foo description-
Anotar un Pod con un solo par clave-valor
En este paso, comenzaremos con un ejemplo sencillo de anotar un Pod con un solo par clave-valor utilizando el comando kubectl annotate.
- Crea un archivo llamado
pod.yamlen el directorio/home/labex/projectcon el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx
image: nginx
Crea el Pod con el siguiente comando:
kubectl apply -f pod.yaml
- Utiliza el comando
kubectl annotatepara agregar una anotación al Pod:
kubectl annotate pod my-pod my-annotation-key=my-annotation-value
- Verifica que la anotación se haya agregado al Pod:
kubectl describe pod my-pod | grep Annotations
Debes ver la anotación my-annotation-key con el valor my-annotation-value en la salida.
Anotar un Pod con múltiples pares clave-valor
En este paso, exploraremos cómo agregar múltiples anotaciones a un Pod utilizando el comando kubectl annotate.
- Utiliza el comando
kubectl annotatepara agregar múltiples anotaciones al Pod:
kubectl annotate pod my-pod my-annotation-key-1=my-annotation-value-1 my-annotation-key-2=my-annotation-value-2
- Verifica que las anotaciones se hayan agregado al Pod:
kubectl describe pod my-pod | grep my-annotation-key
Debes ver ambas anotaciones my-annotation-key-1 y my-annotation-key-2 con sus valores correspondientes en la salida.
Actualizar una anotación existente
En este paso, aprenderemos cómo actualizar una anotación existente en un Pod utilizando el comando kubectl annotate.
- Utiliza el comando
kubectl annotatepara actualizar el valor de una anotación existente en el Pod:
kubectl annotate pod my-pod my-annotation-key-1=new-value --overwrite=true
- Verifica que la anotación se haya actualizado en el Pod:
kubectl describe pod my-pod | grep my-annotation-key-1
Debes ver el valor actualizado de my-annotation-key-1 en la salida.
Eliminar una anotación
En este paso, veremos cómo eliminar una anotación de un Pod utilizando el comando kubectl annotate.
- Utiliza el comando
kubectl annotatecon la bandera--overwritepara eliminar una anotación del Pod:
kubectl annotate pod my-pod my-annotation-key-2- ## Note the trailing dash
- Verifica que la anotación se haya eliminado del Pod:
kubectl describe pod my-pod | grep my-annotation-key-2
No debes ver la anotación my-annotation-key-2 en la salida.
Anotar un recurso diferente
En este paso, exploraremos cómo utilizar el comando kubectl annotate para anotar un recurso diferente, como un Deployment (Despliegue).
- Crea un archivo llamado
deployment.yamlen el directorio/home/labex/projectcon el siguiente contenido:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx
image: nginx
Crea el despliegue con el siguiente comando:
kubectl apply -f deployment.yaml
- Utiliza el comando
kubectl annotatepara agregar una anotación al Despliegue:
kubectl annotate deployment my-deployment my-annotation-key=my-annotation-value
- Verifica que la anotación se haya agregado al Despliegue:
kubectl describe deployment my-deployment
Debes ver la anotación my-annotation-key con el valor my-annotation-value en la salida.
Resumen
En este laboratorio, aprendimos cómo utilizar el comando kubectl annotate para agregar, actualizar y eliminar anotaciones de los recursos de Kubernetes. Comenzamos con ejemplos simples de anotar un Pod con pares clave-valor individuales y múltiples, y luego exploramos casos de uso más avanzados, como actualizar una anotación existente y anotar un recurso diferente como un Deployment (Despliegue). Las anotaciones pueden ser una herramienta poderosa para adjuntar metadatos adicionales a los recursos de Kubernetes y proporcionar información útil para herramientas o procesos externos.


