为 Azure Kubernetes 服务 (AKS) 群集启用容器见解

本文介绍如何设置容器见解,以监视托管在 Azure Kubernetes 服务 (AKS) 群集上的托管 Kubernetes 群集。

先决条件

如果要将现有的 AKS 群集连接到其他订阅中的 Log Analytics 工作区,则必须在具有 Log Analytics 工作区的订阅中注册 Microsoft.ContainerService 资源提供程序。 有关详细信息,请参阅注册资源提供程序

注意

在旧版身份验证群集上启用 Container Insights 时,会自动创建托管标识。 如果群集迁移到 MSI 身份验证,或者容器见解已禁用,则此标识将不可用,因此不应将此托管标识用于任何其他标识。

新建 AKS 群集

可以在使用以下任一方法创建 AKS 群集时为其启用监视:

现有 AKS 群集

使用以下任一方法为现有 AKS 群集启用监视。

注意

在 CLI 2.49.0 或更高版本中,将默认使用托管标识身份验证。 如需要使用旧的/非托管标识身份验证,请使用 CLI 2.49.0 < 的版本。

使用默认 Log Analytics 工作区

使用以下命令,使用资源组的默认 Log Analytics 工作区启用对 AKS 群集的监视。 如果群集区域中尚不存在默认工作区,则将创建一个名称格式为 DefaultWorkspace-<GUID>-<Region> 的工作区。

az aks enable-addons -a monitoring -n <cluster-name> -g <cluster-resource-group-name>

输出类似于以下示例:

provisioningState       : Succeeded

指定 Log Analytics 工作区

使用以下命令在特定的 Log Analytics 工作区上启用对 AKS 群集的监视。 工作区的资源 ID 的格式为 "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<WorkspaceName>"

az aks enable-addons -a monitoring -n <cluster-name> -g <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id>

输出类似于以下示例:

provisioningState       : Succeeded

验证代理和解决方案部署

运行以下命令,验证代理是否已成功部署。

kubectl get ds ama-logs --namespace=kube-system

输出应类似于以下示例,指示已正确部署:

User@aksuser:~$ kubectl get ds ama-logs --namespace=kube-system
NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
ama-logs   2         2         2         2            2           beta.kubernetes.io/os=linux   1d

如果群集上有 Windows Server 节点,请运行以下命令验证代理是否已成功部署:

kubectl get ds ama-logs-windows --namespace=kube-system

输出应类似于以下示例,指示已正确部署:

User@aksuser:~$ kubectl get ds ama-logs-windows --namespace=kube-system
NAME                   DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR                   AGE
ama-logs-windows           2         2         2         2            2           beta.kubernetes.io/os=windows   1d

若要验证解决方案的部署,请运行以下命令:

kubectl get deployment ama-logs-rs -n=kube-system

输出应类似于以下示例,指示已正确部署:

User@aksuser:~$ kubectl get deployment ama-logs-rs -n=kube-system
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE    AGE
ama-logs-rs   1         1         1            1            3h

使用 CLI 查看配置

使用 aks show 命令确定是否已启用解决方案、Log Analytics 工作区资源 ID 是什么,以及有关群集的摘要信息。

az aks show -g <resourceGroupofAKSCluster> -n <nameofAksCluster>

片刻之后,该命令将会完成,并返回有关解决方案的 JSON 格式信息。 命令结果应显示监视加载项配置文件,并类似于以下示例输出:

"addonProfiles": {
    "omsagent": {
      "config": {
        "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>"
      },
      "enabled": true
    }
  }

迁移到托管标识身份验证

本部分介绍用于迁移到托管标识身份验证的两种方法。

具有服务主体的现有群集

具有服务主体的 AKS 群集必须先禁用监视,然后升级到托管标识。

注意

最低 Azure CLI 2.49.0 或更高版本。

  1. 获取配置的 Log Analytics 工作区资源 ID:

    az aks show -g <resource-group-name> -n <cluster-name> | grep -i "logAnalyticsWorkspaceResourceID"
    
  2. 使用以下命令禁用监视:

    az aks disable-addons -a monitoring -g <resource-group-name> -n <cluster-name> 
    
  3. 使用以下命令将群集升级到系统托管标识:

    az aks update -g <resource-group-name> -n <cluster-name> --enable-managed-identity
    
  4. 使用在步骤 1 中获取的 Log Analytics 工作区资源 ID 启用具有托管标识身份验证选项的监视加载项:

    az aks enable-addons -a monitoring -g <resource-group-name> -n <cluster-name> --workspace-resource-id <workspace-resource-id>
    

