Configuración de clústeres híbridos de Kubernetes con Container Insights
Container Insights proporciona una experiencia de supervisión enriquecida para Azure Kubernetes Service (AKS). En este artículo se describe cómo habilitar la supervisión de clústeres de Kubernetes hospedados fuera de Azure y lograr una experiencia de supervisión similar.
Configuraciones admitidas
Las siguientes configuraciones se admiten oficialmente con Container Insights. Si tiene versiones diferente de Kubernetes y de sistema operativo, abra una incidencia de soporte técnico.
- Entornos:
- Kubernetes en un entorno local.
- OpenShift versión 4 y posteriores, en el entorno local o en otros entornos en la nube.
- Las versiones de Kubernetes y de la directiva de soporte son las mismas que las versiones de AKS compatibles.
- Se admiten los siguientes entornos de ejecución de contenedores: Moby y entornos de ejecución compatibles con CRI, como CRI-O y ContainerD.
- La versión del sistema operativo Linux admitida para los nodos principales y de trabajo es Ubuntu (18.04 LTS y 16.04 LTS) y Red Hat Enterprise Linux CoreOS 43.81.
- Servicio de Azure Access Control compatible: control de acceso basado en roles (RBAC) de Kubernetes, así como no habilitado para RBAC.
Requisitos previos
Antes de empezar, asegúrese de que cumple estos requisitos previos:
Tiene un área de trabajo de Log Analytics. Container Insights admite un área de trabajo de Log Analytics en las regiones enumeradas en los productos por región de Azure. Puede usar Azure Resource Manager, PowerShell o Azure Portal para crear su propia área de trabajo.
Nota
No se admite la supervisión de varios clústeres con el mismo nombre de clúster en la misma área de trabajo de Log Analytics. Los nombres de clúster deben ser únicos.
Es miembro del rol de colaborador de Log Analytics para habilitar la supervisión de contenedores. Para más información sobre cómo controlar el acceso a un área de trabajo de Log Analytics, consulte Administración del acceso a las áreas de trabajo y los datos de registro.
Para ver los datos de supervisión, debe tener el rol Lector de Log Analytics en el área de trabajo de Log Analytics configurada con Container Insights.
Tiene un cliente de Helm para incorporar el gráfico de Container Insights para el clúster de Kubernetes especificado.
La información de la tabla siguiente muestra la configuración de proxy y firewall requerida para que la versión en contenedor del agente de Log Analytics para Linux se comunique con Azure Monitor:
Recurso del agente Puertos *.ods.opinsights.azure.com
Puerto 443 *.oms.opinsights.azure.com
Puerto 443 *.dc.services.visualstudio.com
Puerto 443 El agente contenedorizado requiere que el puerto
cAdvisor secure port: 10250
ounsecure port :10255
de Kubelet esté abierto en todos los nodos del clúster para recopilar las métricas de rendimiento. Se recomienda configurarsecure port: 10250
en cAdvisor de Kubelet si aún no está configurado.El agente contenedorizado requiere que se especifiquen las siguientes variables de entorno en el contenedor para comunicarse con el servicio de API de Kubernetes en el clúster para recopilar datos de inventario:
KUBERNETES_SERVICE_HOST
yKUBERNETES_PORT_443_TCP_PORT
.
Importante
La versión de agente mínima admitida para la supervisión de clústeres híbridos de Kubernetes es ciprod10182019 o posterior.
Habilitar supervisión
Para habilitar Container Insights para el clúster híbrido de Kubernetes:
Configure el área de trabajo de Log Analytics con la solución Container Insights.
Habilite el gráfico de Helm de Container Insights con un área de trabajo de Log Analytics.
Para obtener más información sobre las soluciones de supervisión de Azure Monitor, consulte Soluciones de supervisión de Azure Monitor.
Adición de la solución para contenedores de Azure Monitor
Puede implementar la solución con la plantilla de Azure Resource Manager proporcionada mediante el cmdlet New-AzResourceGroupDeployment
de Azure PowerShell o la CLI de Azure.
Si no conoce el concepto de implementación de recursos mediante una plantilla, consulte:
- Implementación de recursos con las plantillas de Resource Manager y Azure PowerShell
- Implementación de recursos con plantillas de Resource Manager y la CLI de Azure
Si decide usar la CLI de Azure, primero debe instalar y usar la CLI localmente. Debe ejecutar la versión 2.0.59 de la CLI de Azure, o cualquier versión posterior. Para identificar la versión, ejecute az --version
. Si necesita instalar o actualizar la CLI de Azure, consulte Instalación de la CLI de Azure.
Este método incluye dos plantillas JSON. Una plantilla especifica la configuración para habilitar la supervisión. La otra contiene valores de parámetro que deben configurarse para especificar lo siguiente:
workspaceResourceId
: identificador de recurso completo del área de trabajo de Log Analytics.workspaceRegion
: región en la que se crea el área de trabajo, que también se conoce como Ubicación en las propiedades del área de trabajo cuando se visualizan desde Azure Portal.
Para localizar primero el identificador de recurso completo del área de trabajo de Log Analytics necesario para el valor del parámetro workspaceResourceId
en el archivo containerSolutionParams.json, lleve a cabo los pasos siguientes. Después, ejecute el cmdlet de PowerShell o el comando de la CLI de Azure para agregar la solución.
Muestre todas las suscripciones a las que tiene acceso con el comando siguiente:
az account list --all -o table
La salida será similar al ejemplo siguiente:
Name CloudName SubscriptionId State IsDefault ------------------------------------ ----------- ------------------------------------ ------- ----------- Microsoft Azure AzureCloud 0fb60ef2-03cc-4290-b595-e71108e8f4ce Enabled True
Copie el valor de SubscriptionId.
Cambie a la suscripción que hospeda el área de trabajo de Log Analytics con el comando siguiente:
az account set -s <subscriptionId of the workspace>
En el ejemplo siguiente se muestra la lista de áreas de trabajo de sus suscripciones en el formato JSON predeterminado:
az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
En la salida, busque el nombre del área de trabajo. Después, copie el identificador de recurso completo de esa área de trabajo de Log Analytics en el campo ID.
Copie y pegue la siguiente sintaxis JSON en el archivo:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "type": "string", "metadata": { "description": "Azure Monitor Log Analytics Workspace Resource ID" } }, "workspaceRegion": { "type": "string", "metadata": { "description": "Azure Monitor Log Analytics Workspace region" } } }, "resources": [ { "type": "Microsoft.Resources/deployments", "name": "[Concat('ContainerInsights', '-', uniqueString(parameters('workspaceResourceId')))]", "apiVersion": "2017-05-10", "subscriptionId": "[split(parameters('workspaceResourceId'),'/')[2]]", "resourceGroup": "[split(parameters('workspaceResourceId'),'/')[4]]", "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2015-11-01-preview", "type": "Microsoft.OperationsManagement/solutions", "location": "[parameters('workspaceRegion')]", "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]", "properties": { "workspaceResourceId": "[parameters('workspaceResourceId')]" }, "plan": { "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]", "product": "[Concat('OMSGallery/', 'ContainerInsights')]", "promotionCode": "", "publisher": "Microsoft" } } ] }, "parameters": {} } } ] }
Guarde este archivo como containerSolution.json en una carpeta local.
Pegue la siguiente sintaxis de JSON en el archivo:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "value": "<workspaceResourceId>" }, "workspaceRegion": { "value": "<workspaceRegion>" } } }
Edite los valores de workspaceResourceId con el valor que copió en el paso 3. En workspaceRegion, copie el valor Region después de ejecutar el comando de la CLI de Azure az monitor log-analytics workspace show.
Guarde este archivo como containerSolutionParams.json en una carpeta local.
Ya está listo para implementar esta plantilla.
Para implementar con Azure PowerShell, use los siguientes comandos en la carpeta que contiene la plantilla:
# configure and login to the cloud of Log Analytics workspace.Specify the corresponding cloud environment of your workspace to below command. Connect-AzureRmAccount -Environment <AzureCloud | AzureChinaCloud | AzureUSGovernment>
# set the context of the subscription of Log Analytics workspace Set-AzureRmContext -SubscriptionId <subscription Id of Log Analytics workspace>
# execute deployment command to add Container Insights solution to the specified Log Analytics workspace New-AzureRmResourceGroupDeployment -Name OnboardCluster -ResourceGroupName <resource group of Log Analytics workspace> -TemplateFile .\containerSolution.json -TemplateParameterFile .\containerSolutionParams.json
El cambio de configuración puede tardar unos minutos en finalizar. Cuando finalice, este resultado se incluye en un mensaje similar al ejemplo siguiente:
provisioningState : Succeeded
Para realizar la implementación con la CLI de Azure, ejecute los comandos siguientes:
az login az account set --name <AzureCloud | AzureChinaCloud | AzureUSGovernment> az login az account set --subscription "Subscription Name" # execute deployment command to add container insights solution to the specified Log Analytics workspace az deployment group create --resource-group <resource group of log analytics workspace> --name <deployment name> --template-file ./containerSolution.json --parameters @./containerSolutionParams.json
El cambio de configuración puede tardar unos minutos en finalizar. Cuando finalice, este resultado se incluye en un mensaje similar al ejemplo siguiente:
provisioningState : Succeeded
Después de habilitar la supervisión, pueden pasar unos 15 minutos hasta que pueda ver la métrica de estado del clúster.
Instalación del gráfico de Helm
En esta sección, instalará el agente contenedorizado para Container Insights. Antes de continuar, determine el identificador del área de trabajo necesario para el parámetro amalogsagent.secret.wsid
y la clave principal necesaria para el parámetro amalogsagent.secret.key
. Para identificar esta información, siga los pasos que se indican a continuación y, luego, ejecute los comandos para instalar el agente mediante el gráfico de Helm.
Ejecute el siguiente comando para identificar el identificador del área de trabajo:
az monitor log-analytics workspace list --resource-group <resourceGroupName>
En la salida, busque el nombre del área de trabajo en el campo name. Después, copie el identificador de esa área de trabajo de Log Analytics en el campo ID.
Ejecute el siguiente comando para identificar la clave principal del área de trabajo:
az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>
En la salida, busque la clave principal en el campo primarySharedKey y, después, copie el valor.
Nota
Los siguientes comandos solo se aplican a la versión 2 de Helm. El uso del parámetro
--name
no es aplicable a la versión 3 de Helm.Si el clúster de Kubernetes se comunica mediante un servidor proxy, configure el parámetro
amalogsagent.proxy
con la dirección URL del servidor proxy. Si el clúster no se comunica mediante un servidor proxy, no es necesario especificar este parámetro. Para obtener más información, consulte la sección Configuración del punto de conexión proxy más adelante en este artículo.Agregue el repositorio de gráficos de Azure a la lista local mediante la ejecución del siguiente comando:
helm repo add microsoft https://microsoft.github.io/charts/repo
Instale el gráfico ejecutando el comando siguiente:
$ helm install --name myrelease-1 \ --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
Si el área de trabajo de Log Analytics está en Azure China 21Vianet, ejecute el siguiente comando:
$ helm install --name myrelease-1 \ --set amalogsagent.domain=opinsights.azure.cn,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
Si el área de trabajo de Log Analytics está en Azure Gobierno de EE. UU, ejecute el siguiente comando:
$ helm install --name myrelease-1 \ --set amalogsagent.domain=opinsights.azure.us,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
Habilitación del gráfico de Helm mediante el modelo de API
Puede especificar un complemento en el archivo JSON de especificaciones del clúster del motor de AKS, también conocido como "modelo de API". En este complemento, proporcione la versión codificada en Base 64 de WorkspaceGUID
y WorkspaceKey
del área de trabajo de Log Analytics donde se almacenan los datos de supervisión recopilados. Para encontrar el valor de WorkspaceGUID
y WorkspaceKey
, siga los pasos 1 y 2 de la sección anterior.
Las definiciones de API admitidas para el clúster de Azure Stack Hub se pueden encontrar en este ejemplo: kubernetes-container-monitoring_existing_workspace_id_and_key.json. En concreto, busque la propiedad addons en kubernetesConfig:
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"addons": [
{
"name": "container-monitoring",
"enabled": true,
"config": {
"workspaceGuid": "<Azure Log Analytics Workspace Id in Base-64 encoded>",
"workspaceKey": "<Azure Log Analytics Workspace Key in Base-64 encoded>"
}
}
]
}
Configuración del agente de la recopilación de datos
Al iniciarse con la versión 1.0.0 del gráfico, la configuración de la recopilación de datos del agente se controla desde ConfigMap. Para obtener más información sobre la configuración de recopilación de datos del agente, consulte Configuración de la recopilación de datos del agente de Container Insights.
Después de implementar correctamente el gráfico, puede revisar los datos de su clúster híbrido de Kubernetes en Container Insights desde Azure Portal.
Nota
La latencia de ingesta de datos es de entre cinco y diez minutos hasta que el agente la confirme en el área de trabajo de Log Analytics. El estado del clúster mostrará el valor Sin datos o Desconocido hasta que todos los datos de supervisión necesarios estén disponibles en Azure Monitor.
Configuración del punto de conexión proxy
A partir de la versión 2.7.1 del gráfico, este admitirá la especificación del punto de conexión proxy con el parámetro amalogsagent.proxy
del gráfico. De este modo, puede comunicarse a través del servidor proxy. La comunicación entre el agente de Container Insights y Azure Monitor puede ser un servidor proxy HTTP o HTTPS. Se admiten la autenticación anónima y básica con un nombre de usuario y contraseña.
El valor de configuración del proxy tiene la sintaxis [protocol://][user:password@]proxyhost[:port]
.
Nota
Si el servidor proxy no requiere autenticación, tendrá que especificar un nombre de usuario y una contraseña ficticios. Puede ser cualquier nombre de usuario o contraseña.
Propiedad | Descripción |
---|---|
protocol | HTTP o HTTPS |
usuario | Nombre de usuario opcional para la autenticación de proxy |
password | Contraseña opcional para la autenticación de proxy |
proxyhost | Dirección o FQDN del servidor proxy |
port | Número de puerto opcional para el servidor proxy |
Un ejemplo es amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080
.
Si especifica el protocolo como http, las solicitudes HTTP se crean mediante una conexión segura SSL/TLS. El servidor proxy debe admitir los protocolos SSL y TLS.
Solución de problemas
Si se produce un error al intentar habilitar la supervisión para el clúster híbrido de Kubernetes, use el script de PowerShell TroubleshootError_nonAzureK8s.ps1 para ayudarle a detectar y corregir los problemas que encuentre. Se ha diseñado para detectar e intentar corregir las incidencias siguientes:
- El área de trabajo de Log Analytics especificada es válida.
- El área de trabajo Log Analytics se configura con la solución Container Insights. Si no es así, configure el área de trabajo.
- Los pods de replicaset del agente de Azure Monitor están en ejecución.
- Los pods de daemonset del agente de Azure Monitor están en ejecución.
- El servicio Agent Health de Azure Monitor está en ejecución.
- El identificador y la clave del área de trabajo de Log Analytics configurados en el agente contenedorizado coinciden con el área de trabajo con la que se está configurada la información.
- Valide que todos los nodos de trabajo de Linux tienen la etiqueta
kubernetes.io/role=agent
para el pod de schedulers. Si no existe, agréguela. - Identifique las condiciones que pueden indicar que
cAdvisor secure port:10250
ounsecure port: 10255
no se abre en todos los nodos del clúster.
Para realizar la ejecución con Azure PowerShell, use los siguientes comandos en la carpeta que contiene el script:
.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>
Pasos siguientes
Ahora que la supervisión está habilitada para recopilar el estado y el uso de recursos de sus clústeres híbridos de Kubernetes y que las cargas de trabajo se ejecutan en ellos, aprenda cómo usar Container Insights.