Habilitación y revisión de los registros del nodo maestro de Kubernetes en Azure Kubernetes Service (AKS)Enable and review Kubernetes master node logs in Azure Kubernetes Service (AKS)

Con Azure Kubernetes Service (AKS), los componentes principales, como kube-apiserver y kube-controller-manager se proporcionan como un servicio administrado.With Azure Kubernetes Service (AKS), the master components such as the kube-apiserver and kube-controller-manager are provided as a managed service. Cree y administre los nodos que ejecutan kubelet y el entorno de tiempo de ejecución del contenedor, e implemente las aplicaciones mediante el servidor de API de Kubernetes administrado.You create and manage the nodes that run the kubelet and container runtime, and deploy your applications through the managed Kubernetes API server. Para ayudar a solucionar los problemas de sus aplicaciones y servicios, quizás deba ver los registros generados por estos componentes principales.To help troubleshoot your application and services, you may need to view the logs generated by these master components. En este artículo se muestra cómo usar registros de Azure Monitor para habilitar y consultar los registros de los componentes principales de Kubernetes.This article shows you how to use Azure Monitor logs to enable and query the logs from the Kubernetes master components.

Antes de empezarBefore you begin

En este artículo se requiere un clúster de AKS existente que se ejecute en su cuenta de Azure.This article requires an existing AKS cluster running in your Azure account. Si todavía no tiene un clúster de AKS, cree uno con la CLI de Azure o Azure Portal.If you do not already have an AKS cluster, create one using the Azure CLI or Azure portal. Registros de Azure Monitor funciona tanto con clústeres de AKS habilitados para RBAC como no habilitados para RBAC.Azure Monitor logs works with both RBAC and non-RBAC enabled AKS clusters.

Habilitación del registro de diagnósticosEnable diagnostics logs

Para ayudar a recopilar y revisar los datos de varios orígenes, registros de Azure Monitor proporciona un motor de lenguaje y análisis de consultas que ofrece información detallada sobre su entorno.To help collect and review data from multiple sources, Azure Monitor logs provides a query language and analytics engine that provides insights to your environment. Un área de trabajo se usa para intercalar y analizar los datos, y se puede integrar con otros servicios de Azure como Application Insights y Security Center.A workspace is used to collate and analyze the data, and can integrate with other Azure services such as Application Insights and Security Center. Para usar una plataforma diferente para analizar los registros, puede decidir en su lugar enviar los registros de diagnóstico a una cuenta de almacenamiento o un centro de eventos de Azure.To use a different platform to analyze the logs, you can instead choose to send diagnostic logs to an Azure storage account or event hub. Para más información, consulte el artículo sobre los registros de Azure Monitor.For more information, see What is Azure Monitor logs?.

Los registros de Azure Monitor se habilitan y administran en Azure Portal.Azure Monitor logs are enabled and managed in the Azure portal. Para habilitar la recopilación de registros para los componentes principales de Kubernetes en el clúster de AKS, abra Azure Portal en un explorador web y realice los pasos siguientes:To enable log collection for the Kubernetes master components in your AKS cluster, open the Azure portal in a web browser and complete the following steps:

  1. Seleccione el grupo de recursos del clúster de AKS, como myResourceGroup.Select the resource group for your AKS cluster, such as myResourceGroup. No seleccione el grupo de recursos que contiene los recursos del clúster de AKS individuales, como MC_myResourceGroup_myAKSCluster_eastus.Don't select the resource group that contains your individual AKS cluster resources, such as MC_myResourceGroup_myAKSCluster_eastus.
  2. En la parte izquierda, elija Configuración de diagnóstico.On the left-hand side, choose Diagnostic settings.
  3. Seleccione el clúster de AKS, como myAKSCluster, y elija Agregar configuración de diagnóstico.Select your AKS cluster, such as myAKSCluster, then choose to Add diagnostic setting.
  4. Escriba un nombre, como myAKSClusterLogs y seleccione la opción Send to Log Analytics (Enviar a Log Analytics).Enter a name, such as myAKSClusterLogs, then select the option to Send to Log Analytics.
  5. Seleccione un área de trabajo existente o cree uno.Select an existing workspace or create a new one. Al crear un área de trabajo, proporciónele un nombre, un grupo de recursos y una ubicación.If you create a workspace, provide a workspace name, a resource group, and a location.
  6. En la lista de registros disponibles, seleccione los que desea habilitar.In the list of available logs, select the logs you wish to enable. Los registros típicos incluyen kube-apiserver, kube-controller-manager y kube-scheduler.Common logs include the kube-apiserver, kube-controller-manager, and kube-scheduler. Puede habilitar otros, como kube-audit y cluster-autoscaler.You can enable additional logs, such as kube-audit and cluster-autoscaler. Puede volver y cambiar los registros recopilados una vez que las áreas de trabajo de Log Analytics está habilitadas.You can return and change the collected logs once Log Analytics workspaces are enabled.
  7. Cuando esté listo, seleccione Guardar para habilitar la recopilación de los registros seleccionados.When ready, select Save to enable collection of the selected logs.

La siguiente captura de pantalla de ejemplo del portal muestra la ventana Configuración de diagnóstico:The following example portal screenshot shows the Diagnostics settings window:

Habilitación de un área de trabajo de Log Analytics para registros de Azure Monitor del clúster de AKS

Programación de un pod de prueba en el clúster de AKSSchedule a test pod on the AKS cluster

