Supervisión de implementaciones de cargas de trabajo
Este artículo forma parte de una serie. Comience con la información general.
Es importante supervisar el estado y el rendimiento de las cargas de trabajo de Kubernetes para asegurarse de que se ejecutan de forma óptima. Azure Kubernetes Service (AKS) tiene varias herramientas que puede usar para comprobar el estado y el rendimiento de las implementaciones, las características DaemonSet
y los servicios.
Herramientas
Es importante determinar si se ejecutan todas las implementaciones y las características de DaemonSet
. En este artículo se describe cómo determinar si las réplicas de la lista y estados de disponibles coinciden con el recuento de réplicas esperado mediante:
- Azure Portal
- La característica container insights de Azure Monitor.
- La herramienta de línea de comandos kubectl.
- Prometheus y Grafana.
El Portal de Azure
Puede usar Azure Portal para comprobar el estado de los siguientes componentes en las cargas de trabajo. Para más información, vea Acceso a recursos de Kubernetes desde Azure Portal.
Implementación, ReplicaSet
, StatefulSet
, y DaemonSet
Compruebe que el número de réplicas que están en un estado listo coincide con el número de réplicas deseadas. El portal muestra:
Número de réplicas que están disponibles actualmente y listas para atender el tráfico. Estas réplicas se han programado correctamente en los nodos de trabajo, completaron su proceso de inicio y pasaron sus comprobaciones de preparación.
Número deseado de réplicas especificadas para la implementación o el número de réplicas que la implementación tiene como objetivo mantener. El controlador de implementación de Kubernetes supervisa constantemente el estado de la implementación y garantiza que el número real de réplicas coincide con el número deseado.
Servicios y entradas
Asegúrese de que el estado es correcto para todos los servicios y entradas.
Storage
Asegúrese de que el estado está enlazado para todas las notificaciones de volumen persistentes y volúmenes persistentes.
Container Insights
Container Insights es una característica de Monitor que proporciona funcionalidades de supervisión para cargas de trabajo de contenedor implementadas en AKS o administradas por Kubernetes habilitado para Azure Arc. Esta característica recopila información de rendimiento y estado, como las métricas de memoria y procesador de controladores, nodos y contenedores. También captura los registros de contenedor para su análisis.
Puede usar varias vistas y libros precompilados para analizar los datos recopilados. Examine el rendimiento y el comportamiento de varios componentes dentro del clúster. Con Container Insights, puede obtener información sobre el estado general de las cargas de trabajo de contenedor para que pueda tomar decisiones informadas para optimizar su rendimiento y solucionar problemas.
Puede usar Container Insights para:
Identifique los cuellos de botella de recursos mediante la identificación de contenedores que se ejecutan en cada nodo y su uso de procesador y memoria.
Identifique el uso del procesador y la memoria de los grupos de contenedores y sus contenedores hospedados en instancias de contenedor.
Consulte el rendimiento general del controlador o el pod mediante la identificación del lugar en que reside el contenedor en un controlador o un pod.
Revise el uso de recursos de las cargas de trabajo que se ejecutan en el host y que no estén relacionadas con los procesos estándar que admiten el pod.
Comprenda el comportamiento de un clúster en cargas medias y pesadas, por lo que puede identificar las necesidades de capacidad y determinar la carga máxima que puede mantener el clúster.
Acceda a los registros y métricas del contenedor activo que genera el motor de contenedor para que pueda solucionar problemas en tiempo real.
Configure alertas para notificarle o registrar de forma proactiva cuando el uso de CPU y memoria en nodos o contenedores supere los umbrales, o cuando se produzca un cambio de estado de mantenimiento en el clúster en el paquete acumulativo de estado de la infraestructura o los nodos.
En Azure Portal, Container Insights proporciona varias herramientas para ayudar a supervisar y analizar el estado y el rendimiento de un clúster de AKS.
Clúster: Esta característica proporciona información general sobre el clúster de AKS, incluidas las métricas clave, como el uso de CPU y memoria, los recuentos de pods y nodos, y el tráfico de red. Puede obtener información sobre el estado general y el uso de recursos del clúster.
Informes: Esta característica proporciona informes creados previamente que puede usar para visualizar y analizar diversos aspectos del rendimiento del clúster, como el uso de recursos, el estado del pod y la información del contenedor. Estos datos le ayudan a comprender el comportamiento y el rendimiento de los contenedores y las cargas de trabajo.
Nodos: Esta característica proporciona información detallada sobre los nodos del clúster. Muestra las métricas de uso de CPU y memoria, E/S de disco y red, así como la condición y el estado de cada nodo. Puede usar estos datos para supervisar el rendimiento de nodos individuales, identificar posibles cuellos de botella y garantizar una asignación eficaz de recursos.
Controladores: Esta característica proporciona visibilidad de los controladores de Kubernetes en el clúster de AKS. Muestra información como el número de instancias del controlador, el estado actual y el estado de las operaciones del controlador. Puede supervisar el estado y el rendimiento de los controladores que administran implementaciones de cargas de trabajo, servicios y otros recursos.
Contenedores: Esta característica proporciona información sobre los contenedores que se ejecutan en el clúster de AKS. Proporciona información relacionada con el uso de recursos, los reinicios y los eventos de ciclo de vida de cada contenedor. Puede usar estos datos para ayudar a supervisar y solucionar problemas de contenedores en las cargas de trabajo.
Registros en directo: La característica registros en directo proporciona una transmisión en directo de eventos de registro desde contenedores en ejecución, por lo que puede ver los registros de contenedor en tiempo real. Puede usar estos datos para supervisar y solucionar de forma eficaz las aplicaciones e identificar y resolver rápidamente problemas en los contenedores.
Para obtener más información, consulte los siguientes recursos:
- Supervisión del rendimiento del clúster de Kubernetes con container Insights
- Configuración de la supervisión de GPU con container Insights
- Supervisión y visualización de configuraciones de red con el administrador de directivas de red de Azure
- Supervisar implementaciones y métricas de HPA con información de contenedor
- Supervisión de métricas de volumen persistente (PV)
- Supervisar la seguridad con Syslog
- informes deen container insights
- Métricas recopiladas por container insights
- Visualización de registros, eventos y métricas de pods de Kubernetes en tiempo real
- Ver métricas de clúster en tiempo real
Herramienta de línea de comandos
Para comprobar el estado de las cargas de trabajo, puede usar la herramienta de línea de comandos kubectl para comunicarse con el plano de control de un clúster de Kubernetes mediante la API de Kubernetes.
Pods
Para enumerar los pods que se ejecutan en todos los espacios de nombres, ejecute el siguiente comando:
kubectl get pod -A
En la salida del comando, la columna READY proporciona información importante sobre el estado de preparación de los contenedores del pod.
El primer número indica el recuento de contenedores que están actualmente en un estado listo. Estos contenedores han pasado los sondeos de preparación y están preparados para controlar el tráfico entrante. El segundo número representa el recuento total de contenedores definidos en el pod, independientemente de su estado de preparación. Incluye contenedores que están listos y aquellos que todavía se están inicializando o experimentando problemas.
Asegúrese de que el primer número (contenedores listos) coincide con el segundo número (contenedores totales) para el pod. Si difieren, es posible que algunos contenedores no estén listos o que haya problemas para evitar que lleguen al estado listo.
Implementación, StatefulSet
, DaemonSet
, y StatefulSet
Ejecute el comando siguiente para recuperar las implementaciones de en todos los espacios de nombres:
kubectl get deploy -A
En la salida del comando kubectl get deploy
, los números de la columna READY indican el estado de preparación actual de las réplicas en una implementación.
El primer número representa el número de réplicas que están listas y disponibles para atender el tráfico. Estas réplicas se han iniciado correctamente y han superado sus comprobaciones de preparación. El segundo número representa el número deseado de réplicas especificadas en la configuración de implementación. Es el número de réplicas de destino que la implementación tiene como objetivo mantener.
Es importante asegurarse de que el primer número coincide con el segundo número. Indica que el número deseado de réplicas se está ejecutando y listo. Cualquier discrepancia entre los dos números podría indicar problemas de escalado o preparación que debe solucionar.
Ejecute el siguiente comando para recuperar las características StatefulSet de todos los espacios de nombres:
kubectl get statefulset -A
Ejecute el siguiente comando para recuperar las características DaemonSet en todos los espacios de nombres:
kubectl get ds -A
Puede ejecutar el comando kubectl get ds
para comprobar que un DaemonSet
se está ejecutando según lo previsto. Por ejemplo, puede ejecutar el siguiente comando para comprobar que el agente de container insights se ha implementado correctamente:
kubectl get ds ama-logs --namespace=kube-system
Del mismo modo, si configura el clúster de AKS para recopilar métricas de Prometheus en Monitor para Prometheus administrado, puede ejecutar el siguiente comando para comprobar que el DaemonSet
se implementa correctamente en los grupos de nodos de Linux:
kubectl get ds ama-metrics-node --namespace=kube-system
Esta salida proporciona información sobre las características de DaemonSet
del clúster. Examine la salida para asegurarse de que el número de pods del listo, actual y estados deseados son los mismos. Si son iguales, el número deseado de pods especificados en la configuración de DaemonSet
es igual al número de pods que se están ejecutando y listos actualmente.
Se recomienda realizar la misma comprobación de las características de ReplicaSet. Puede usar el siguiente comando para recuperar las características de ReplicaSet
en todos los espacios de nombres:
kubectl get rs -A
Asegúrese de que los números de esta salida son los mismos para cada estado para que el número previsto de pods o réplicas se ejecute según lo previsto. Las discrepancias pueden indicar una necesidad de investigación o solución de problemas adicionales mediante uno de los siguientes comandos.
kubectl describe: Puede usar el comando kubectl describir para obtener información detallada sobre los recursos de Kubernetes, como pods, implementaciones y servicios. Puede obtener una visión general completa del recurso especificado, incluido su estado actual, eventos, condiciones y metadatos relacionados. La información se recupera del servidor de API de Kubernetes. Este comando es útil para solucionar problemas y comprender el estado de un recurso.
Puede ejecutar kubectl describe pod <pod-name>
para obtener información detallada sobre un pod específico, incluido su estado actual, eventos, etiquetas y los contenedores asociados a él. La salida muestra información como el estado del pod, los eventos, los volúmenes y las condiciones.
registros de kubectl: Puede usar el comando de registro de kubectl para recuperar los registros generados por un contenedor dentro de un pod. Este comando es útil para la depuración y la solución de problemas. Puede ver los registros en tiempo real o recuperar registros históricos de un contenedor.
Para ver los registros de contenedor, puede usar el comando kubectl logs <pod-name> -c <container-name>
. Reemplace <pod-name>
por el nombre del pod. Reemplace <container-name>
por el nombre del contenedor desde el que desea capturar los registros. Si solo hay un contenedor en el pod, no es necesario especificar el nombre del contenedor. También puede usar la marca -f
con kubectl logs
para seguir los registros en tiempo real. Esta marca es similar al comando tail -f
Linux.
eventos kubectl: Puede usar el comando eventos kubectl para solucionar problemas cuando una implementación, DaemonSet
, ReplicaSet
, o pod no inicia ni encuentra un problema durante el inicio. Este comando proporciona una lista cronológica de eventos asociados al recurso especificado. Puede obtener información sobre lo que podría haber causado el problema.
Para usar kubectl events
, puede ejecutar el comando kubectl events
seguido de un nombre de recurso específico. También puede usar selectores para filtrar eventos en función de etiquetas, espacios de nombres u otros criterios.
Por ejemplo, para recuperar eventos relacionados con un pod específico, puede ejecutar kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod
. Reemplace <pod-name>
por el nombre del pod que desea investigar. La salida del comando kubectl events
muestra información como el tipo de evento (normal o advertencia), el mensaje de evento, el motivo del evento y la marca de tiempo cuando se produjo el evento. Puede usar esta información para ayudar a determinar qué causó el error o el problema durante el inicio.
Si sospecha que un recurso específico como una implementación, DaemonSet
, o ReplicaSet
está experimentando problemas, puede filtrar eventos mediante selectores. Por ejemplo, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment
muestra eventos relacionados con una implementación específica. Examine los eventos para que pueda recopilar detalles importantes sobre posibles errores, errores u otros eventos que podrían haber evitado que el recurso se inicie correctamente. Use estos datos para ayudar a solucionar y resolver problemas que afectan al recurso.
Supervisión en clústeres con Prometheus y Grafana
Si ha implementado Prometheus y Grafana en el clúster de AKS, puede usar el panel de detalles del clúster K8 para obtener información. Este panel presenta información recopilada de las métricas del clúster de Prometheus, como el uso de CPU y memoria, la actividad de red y el uso del sistema de archivos. También se muestran estadísticas detalladas de pods, contenedores y servicios de sistema individuales.
Para garantizar el estado y el rendimiento de las implementaciones, trabajos, pods y contenedores, puede usar las características del panel. Seleccione Implementaciones para ver el número de réplicas de cada implementación y el número total de réplicas. Seleccione Contenedores para ver un gráfico que muestre los contenedores en ejecución, pendientes, con errores y correctos.
Supervisión del servicio administrado para Prometheus y Azure Managed Grafana
Puede usar paneles creados previamente para visualizar y analizar las métricas de Prometheus. Para ello, debe configurar el clúster de AKS para recopilar métricas de Prometheus en Supervisión del servicio administrado para Prometheus y conectar el área de trabajo de Monitor a un área de trabajo de Azure Managed Grafana.
Instale los paneles precompilados para obtener una vista completa del rendimiento y el estado del clúster de Kubernetes. Para obtener instrucciones de instalación detalladas, vea combinación de supervisión de Prometheus para Kubernetes. Los paneles se aprovisionan en la instancia de Azure Managed Grafana especificada en la carpeta Prometheus administrado. Algunos paneles incluyen:
- Kubernetes/Recursos de proceso/Clúster
- Kubernetes/Recursos de proceso/Espacio de nombres (pods)
- Kubernetes/Recursos de proceso/Nodo (pods)
- Kubernetes/Recursos de proceso/Pod
- Kubernetes/Recursos de proceso/Espacio de nombres (cargas de trabajo)
- Kubernetes/Recursos de proceso/Carga de trabajo
- Kubernetes/Kubelet
- Exportador de nodos/Método USE/Nodo
- Exportador de nodos/Nodos
- Kubernetes/Recursos de proceso/Clúster (ventanas)
- Kubernetes/Recursos de proceso/Espacio de nombres (ventanas)
- Kubernetes/Recursos de proceso/Pod (ventanas)
- Kubernetes/Método USE/Clúster (ventanas)
- Kubernetes/Método USE/Nodo (ventanas)
Estos paneles integrados se usan ampliamente en la comunidad de código abierto para supervisar clústeres de Kubernetes con Prometheus y Grafana. Use estos paneles para ver métricas, como el uso de recursos, el estado del pod y la actividad de red. También puede crear paneles personalizados adaptados a sus necesidades de supervisión. Los paneles le ayudan a supervisar y analizar de forma eficaz las métricas de Prometheus en el clúster de AKS, lo que le permite optimizar el rendimiento, solucionar problemas y garantizar un funcionamiento sin problemas de las cargas de trabajo de Kubernetes.
Puede usar el panel Kubernetes/ Recursos de proceso/Nodo (pods) para ver las métricas de los nodos del agente de Linux. Puede visualizar el uso de CPU, la cuota de CPU, el uso de memoria y la cuota de memoria para cada pod.
El panel Kubernetes/Compute Resources/Pod Grafana proporciona información sobre el consumo de recursos y las métricas de rendimiento de un clúster, un espacio de nombres y un pod seleccionados. Puede usar este panel para obtener métricas relacionadas con el uso de CPU, la limitación de CPU, la cuota de CPU, el uso de memoria, la cuota de memoria, las métricas de red y las métricas de almacenamiento. En el panel, seleccione un clúster de AKS, un espacio de nombres y un pod dentro del espacio de nombres elegido para ver los detalles siguientes:
uso de CPU: Este gráfico muestra el uso de CPU con el tiempo para el pod seleccionado. Puede revisar el patrón de consumo de CPU e identificar posibles picos o anomalías.
limitación de CPU: Este gráfico proporciona información sobre la limitación de CPU, que se produce cuando un pod supera sus límites de recursos de CPU. Supervise esta métrica para ayudar a identificar las áreas en las que el rendimiento del pod está restringido debido a la limitación de CPU.
cuota de CPU: Este gráfico muestra la cuota de CPU asignada para el pod seleccionado. Si el pod supera su cuota de CPU asignada, podría requerir ajustes de recursos.
uso de memoria: Este gráfico presenta el uso de memoria del pod seleccionado. Supervise el patrón de consumo de memoria e identifique los problemas relacionados con la memoria.
cuota de memoria: Este gráfico muestra la cuota de memoria asignada para el pod. Si el pod supera su cuota de memoria asignada, podría indicar una necesidad de optimización de recursos.
métricas de redes: Estos gráficos muestran el ancho de banda recibido y transmitido, y la tasa de paquetes recibidos y transmitidos. Estas métricas le ayudan a supervisar el uso de la red y a detectar posibles cuellos de botella o anomalías de red.
métricas de almacenamiento: En esta sección se proporciona información sobre las métricas relacionadas con el almacenamiento, como las operaciones de E/S por segundo (IOPS) y el rendimiento. Supervise estas métricas para ayudar a medir el rendimiento y la eficacia del almacenamiento del pod.
Puede usar el panel de Kubernetes/Compute Resources/Pod Grafana para obtener información sobre el uso, el rendimiento y el comportamiento de los recursos en el clúster de Kubernetes. Use esta información para optimizar la asignación de recursos, solucionar problemas de rendimiento y tomar decisiones fundamentadas para garantizar el funcionamiento sin problemas de las cargas de trabajo en contenedores.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Autor principal:
- Paolo Salvatori | Ingeniero principal de clientes
Otros colaboradores:
- Kevin Harris | Especialista principal de soluciones
- Francis Simy Nazareth | Especialista técnico sénior
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.