用途
Azure Kubernetes Service(AKS)用于在 Azure 上部署和管理生产级 Kubernetes 集群。当需要托管 Kubernetes 而无需维护控制平面基础设施、工作负载需要带自动扩缩的容器编排、需要与 Azure AD、Key Vault 和容器注册表(ACR)紧密集成,或运行需要服务网格、Ingress 或网络策略的微服务时,可使用本技能。也适用于需要 GPU 或 Spot 节点池以支持专用或成本优化工作负载的场景。
前置条件
安装 Azure CLI 与 kubectl:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az aks install-cli
登录并设置订阅:
az login
az account set --subscription "my-subscription-id"
注册所需提供程序:
az provider register --namespace Microsoft.ContainerService
az provider register --namespace Microsoft.OperationsManagement
验证 kubectl:
kubectl version --client
主要能力
集群创建
基础生产集群通过 az aks create 创建,可配置节点数量、VM 大小、托管标识、集群自动扩缩器(最小/最大节点数)、网络插件(azure)、网络策略(calico)、服务 CIDR、DNS 服务 IP、VNet 子网、Azure AD 集成、Azure RBAC、可用区、SSH 密钥和标签。创建后使用 az aks get-credentials 获取集群凭据,并用 kubectl get nodes 和 kubectl cluster-info 验证访问。
私有集群通过 --enable-private-cluster 和 --private-dns-zone system 创建。
节点池管理
可添加用户节点池(--mode User),配置节点数、VM 大小、自动扩缩、可用区、标签、污点和最大 Pod 数。支持添加 GPU 节点池(如 Standard_NC6s_v3)用于 ML 工作负载,以及 Spot 实例池(--priority Spot、--eviction-policy Delete、--spot-max-price -1)用于批处理工作负载。支持手动扩缩(az aks nodepool scale)、升级(az aks nodepool upgrade)和列出节点池(az aks nodepool list)。
Ingress 控制器
通过 Helm 安装 NGINX Ingress 控制器,可设置副本数、节点选择器、负载均衡健康探测路径和外部流量策略。安装后使用 kubectl get svc -n ingress-nginx 验证并获取外部 IP。Ingress 资源示例包含 TLS、SSL 重定向、代理请求体大小、cert-manager 集群签发者,以及基于路径前缀路由到不同后端服务。
监控与日志
启用 Container Insights(--addons monitoring,需指定 Log Analytics 工作区资源 ID)、Azure Policy 附加组件(--addons azure-policy)和 Key Vault 密钥提供程序(--addons azure-keyvault-secrets-provider)。可通过 az aks show --query "addonProfiles" 查看集群诊断信息。也可通过 Helm 安装 Prometheus + Grafana(kube-prometheus-stack)。
ACR 集成
创建 Azure 容器注册表(az acr create),通过 az aks update --attach-acr 将 ACR 附加到 AKS(授予 AcrPull 角色)。使用 az acr build 构建并推送镜像,并可用 kubectl run 验证拉取权限。
Terraform 配置
提供 azurerm_kubernetes_cluster 和 azurerm_kubernetes_cluster_node_pool 资源示例,涵盖默认节点池、自动扩缩、可用区、VNet 子网、节点标签、系统分配标识、网络配置、Azure AD RBAC、OMS 代理、Key Vault 密钥提供程序及标签。
集群升级
使用 az aks get-upgrades 查看可用 Kubernetes 版本,先升级控制平面(--control-plane-only),再逐个升级节点池,并通过 az aks show --query "provisioningState" 检查升级状态。
使用方式
本技能以 Azure CLI 命令、kubectl 命令、Helm 命令、YAML 清单和 Terraform 配置为主要操作方式。典型流程为:安装工具并登录 → 创建资源组与集群 → 获取凭据 → 添加节点池 → 配置 Ingress 与监控 → 集成 ACR → 按需升级。
适用场景
- 需要托管 Kubernetes 控制平面,避免自行维护。
- 需要容器编排与自动扩缩的工作负载。
- 需要与 Azure AD、Key Vault、ACR 深度集成。
- 运行需要服务网格、Ingress 或网络策略的微服务。
- 需要 GPU 或 Spot 节点池的专用或成本优化工作负载。
限制与故障排查
技能提供常见故障排查表,涵盖:节点处于 NotReady 状态(VM 资源耗尽或网络问题)、Pod 卡在 Pending(无可用节点或资源请求过高)、ImagePullBackOff(ACR 未附加或镜像标签错误)、Ingress 返回 404(服务或路径不匹配)、私有集群不可达(未配置 VPN 或私有终结点)、集群自动扩缩器不扩缩(未设置 Pod 资源请求)、Azure Policy 违规阻止 Pod、持久卷无法绑定(StorageClass 不匹配或可用区问题)。
相关技能
- terraform-azure:使用 Terraform 配置 AKS 集群以实现可重复的基础设施。
- azure-networking:Azure CNI 所需的 VNet 和子网配置。
- arm-templates:基于 Bicep 的 AKS 部署,作为 Terraform 的替代方案。
- azure-vms:了解用于节点池选择的 VM 大小。