设置 Azure Kubernetes 服务 (AKS) 的网络可观测性 - Azure 托管的 Prometheus 和 Grafana

AKS 网络可观测性用于收集 AKS 群集的网络流量数据。 网络可观测性支持用于监视应用程序和网络运行状况的集中式平台。 Prometheus 负责收集 AKS 网络可观测性指标,而 Grafana 将它们可视化。 支持 Cilium 和非 Cilium 数据平面。 本文介绍如何启用网络可观测性加载项,并使用 Azure 托管的 Prometheus 和 Grafana 可视化抓取的指标。

有关 AKS 网络可观测性的详细信息,请参阅什么是 Azure Kubernetes 服务 (AKS) 网络可观测性?

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文中的步骤所需的 Azure CLI 最低版本为 2.44.0。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

创建群集

注意

对于 >= 1.29 的 Kubernetes 版本,具有 Azure 托管 Prometheus 的群集中包括了网络可观测性。 指标抓取是通过 AMA 指标配置文件定义的。

对于较低的 Kubernetes 版本,需要执行额外的步骤来启用网络可观测性。

创建资源组

资源组是在其中部署和管理 Azure 资源的逻辑容器。 使用 az group create 命令创建资源组。 以下示例在 eastus 位置创建名为 myResourceGroup 的资源组:

az group create \
    --name myResourceGroup \
    --location eastus

创建 AKS 群集

使用 az aks create 创建 AKS 群集。 以下示例每个都在 myResourceGroup 资源组中创建名为 myAKSCluster 的 AKS 群集。

示例 1:非 Cilium

在以下示例中使用 az aks create 创建非 Cilium AKS 群集。

az aks create \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --location eastus \
    --generate-ssh-keys \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --pod-cidr 192.168.0.0/16 \
    --kubernetes-version 1.29

示例 2:Cilium

在以下示例中使用 az aks create 创建 Cilium AKS 群集。

az aks create \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --generate-ssh-keys \
    --location eastus \
    --max-pods 250 \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --network-dataplane cilium \
    --node-count 2 \
    --pod-cidr 192.168.0.0/16

Azure 托管的 Prometheus 和 Grafana

使用以下示例为 AKS 群集安装并启用 Prometheus 和 Grafana。

创建 Azure Monitor 资源

az resource create \
    --resource-group myResourceGroup \
    --namespace microsoft.monitor \
    --resource-type accounts \
    --name myAzureMonitor \
    --location chinanorth3 \
    --properties '{}'

创建 Grafana 实例

使用 az grafana create 创建 Grafana 实例。 Grafana 实例的名称必须唯一。 将 myGrafana 替换为 Grafana 实例的唯一名称。

az grafana create \
    --name myGrafana \
    --resource-group myResourceGroup 

将 Grafana 和 Azure Monitor 资源 ID 放在变量中

使用 az grafana show 将 Grafana 资源 ID 放在变量中。 使用 az resource show 将 Azure Monitor 资源 ID 放在变量中。 将 myGrafana 替换为 Grafana 实例的名称。

grafanaId=$(az grafana show \
                --name myGrafana \
                --resource-group myResourceGroup \
                --query id \
                --output tsv)

azuremonitorId=$(az resource show \
                    --resource-group myResourceGroup \
                    --name myAzureMonitor \
                    --resource-type "Microsoft.Monitor/accounts" \
                    --query id \
                    --output tsv)

使用 az aks update 将 Azure Monitor 和 Grafana 资源链接到 AKS 群集。

az aks update \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --enable-azure-monitor-metrics \
    --azure-monitor-workspace-resource-id $azuremonitorId \
    --grafana-resource-id $grafanaId

获取群集凭据

az aks get-credentials --name myAKSCluster --resource-group myResourceGroup

使用 Grafana 进行可视化

注意

以下部分需要部署 Azure 托管的 Prometheus 和 Grafana。

  1. 使用以下示例验证 Azure Monitor Pod 是否正在运行。

    kubectl get po -owide -n kube-system | grep ama-
    
    ama-metrics-5bc6c6d948-zkgc9          2/2     Running   0 (21h ago)   26h
    ama-metrics-ksm-556d86b5dc-2ndkv      1/1     Running   0 (26h ago)   26h
    ama-metrics-node-lbwcj                2/2     Running   0 (21h ago)   26h
    ama-metrics-node-rzkzn                2/2     Running   0 (21h ago)   26h
    ama-metrics-win-node-gqnkw            2/2     Running   0 (26h ago)   26h
    ama-metrics-win-node-tkrm8            2/2     Running   0 (26h ago)   26h
    
  2. 在 Web 浏览器中导航到你的 Grafana 实例。

  3. 我们已创建了一个示例仪表板。 可以在“仪表板”>“Azure 托管 Prometheus”>“Kubernetes / 网络 / 群集”下找到它。

  4. 检查“Kubernetes / 网络 / 群集”Grafana 仪表板中的指标是否可见。 如果未显示指标,请在右上角的下拉列表框中将时间范围更改为过去 15 分钟。


清理资源

如果不打算继续使用此应用程序,请使用以下示例删除本文中创建的 AKS 群集和其他资源:

  az group delete \
    --name myResourceGroup

后续步骤

在本操作指南文章中,你已学习了如何为 AKS 群集设置 AKS 网络可观测性。