Para generar algunos registros, cree un nuevo pod en el clúster de AKS.To generate some logs, create a new pod in your AKS cluster. El siguiente ejemplo de manifiesto de YAML puede usarse para crear una instancia básica de NGINX.The following example YAML manifest can be used to create a basic NGINX instance. Cree un archivo denominado nginx.yaml en el editor que prefiera y pegue el contenido siguiente:Create a file named nginx.yaml in an editor of your choice and paste the following content:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: mypod
    image: nginx:1.15.5
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi
    ports:
    - containerPort: 80

Cree el pod con el comando kubectl create y especifique el archivo YAML, como se muestra en el ejemplo siguiente:Create the pod with the kubectl create command and specify your YAML file, as shown in the following example:

$ kubectl create -f nginx.yaml

pod/nginx created

Visualización de los datos recopiladosView collected logs

Los registros de diagnóstico pueden tardar unos minutos en habilitarse y aparecer en el área de trabajo de Log Analytics.It may take a few minutes for the diagnostics logs to be enabled and appear in the Log Analytics workspace. En Azure Portal, seleccione el grupo de recursos para el área de trabajo de Log Analytics, como myResourceGroup, y elija el recurso de Log Analytics, por ejemplo, myAKSLogs.In the Azure portal, select the resource group for your Log Analytics workspace, such as myResourceGroup, then choose your log analytics resource, such as myAKSLogs.

Selección del área de trabajo de Log Analytics para el clúster de AKS

En el lado izquierdo, elija Registros.On the left-hand side, choose Logs. Para ver kube-apiserver, escriba la siguiente consulta en el cuadro de texto:To view the kube-apiserver, enter the following query in the text box:

AzureDiagnostics
| where Category == "kube-apiserver"
| project log_s

Es probable que se devuelvan muchos registros para el servidor de API.Many logs are likely returned for the API server. Para reducir el ámbito de la consulta y ver los registros sobre el pod de NGINX creado en el paso anterior, agregue una instrucción where adicional para buscar pods/nginx, como se muestra en la consulta de ejemplo siguiente:To scope down the query to view the logs about the NGINX pod created in the previous step, add an additional where statement to search for pods/nginx as shown in the following example query:

AzureDiagnostics
| where Category == "kube-apiserver"
| where log_s contains "pods/nginx"
| project log_s

Se muestran los registros específicos de su pod NGINX, como se ilustra en la siguiente captura de pantalla de ejemplo:The specific logs for your NGINX pod are displayed, as shown in the following example screenshot:

Resultados de consulta de Log Analytics del pod NGINX de ejemplo

Para ver registros adicionales, puede actualizar la consulta del nombre Categoría a kube-controller-manager o kube-programador, dependiendo de qué registros adicionales habilite.To view additional logs, you can update the query for the Category name to kube-controller-manager or kube-scheduler, depending on what additional logs you enable. Luego, se pueden usar instrucciones adicionales where para refinar los eventos que busca.Additional where statements can then be used to refine the events you are looking for.

Para más información acerca de cómo consultar y filtrar datos de registro, consulte el artículo de Visualización o análisis de los datos recopilados con la búsqueda de registros de Log Analytics.For more information on how to query and filter your log data, see View or analyze data collected with log analytics log search.

Esquema de evento de registroLog event schema

Para ayudar a analizar los datos de registro, en la tabla siguiente se describe el esquema usado para cada evento:To help analyze the log data, the following table details the schema used for each event:

Nombre del campoField name DESCRIPCIÓNDescription
resourceIdresourceId Recursos de Azure que generó el registroAzure resource that produced the log
timetime Marca de tiempo de cuando se cargó el registroTimestamp of when the log was uploaded
categorycategory Nombre del contenedor o componente que genera el registroName of container/component generating the log
operationNameoperationName Siempre Microsoft.ContainerService/managedClusters/diagnosticLogs/ReadAlways Microsoft.ContainerService/managedClusters/diagnosticLogs/Read
properties.logproperties.log Texto completo del registro desde el componenteFull text of the log from the component
properties.streamproperties.stream stderr o stdoutstderr or stdout
properties.podproperties.pod Nombre del pod del que procede el registroPod name that the log came from
properties.containerIDproperties.containerID Identificador del contenedor de Docker del que procede este registroID of the docker container this log came from

Roles de registroLog Roles

RoleRole DESCRIPCIÓNDescription
aksServiceaksService El nombre para mostrar en el registro de auditoría de la operación de plano de control (desde hcpService).The display name in audit log for the control plane operation (from the hcpService)
masterclientmasterclient El nombre para mostrar en el registro de auditoría de MasterClientCertificate, el certificado que obtiene desde az aks get-credentials.The display name in audit log for MasterClientCertificate, the certificate you get from az aks get-credentials
nodeclientnodeclient El nombre para mostrar de ClientCertificate, que los nodos de agente usan.The display name for ClientCertificate, which is used by agent nodes

Pasos siguientesNext steps

En este artículo, aprendió a habilitar y revisar los registros de los componentes principales de Kubernetes en el clúster de AKS.In this article, you learned how to enable and review the logs for the Kubernetes master components in your AKS cluster. Para seguir supervisando y solucionando problemas, también puede ver los registros de Kubelet y habilitar el acceso al nodo SSH.To monitor and troubleshoot further, you can also view the Kubelet logs and enable SSH node access.