你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于: ✔️ AKS 自动版
Azure Kubernetes 服务 (AKS) Automatic为开发人员、DevOps 工程师和平台工程师提供最简单的托管 Kubernetes 体验。 AKS Automatic 可自动执行 AKS 群集设置和操作,并嵌入最佳做法配置,非常适合新式应用程序和 AI 应用程序。 任何技能级别的用户都可以从 AKS Automatic 对其应用程序的安全性、性能和可靠性中受益。 AKS 自动化还包括一个Pod 就绪性 SLA,该 SLA 保证 99.9% 的符合条件的 Pod 就绪性操作在 5 分钟内完成,确保应用程序拥有可靠和自我修复的基础设施。 本快速入门假设读者基本了解 Kubernetes 的概念。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的 Kubernetes 核心概念。
在此快速入门中,你将了解:
- 创建虚拟网络。
- 创建对虚拟网络具有权限的托管标识。
- 在虚拟网络中部署专用 AKS 自动版群集。
- 连接到专用群集。
- 运行一个示例多容器应用程序,其中的一组微服务和 Web 前端模拟零售场景。
先决条件
- 如果没有Azure帐户,请创建一个 free 帐户。
- Azure CLI 2.86.0 或更高版本。 若要查找版本,请运行
az --version命令。 如果需要安装或升级,请参阅 Install Azure CLI。
- 在 API 服务器子网上具有
Network Contributor内置角色分配的群集标识。 - 在虚拟网络上具有
Network Contributor内置角色分配的群集标识,用于支持节点自动预配。 - 使用
Azure Kubernetes 服务 Cluster User Role和Azure Kubernetes 服务 RBAC Writer访问群集的用户标识。 - 一个虚拟网络,其专用 API 服务器子网至少为
*/28大小,并分配给Microsoft.ContainerService/managedClusters。- 如果存在附加到子网的网络安全组 (NSG),请确保规则允许以下流量,这些流量存在于节点与 API 服务器之间、Azure 负载均衡器与 API 服务器之间以及 Pod 到 Pod 的通信之间。
- 如果存在 Azure 防火墙或其他出站限制方法或设备,请确保允许所需的出站网络规则和 FQDN。
- AKS Automatic 将在你的 AKS 群集上启用 Azure Policy,但为了获得更顺畅的体验,你应该先在你的订阅中预注册
Microsoft.PolicyInsights资源提供程序。 有关详细信息,请参阅 Azure 资源提供程序和类型。 - 使用
az extension remove -n aks-preview卸载 AKS-preview 扩展。
重要
从 AKS 1.36 开始,由于上游 Ingress NGINX 停用,新的 AKS 自动群集会默认启用通过应用程序路由加载项使用 Kubernetes 网关 API,而不是具有应用程序路由加载项的托管 NGINX Ingress。
现有自动群集不受影响,但应 通过应用程序路由加载项开始迁移到 Kubernetes 网关 API。
局限性
以下限制适用于 AKS 自动群集:
- AKS Automatic 在以下区域正式可用:
australiaeast、austriaeast、belgiumcentral、brazilsouth、canadacentral、centralindia、centralus、chilecentral、denmarkeast、eastasia、eastus、eastus2、francecentral、germanywestcentral、indonesiacentral、israelcentral、italynorth、japaneast、japanwest、koreacentral、malaysiawest、mexicocentral、newzealandnorth、northeurope、norwayeast、polandcentral、southafricanorth、southcentralus、southeastasia、spaincentral、swedencentral、switzerlandnorth、uaenorth、uksouth、westeurope、westus2、westus3。- 默认情况下,新的 AKS 自动群集启用托管系统节点池和 LocalDNS。 不能在任何区域中创建没有托管系统节点池的 AKS 自动群集。
- AKS 自动群集已节点资源组锁定预配置,不允许更改
MC_资源组,从而阻止默认专用 DNS区域中的虚拟网络链接。 对于跨 VNet 或自定义 DNS 场景,请使用自定义网络和专用 DNS,并遵循在自定义虚拟网络中创建专用 Azure Kubernetes 服务 (AKS) 自动群集。 - Azure CLI版本 2.86.0 或更高版本是必需的。 若要查找版本,请运行
az --version命令。 如果需要安装或升级,请参阅 Install Azure CLI。 - 不支持以下扩展:
- 不支持 Windows 节点。
- 不支持在 AKS 基本 SKU 和自动 SKU 之间迁移。
- 不支持在不使用托管系统节点池的 AKS 自动群集和具有托管系统节点池的 AKS 自动群集之间进行迁移。
定义变量
定义后续步骤中使用的以下变量。
RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
创建资源组
Azure资源组是在其中部署和管理Azure资源的逻辑组。
使用 az group create 命令创建资源组。
az group create -n ${RG_NAME} -l ${LOCATION}
以下示例输出类似于资源组成功创建:
{
"id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
"location": "canadacentral",
"managedBy": null,
"name": "automatic-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
创建虚拟网络
使用 az network vnet create 命令创建虚拟网络。 使用 az network vnet subnet create 命令创建 API 服务器子网和群集子网。
将自定义虚拟网络与 AKS 自动配合使用时,必须创建 API 服务器子网。 AKS 将代表你将子网委托给 Microsoft.ContainerService/managedClusters,从而授予 AKS 服务权限,以将 API 服务器 Pod 和内部负载均衡器注入到该子网中。 无法将该子网用于任何其他工作负载,但可将其用于同一虚拟网络中的多个 AKS 群集。 支持的最小 API 服务器子网大小为 /28。
警告
AKS 群集在子网地址空间中至少保留 9 个 (9) 个 IP。 IP 地址不足可能会阻止 API 服务器缩放并导致 API 服务器中断。
az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name userNodeSubnet \
--address-prefixes 172.19.1.0/24
az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name managedSystemNodeSubnet \
--address-prefixes 172.19.0.64/26
网络安全组规则
默认情况下,允许虚拟网络中的所有流量。 但是,如果添加了网络安全组规则 (NSG) 来限制不同子网之间的流量,请确保 NSG 安全规则允许以下类型的通信:
| 目的地 | 来源 | 协议 | 港口 | 用途 |
|---|---|---|---|---|
| APIServer 子网 CIDR | 用户节点子网和系统节点子网 | TCP | 443 和 4443 | 如需启用节点与 API 服务器之间的通信,则必须支持。 |
| APIServer 子网 CIDR | Azure 负载均衡器 | TCP | 9988 | 启用Azure 负载均衡器与 API 服务器之间的通信所必需的。 还可以启用Azure 负载均衡器与 API 服务器子网 CIDR 之间的所有通信。 |
| 节点 CIDR | 节点 CIDR | 所有协议 | 所有端口 | 启用节点之间的通信时必需。 |
| 节点 CIDR | Pod CIDR | 所有协议 | 所有端口 | 路由服务流量时必需。 |
| Pod CIDR | Pod CIDR | 所有协议 | 所有端口 | Pod 到 Pod 和 Pod 到服务的流量(包括 DNS)所必需。 |
创建托管标识并为其授予对虚拟网络的权限
使用 az identity create 命令创建托管标识并检索主体 ID。 使用 命令将虚拟网络上的“网络参与者”角色分配给托管标识。az role assignment create
az identity create \
--resource-group ${RG_NAME} \
--name ${IDENTITY_NAME} \
--location ${LOCATION}
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)
az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal
在自定义虚拟网络中创建专用 AKS 自动群集
要创建专用 AKS 自动群集,请使用 az aks create 命令。 请注意 --enable-private-cluster 标志的使用。
注释
可以参考 专用群集 文档来配置其他选项,例如禁用群集的公共 FQDN 和配置专用 DNS 区域。
az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/userNodeSubnet" \
--system-node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/managedSystemNodeSubnet"
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--enable-private-cluster \
--no-ssh-key
片刻之后,该命令将会完成,并返回有关群集的 JSON 格式信息。
连接到群集
将 AKS 自动群集创建为专用群集时,API 服务器终结点没有公共 IP 地址。 若要管理 API 服务器,例如通过 kubectl,需要通过有权访问群集Azure虚拟网络的计算机进行连接。 有几种选项可用于建立与专用群集的网络连接:
- 使用
az vm create命令和--vnet-name标志,在与AKS自动化集群相同的虚拟网络中创建虚拟机。 - 在单独的虚拟网络中使用虚拟机并设置虚拟网络对等互连。
- 使用快速路由或 VPN 连接。
- 使用专用终结点连接。
在 AKS 群集所在的同一虚拟网络中创建虚拟机是最简单的选项。 ExpressRoute 和 VPN 增加了成本,并且需要其他网络复杂性。 虚拟网络对等互联要求计划网络 CIDR 范围,以确保不存在重叠范围。 有关详细信息,请参阅 用于连接到专用群集的选项。
要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。 如果使用Azure Cloud Shell,则已安装 kubectl。 要在本地安装 kubectl,请运行 az aks install-cli 命令。 AKS Automatic 群集配置为使用 Microsoft Entra ID 进行 Kubernetes 基于角色的访问控制 (RBAC)。
使用 kubectl 命令将 配置为连接到你的 Kubernetes 群集。 此命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。
az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}
使用 kubectl get 命令验证与群集之间的连接。 此命令将返回群集节点的列表。
kubectl get nodes
以下示例输出显示了系统如何要求你登录。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
登录后,以下示例输出显示托管系统节点池。 确保节点状态为“就绪”。
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
创建虚拟网络
此Bicep文件定义虚拟网络。
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'
@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'
@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'
@description('The name of the user node subnet.')
param userNodeSubnetName string = 'userNodeSubnet'
@description('The subnet prefix of the user node subnet.')
param userNodeSubnetPrefix string = '172.19.1.0/24'
@description('The name of the system node subnet.')
param systemNodeSubnetName string = 'systemNodeSubnet'
@description('The subnet prefix of the system node subnet.')
param systemNodeSubnetPrefix string = '172.19.0.64/26'
// Virtual network with an API server subnet, a user node subnet, and a system node subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [ addressPrefix ]
}
subnets: [
{
name: apiServerSubnetName
properties: {
addressPrefix: apiServerSubnetPrefix
}
}
{
name: userNodeSubnetName
properties: {
addressPrefix: userNodeSubnetPrefix
}
}
{
name: systemNodeSubnetName
properties: {
addressPrefix: systemNodeSubnetPrefix
}
}
]
}
}
output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output userNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, userNodeSubnetName)
output systemNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, systemNodeSubnetName)
保存 Bicep 文件 virtualNetwork.bicep 到本地计算机。
重要
Bicep文件将 vnetName 参数设置为 aksAutomaticVnet,将 addressPrefix 参数设置为 172.19.0.0/16, apiServerSubnetPrefix参数到 172.19.0.0/28,以及 apiServerSubnetPrefix 参数到 172.19.1.0/24。 如果你想使用不同的值,请确保将字符串更新为偏好的值。
使用Azure CLI部署Bicep文件。
az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep
默认情况下,允许虚拟网络中的所有流量。 但是,如果添加了网络安全组规则 (NSG) 来限制不同子网之间的流量,请确保 NSG 安全规则允许以下类型的通信:
| 目的地 | 来源 | 协议 | 港口 | 用途 |
|---|---|---|---|---|
| APIServer 子网 CIDR | 用户节点子网和系统节点子网 | TCP | 443 和 4443 | 如需启用节点与 API 服务器之间的通信,则必须支持。 |
| APIServer 子网 CIDR | Azure 负载均衡器 | TCP | 9988 | 启用Azure 负载均衡器与 API 服务器之间的通信所必需的。 还可以启用Azure 负载均衡器与 API 服务器子网 CIDR 之间的所有通信。 |
| 节点 CIDR | 节点 CIDR | 所有协议 | 所有端口 | 启用节点之间的通信时必需。 |
| 节点 CIDR | Pod CIDR | 所有协议 | 所有端口 | 路由服务流量时必需。 |
| Pod CIDR | Pod CIDR | 所有协议 | 所有端口 | Pod 到 Pod 和 Pod 到服务的流量(包括 DNS)所必需。 |
创建托管标识
此Bicep文件定义用户分配的托管标识。
param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'
resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: uamiName
location: location
}
output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId
保存 Bicep 文件 uami.bicep 到本地计算机。
重要
Bicep文件将 uamiName 参数设置为 aksAutomaticUAMI。 如果你想使用不同的标识名称,请确保将字符串更新为偏好的名称。
使用Azure CLI部署Bicep文件。
az deployment group create --resource-group <resource-group> --template-file uami.bicep
分配对虚拟网络的网络参与者角色
此Bicep文件定义了在虚拟网络上的角色分配。
@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'
@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string
// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
name: vnetName
}
// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://dotnet.territoriali.olinfo.it/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
scope: virtualNetwork
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
principalId: uamiPrincipalId
}
}
将 Bicep 文件 roleAssignments.bicep 保存到本地计算机。
重要
Bicep文件将 vnetName 参数设置为 aksAutomaticVnet。 如果你使用其他虚拟网络名称,请确保将字符串更新为偏好的虚拟网络名称。
使用Azure CLI部署Bicep文件。 需要提供用户分配的标识的主体 ID。
az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
在自定义虚拟网络中创建专用 AKS 自动群集
此 Bicep 文件定义了 AKS 自动化群集。
注释
可以参考 专用群集 文档来配置其他选项,例如禁用群集公共 FQDN 和配置专用 DNS 区域。
@description('The name of the managed cluster resource.')
param clusterName string = 'aksPrivateAutomaticCluster'
@description('The location of the managed cluster resource.')
param location string = resourceGroup().location
@description('The resource ID of the API server subnet.')
param apiServerSubnetId string
@description('The resource ID of the user node subnet.')
param userNodeSubnetId string
@description('The resource ID of the system node subnet.')
param systemNodeSubnetId string
@description('The resource ID of the user assigned managed identity.')
param uamiId string
/// Create the private AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
name: clusterName
location: location
sku: {
name: 'Automatic'
}
properties: {
apiServerAccessProfile: {
subnetId: apiServerSubnetId
enablePrivateCluster: true
}
networkProfile: {
outboundType: 'loadBalancer'
}
hostedSystemProfile: {
systemNodeSubnetID: systemNodeSubnetId
nodeSubnetID: userNodeSubnetId
}
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${uamiId}': {}
}
}
}
保存 Bicep 文件 aks.bicep 到本地计算机。
重要
Bicep文件将 clusterName 参数设置为 aksPrivateAutomaticCluster。 如果你想要其他群集名称,请确保将字符串更新为偏好的群集名称。
使用Azure CLI部署Bicep文件。 需要提供 API 服务器子网资源 ID、用户节点子网资源 ID、系统节点子网资源 ID 和用户分配的托管标识资源 ID。
az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters nodeSubnetId=<user node subnet resource id> \
--parameters systemNodeSubnetId=<system node subnet resource id> \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>
连接到群集
将 AKS 自动群集创建为专用群集时,API 服务器终结点没有公共 IP 地址。 若要管理 API 服务器,例如通过 kubectl,需要通过有权访问群集Azure虚拟网络的计算机进行连接。 有几种选项可用于建立与专用群集的网络连接:
- 使用
az vm create命令和--vnet-name标志,在与AKS自动化集群相同的虚拟网络中创建虚拟机。 - 在单独的虚拟网络中使用虚拟机并设置虚拟网络对等互连。
- 使用快速路由或 VPN 连接。
- 使用专用终结点连接。
在 AKS 群集所在的同一虚拟网络中创建虚拟机是最简单的选项。 快速路由和 VPN 增加了成本,并需要更多的网络复杂性。 虚拟网络对等互联要求计划网络 CIDR 范围,以确保不存在重叠范围。 有关详细信息,请参阅 用于连接到专用群集的选项。
要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。 如果使用Azure Cloud Shell,则已安装 kubectl。 要在本地安装 kubectl,请运行 az aks install-cli 命令。 AKS Automatic 群集配置为使用 Microsoft Entra ID 进行 Kubernetes 基于角色的访问控制 (RBAC)。
重要
使用 Bicep 创建群集时,需要分配其中一个内置角色,例如 Azure Kubernetes 服务 RBAC Reader, Azure Kubernetes 服务 RBAC Writer、Azure Kubernetes 服务 RBAC Admin 或 Azure Kubernetes 服务 RBAC Cluster Admin,范围限定为群集或特定命名空间,例如使用 az role assignment create --role "Azure Kubernetes 服务 RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com。 此外,请确保用户具有 Azure Kubernetes 服务 Cluster User 内置角色,以便能够运行 az aks get-credentials,然后使用 az aks get-credentials 命令获取 AKS 群集的 kubeconfig。
使用 kubectl 命令将 配置为连接到你的 Kubernetes 群集。 此命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。
az aks get-credentials --resource-group <resource-group> --name <cluster-name>
使用 kubectl get 命令验证与群集之间的连接。 此命令将返回群集节点的列表。
kubectl get nodes
以下示例输出显示了系统如何要求你登录。
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
登录后,以下示例输出显示托管系统节点池。 确保节点状态为“就绪”。
NAME STATUS ROLES AGE VERSION
aks-hostedpool-16652789-vms1 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms2 Ready <none> 19m v1.34.7
aks-hostedpool-16652789-vms3 Ready <none> 19m v1.34.7
aks-system-surge-zq4d2 Ready <none> 19m v1.34.7
部署应用程序
若要部署应用程序,请使用清单文件创建运行 AKS Store 应用程序所需的所有对象。 Kubernetes 清单文件定义群集的所需状态,例如,要运行哪些容器映像。 该清单包括以下 Kubernetes 部署和服务:
& lt;c2>& lt;c1>& lt;c0>& lt;sb0> Azure 商店示例架构的截图。& lt;/sb0>& lt;/c0>& lt;/c1>& lt;/c2>
- 门店:Web 应用程序,供客户查看产品和下单。
- 产品服务:显示产品信息。
- 订单服务:下单。
- Rabbit MQ:订单队列的消息队列。
注释
建议不要在没有持久性存储用于生产的情况下运行有状态容器(例如 Rabbit MQ)。 此处使用这些容器是为了简单起见,但我们建议使用托管服务,例如Azure Cosmos DB或Azure 服务总线。
创建命名空间
aks-store-demo以将 Kubernetes 资源部署到其中。kubectl create ns aks-store-demo使用 kubectl apply 命令将应用程序部署到
aks-store-demo命名空间中。 定义部署的 YAML 文件位于 GitHub 上。kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml以下示例输出显示部署和服务:
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created ingress/store-front created
测试应用程序
应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。
使用 kubectl get pods 命令查看已部署的 Pod 的状态。 在继续操作之前,请确保所有 Pod 的状态为
Running。 如果这是您部署的第一个工作负载,节点自动预配可能需要几分钟才能创建用于运行 Pod 的节点池。kubectl get pods -n aks-store-demo检查应用商店前端应用程序的公共 IP 地址。 使用带有 参数的
--watch命令来监视进度。kubectl get ingress store-front -n aks-store-demo --watch服务的 ADDRESS 输出最初显示为空:
store-frontNAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 80 12m在 ADDRESS 从空白变为实际公共 IP 地址后,使用 停止
CTRL-C监视过程。kubectl以下示例输出显示向服务分配的有效公共 IP 地址:
NAME CLASS HOSTS ADDRESS PORTS AGE store-front webapprouting.kubernetes.azure.com * 4.255.22.196 80 12m打开 Web 浏览器以访问入口的外部 IP 地址,以查看Azure应用商店应用是否在运行中。
删除群集
如果不打算完成 AKS 教程,请清理不必要的资源以避免Azure费用。 运行 az group delete 命令以移除资源组、容器服务及所有相关资源。
az group delete --name <resource-group> --yes --no-wait
注释
AKS 群集是使用用户分配的托管标识创建的。 如果你不再需要该身份,则可以手动将其移除。
后续步骤
在本快速入门中,你在自定义虚拟网络中使用 AKS Automatic 部署了专用 Kubernetes 群集,然后将一个简单的多容器应用程序部署到该群集。 此示例应用程序仅用于演示目的,并未展示出 Kubernetes 应用程序的所有最佳做法。 有关使用生产版 AKS 创建完整解决方案的指南,请参阅 AKS 解决方案指南。
若要详细了解 AKS Automatic,请继续阅读简介。