具有系统或用户分配的标识的现有群集

具有系统分配的标识的 AKS 群集必须先禁用监视,然后升级到托管标识。 世纪互联云运营的 Azure 目前支持使用系统标识的群集。 对于具有用户分配的标识的群集,仅支持 Azure 公有云。

注意

最低 Azure CLI 2.49.0 或更高版本。

  1. 获取配置的 Log Analytics 工作区资源 ID:

    az aks show -g <resource-group-name> -n <cluster-name> | grep -i "logAnalyticsWorkspaceResourceID"
    
  2. 使用以下命令禁用监视:

    az aks disable-addons -a monitoring -g <resource-group-name> -n <cluster-name>
    
  3. 使用在步骤 1 中获取的 Log Analytics 工作区资源 ID 启用具有托管标识身份验证选项的监视加载项:

    az aks enable-addons -a monitoring -g <resource-group-name> -n <cluster-name> --workspace-resource-id <workspace-resource-id>
    

按照下列过程之一,通过使用 Azure 专用链接将群集连接到 Log Analytics 工作区来启用网络隔离。

托管标识身份验证

如果群集使用 Azure Monitor 代理的托管标识身份验证,请使用以下过程。

  1. 按照为 Azure Monitor 代理启用网络隔离中的步骤创建数据收集终结点,并将其添加到 Azure Monitor 专用链接服务。

  2. 使用以下 API 调用在群集与数据收集终结点之间创建关联。 有关此调用的信息,请参阅数据收集规则关联 - 创建。 DCR 关联名称必须是 configurationAccessEndpoint,resourceUri 是 AKS 群集的资源 ID。

    PUT https://management.chinacloudapi.cn/{cluster-resource-id}/providers/Microsoft.Insights/dataCollectionRuleAssociations/configurationAccessEndpoint?api-version=2021-04-01
    {
    "properties": {
        "dataCollectionEndpointId": "{data-collection-endpoint-resource-id}"
        }
    }
    

    以下代码片段是此 API 调用的示例:

    PUT https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/my-aks-cluster/providers/Microsoft.Insights/dataCollectionRuleAssociations/configurationAccessEndpoint?api-version=2021-04-01
    
    {
    "properties": {
        "dataCollectionEndpointId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionEndpoints/myDataCollectionEndpoint"
        }
    }
    
  3. 按照迁移到托管标识身份验证中的步骤,启用具有托管标识身份验证选项的监视。

不使用托管标识身份验证

如果未使用托管标识身份验证,请使用以下过程。 这需要用到专用 AKS 群集

  1. 按照创建专用 Azure Kubernetes 服务群集中的指导创建专用 AKS 群集。

  2. 在 Log Analytics 工作区上禁用公共引入。

    使用以下命令在现有工作区上禁用公共引入。

    az monitor log-analytics workspace update --resource-group <azureLogAnalyticsWorkspaceResourceGroup> --workspace-name <azureLogAnalyticsWorkspaceName>  --ingestion-access Disabled
    

    使用以下命令创建禁用公共引入的新工作区。

    az monitor log-analytics workspace create --resource-group <azureLogAnalyticsWorkspaceResourceGroup> --workspace-name <azureLogAnalyticsWorkspaceName>  --ingestion-access Disabled
    
  3. 按照配置专用链接中的说明配置专用链接。 将引入访问权限设置为“公共”,然后在创建专用终结点之后但在启用监视之前将其设置为“专用”。 专用链接资源区域必须与 AKS 群集区域相同。

  4. 启用对 AKS 群集的监视。

    az aks enable-addons -a monitoring --resource-group <AKSClusterResourceGorup> --name <AKSClusterName> --workspace-resource-id <workspace-resource-id>
    

限制

  • 启用托管标识身份验证时,将创建名为 MSCI-<cluster-region>-<\cluster-name> 的数据收集规则。 目前无法修改此名称。

  • 必须位于同一专用网络上的计算机上,才能从专用群集访问实时日志。

后续步骤

  • 如果在尝试加入解决方案时遇到问题,请查看故障排除指南
  • 在启用了监视功能以收集 AKS 群集以及在其上运行的工作负荷的运行状况和资源利用率之后,请了解如何使用容器见解。