Procedimientos recomendados para desarrolladores de aplicaciones para administrar recursos en Azure Kubernetes Services (AKS)

A medida que desarrolla y ejecuta aplicaciones en Azure Kubernetes Service (AKS), hay algunas áreas clave a tener en cuenta. El modo de administrar las implementaciones de aplicaciones puede repercutir negativamente en la experiencia del usuario final de los servicios que proporciona.

Este artículo se centra en la ejecución de los clústeres y las cargas de trabajo desde la perspectiva de un desarrollador de aplicaciones. Para obtener información acerca de los procedimientos recomendados, consulte Procedimientos recomendados para el aislamiento y la administración de recursos en Azure Kubernetes Service (AKS).

En este artículo se tratan los temas siguientes:

  • Solicitudes y límites de recursos de pod
  • Formas de desarrollar, depurar e implementar aplicaciones con Bridge to Kubernetes y Visual Studio Code.

Definición de los límites y solicitudes de recursos del pod

Guía de procedimientos recomendados

Configure las solicitudes y los límites de pod en todos los pods de los manifiestos de YAML. Si el clúster de AKS usa cuotas de recursos y no define estos valores, es posible que la implementación se rechace.

Use las solicitudes y los límites de pod para administrar los recursos de proceso dentro de un clúster de AKS. Las solicitudes y los límites de pod informan al programador de Kubernetes sobre los recursos de proceso que se asignarán a un pod.

Solicitudes de CPU/memoria de pod

Las solicitudes de pod definen una cierta cantidad de CPU y memoria que necesita el pod periódicamente.

En las especificaciones de su pod, es importante que defina estas solicitudes y límites en función de la información anterior. Si no incluye estos valores, el programador de Kubernetes no podrá tener en cuenta los recursos que requieren sus aplicaciones para ayudarle con las decisiones de programación.

Supervise el rendimiento de la aplicación para ajustar las solicitudes de pod. Si subestima las solicitudes de pod, su aplicación puede recibir un rendimiento degradado debido a la programación excesiva de un nodo. Si se sobreestiman las solicitudes, su aplicación puede tener más dificultades de programación.

Límites de CPU/memoria de pod

Los límites de pods establecen la cantidad máxima de CPU y memoria que puede usar un pod. Los límites de memoria definen qué pods se deben eliminar cuando los nodos son inestables por haber recursos insuficientes. Sin los límites adecuados, los pods establecidos se quitan hasta que se levante la presión de los recursos. Aunque un pod puede exceder el límite de CPU periódicamente, el pod no se elimina por exceder el límite de CPU.

Los límites de pod definen cuándo un pod pierde el control del consumo de recursos. Cuando supera el límite, el pod se marca para su eliminación. Este comportamiento mantiene el estado del nodo y minimiza el impacto en los pods que comparten el nodo. Si no establece un límite de pods, de manera predeterminada se utilizará el valor más alto disponible en un nodo determinado.

Evite establecer un límite de pod superior al que pueden admitir los nodos. Cada nodo de AKS reserva una cierta cantidad de CPU y memoria para los componentes básicos de Kubernetes. La aplicación puede intentar consumir demasiados recursos en el nodo para que otros pods se ejecuten correctamente.

Supervise el rendimiento de la aplicación en distintos momentos del día o de la semana. Determine cuándo se produce la máxima demanda y ajuste en consonancia los límites del pod para que haya recursos necesarios para las necesidades máximas.

Importante

En las especificaciones de su pod, defina estas solicitudes y límites en función de la información anterior. Si no se incluyen estos valores, el programador de Kubernetes no tiene en cuenta los recursos que las aplicaciones necesitan para ayudar en la programación de decisiones.

Si el Scheduler coloca un Pod en un nodo con recursos insuficientes, el rendimiento de la aplicación se degrada. El administrador de clústeres debe definir cuotas de recursos en un espacio de nombres que requiere el establecimiento de límites y solicitudes de recursos. Para obtener más información, consulte cuotas de recursos en clústeres de AKS.

Al definir un límite o solicitud de CPU, el valor se mide en unidades de CPU.

  • CPU 1.0 equivale a un núcleo de CPU virtual subyacente en el nodo.
    • Se usa la misma unidad de medida para las GPU.
  • Puede definir fracciones medidas en milinúcleos. Por ejemplo, 100 m es 0,1 de un núcleo de vCPU subyacente.

En el siguiente ejemplo básico para un solo pod de NGINX, el pod solicita 100 m de tiempo de CPU y 128 Mi de memoria. Los límites de recursos para el pod se definen en 250 m de CPU y 256 Mi de memoria.

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
  - name: mypod
    image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi

Para obtener más información acerca de las asignaciones y medidas de recursos, consulte Administración de recursos de proceso para contenedores.

Desarrollo y depuración de aplicaciones en un clúster de AKS

Guía de procedimientos recomendados

Los equipos de desarrollo deben realizar la implementación y depuración en un clúster de AKS mediante Bridge to Kubernetes.

Con Bridge to Kubernetes, desarrolle, depure y pruebe aplicaciones directamente en un clúster de AKS. Los desarrolladores de un equipo colaboran para realizar compilaciones y pruebas a lo largo del ciclo de vida de la aplicación. Puede seguir usando herramientas existentes, como Visual Studio o Visual Studio Code, con la extensión Bridge to Kubernetes.

El uso de este proceso de desarrollo y pruebas integrado con Bridge to Kubernetes reduce la necesidad de entornos de prueba locales, como minikube. En su lugar, desarrolle y pruebe con un clúster de AKS, incluso con clústeres protegidos y aislados.

Nota

Bridge to Kubernetes está pensado para su uso con aplicaciones que se ejecutan en nodos y pods de Linux.

Uso de Visual Studio Code (VS Code) para Kubernetes

Guía de procedimientos recomendados

Instale y use la extensión de VS Code para Kubernetes al escribir manifiestos de YAML. También puede usar la extensión para la solución de implementación integrada, lo que puede ayudar a los propietarios de aplicaciones que interactúan con poca frecuencia con el clúster de AKS.

La extensión de Visual Studio Code para Kubernetes le ayuda a desarrollar e implementar aplicaciones en AKS. La extensión proporciona las siguientes características:

  • Recursos de IntelliSense para Kubernetes, gráficos de Helm y plantillas.

  • Capacidad para examinar, implementar y editar las capacidades de los recursos de Kubernetes desde VS Code.

  • Intellisense comprueba si se han establecido solicitudes de recursos o límites en las especificaciones del pod:

    VS Code extension for Kubernetes warning about missing memory limits

Pasos siguientes

Este artículo se centra en cómo ejecutar el clúster y las cargas de trabajo desde la perspectiva de un operador de clústeres. Para obtener información acerca de los procedimientos recomendados, consulte Procedimientos recomendados para el aislamiento y la administración de recursos en Azure Kubernetes Service (AKS).

Para implementar algunos de estos procedimientos recomendados, consulte Desarrollo con Bridge to Kubernetes.