El servidor de métricas (Metrics Server) es un componente esencial en Kubernetes para la recopilación de métricas de recursos como CPU y memoria de los nodos y pods en el clúster. Estas métricas son cruciales para la autoescalabilidad y el monitoreo del rendimiento.
¿Qué es el Servidor de Métricas?
El servidor de métricas es una implementación de la API de métricas de Kubernetes. Proporciona métricas de uso de recursos en tiempo real para los nodos y pods, que pueden ser utilizadas por otros componentes del clúster, como el autoescalador horizontal de pods (HPA).
Características Clave:
- Recopilación de métricas en tiempo real: Proporciona datos actualizados sobre el uso de recursos.
- Ligero y eficiente: Diseñado para ser eficiente en términos de recursos.
- Integración con HPA: Utilizado por el HPA para escalar pods en función de las métricas de uso de recursos.
Instalación del Servidor de Métricas
Para instalar el servidor de métricas en tu clúster de Kubernetes, puedes usar el siguiente manifiesto YAML:
apiVersion: v1 kind: Namespace metadata: name: kube-system --- apiVersion: apps/v1 kind: Deployment metadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-server spec: selector: matchLabels: k8s-app: metrics-server template: metadata: labels: k8s-app: metrics-server spec: containers: - name: metrics-server image: k8s.gcr.io/metrics-server/metrics-server:v0.4.4 args: - --kubelet-insecure-tls ports: - name: main-port containerPort: 443 protocol: TCP resources: requests: memory: 100Mi cpu: 100m limits: memory: 200Mi cpu: 200m nodeSelector: kubernetes.io/os: linux tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule --- apiVersion: v1 kind: Service metadata: name: metrics-server namespace: kube-system labels: k8s-app: metrics-server spec: ports: - port: 443 targetPort: main-port selector: k8s-app: metrics-server
Explicación del Manifiesto:
- Namespace: El servidor de métricas se despliega en el namespace
kube-system
. - Deployment: Define el despliegue del servidor de métricas con una réplica.
- Container: Especifica la imagen del servidor de métricas y los recursos solicitados y limitados.
- Service: Expone el servidor de métricas en el puerto 443.
Verificación de la Instalación
Para verificar que el servidor de métricas está funcionando correctamente, puedes ejecutar el siguiente comando:
Deberías ver una salida similar a esta:
Uso del Servidor de Métricas
Una vez que el servidor de métricas está instalado y funcionando, puedes usarlo para obtener métricas de los nodos y pods.
Obtener Métricas de Nodos
Salida esperada:
Obtener Métricas de Pods
Salida esperada:
NAMESPACE NAME CPU(cores) MEMORY(bytes) default my-app-5d8d6f6d6d-abcde 50m 128Mi kube-system kube-dns-6d8d6f6d6d-xyz12 20m 64Mi
Ejercicio Práctico
Ejercicio 1: Instalación del Servidor de Métricas
- Objetivo: Instalar el servidor de métricas en tu clúster de Kubernetes.
- Pasos:
- Aplica el manifiesto YAML proporcionado anteriormente.
- Verifica que el servidor de métricas está funcionando correctamente.
Ejercicio 2: Uso del Servidor de Métricas
- Objetivo: Obtener métricas de uso de recursos de nodos y pods.
- Pasos:
- Ejecuta
kubectl top nodes
para ver las métricas de los nodos. - Ejecuta
kubectl top pods --all-namespaces
para ver las métricas de los pods.
- Ejecuta
Soluciones
Solución al Ejercicio 1
Solución al Ejercicio 2
Resumen
En esta sección, hemos aprendido sobre el servidor de métricas en Kubernetes, su importancia y cómo instalarlo y usarlo para obtener métricas de uso de recursos en tiempo real. Estas métricas son esenciales para el monitoreo y la autoescalabilidad en un clúster de Kubernetes. Con esta base, estás preparado para integrar el servidor de métricas con otros componentes como el autoescalador horizontal de pods (HPA) para mejorar la eficiencia y el rendimiento de tus aplicaciones en Kubernetes.
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster