Compartir a través de


Uso de eventos de Kubernetes para solucionar problemas en Azure Kubernetes Service (AKS)

En este artículo se muestra cómo usar eventos de Kubernetes para supervisar y solucionar problemas en los clústeres de Azure Kubernetes Service (AKS).

¿Qué son los eventos de Kubernetes?

Los eventos son uno de los orígenes más destacados para supervisar y solucionar problemas en Kubernetes. Capturan y registran información sobre el ciclo de vida de varios objetos de Kubernetes, como pods, nodos, servicios e implementaciones. Mediante la supervisión de eventos, puede obtener visibilidad de las actividades del clúster, identificar problemas y solucionar problemas de forma eficaz.

Los eventos de Kubernetes no se conservan durante todo el ciclo de vida del clúster, ya que no hay ningún mecanismo de retención. Los eventos solo están disponibles durante una hora después de que se genere el evento. Para almacenar eventos durante un período de tiempo más largo, habilite Información del contenedor.

Objetos de evento Kubernetes

En la tabla siguiente se enumeran algunos objetos de evento de Kubernetes clave:

Nombre del campo Descripción
type El tipo se basa en la gravedad del evento:
Los eventos de Advertencia indican situaciones potencialmente problemáticas, como un pod con errores repetidamente o un nodo que se está quedando sin recursos. Requieren atención, pero es posible que no produzcan un error inmediato.
Los eventos Normales representan operaciones rutinarias, como un pod programado o un escalado vertical de implementación. Normalmente indican un comportamiento correcto del clúster.
reason Motivo por el que se ha generado el evento. Por ejemplo, FailedScheduling o CrashLoopBackoff.
message Mensaje en lectura natural que describe el evento.
espacio de nombres Espacio de nombres del objeto de Kubernetes al que está asociado el evento.
firstSeen Marca de tiempo en la que se observó el suceso por primera vez.
lastSeen Marca de tiempo de cuándo se observó por última vez el evento.
reportingController El nombre del controlador que ha informado del evento. Por ejemplo, kubernetes.io/kubelet.
object Nombre del objeto de Kubernetes al que está asociado el evento.

Para obtener más información, consulte la documentación oficial de Kubernetes.

Eventos de Kubernetes

Enumere todos los eventos del clúster mediante el comando kubectl get events.

Suponiendo que el clúster ya está creado y disponible (según los requisitos previos del documento), obtenga credenciales (tenga en cuenta que la --overwrite-existing marca está establecida para evitar errores kubeconfig):

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --overwrite-existing

Ahora, enumere todos los eventos del clúster:

kubectl get events

Resultados:

LAST SEEN   TYPE      REASON              OBJECT                      MESSAGE
xxm         Normal    Scheduled           pod/my-pod-xxxxx            Successfully assigned default/my-pod-xxxxx to aks-nodepoolxx-xxxxxxx-vmss000000
xxm         Normal    Pulled              pod/my-pod-xxxxx            Container image "nginx" already present on machine
xxm         Normal    Created             pod/my-pod-xxxxx            Created container nginx
xxm         Normal    Started             pod/my-pod-xxxxx            Started container nginx
...

Examine los eventos de un pod específico buscando primero el nombre del pod y, a continuación, usando el comando kubectl describe pod.

Enumere los pods en el espacio de nombres actual:

kubectl get pods

Resultados:

NAME                             READY   STATUS    RESTARTS   AGE
my-pod-xxxxx                     1/1     Running   0          xxm
nginx-deployment-xxxxx           1/1     Running   0          xxm
...

Reemplace <pod-name> a continuación por el nombre real del pod. Para la automatización, este es un ejemplo para el primer pod de la lista:

POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}")
kubectl describe pod $POD_NAME

Procedimientos recomendados para solucionar problemas con eventos

Filtrado de eventos por relevancia

Es posible que tenga varios espacios de nombres y servicios que se ejecutan en el clúster de AKS. El filtrado de eventos en función del tipo de objeto, el espacio de nombres o el motivo puede ayudar a reducir los resultados a la información más relevante.

Por ejemplo, puede usar el siguiente comando para filtrar eventos dentro del espacio de nombres predeterminado:

kubectl get events --namespace default

Automatización de notificaciones de eventos

Para garantizar una respuesta oportuna a eventos críticos en el clúster de AKS, configure notificaciones automatizadas. Azure ofrece integración con servicios de supervisión y alertas, como Azure Monitor. Puede configurar alertas para que se desencadenen en función de patrones de eventos específicos. De este modo, se le informa inmediatamente sobre los problemas cruciales que requieren atención.

Revisión periódica de eventos

Haga un hábito de revisar periódicamente los eventos en el clúster de AKS. Este enfoque proactivo puede ayudarle a identificar tendencias, detectar posibles problemas al principio y evitar escalaciones. Al mantenerse al tanto de los eventos, puede mantener la estabilidad y el rendimiento de las aplicaciones.

Pasos siguientes

Ahora que reconoce los eventos de Kubernetes, puede continuar el recorrido de supervisión y observabilidad habilitando Información del contenedor.