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:

kubectl get deployment metrics-server -n kube-system

Deberías ver una salida similar a esta:

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           5m

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

kubectl top nodes

Salida esperada:

NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
node1          250m         12%    1024Mi          50%
node2          300m         15%    2048Mi          60%

Obtener Métricas de Pods

kubectl top pods --all-namespaces

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

  1. Objetivo: Instalar el servidor de métricas en tu clúster de Kubernetes.
  2. 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

  1. Objetivo: Obtener métricas de uso de recursos de nodos y pods.
  2. 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.

Soluciones

Solución al Ejercicio 1

kubectl apply -f metrics-server.yaml
kubectl get deployment metrics-server -n kube-system

Solución al Ejercicio 2

kubectl top nodes
kubectl top pods --all-namespaces

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

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

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados