你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用具有 OS 保护的 Azure Linux(预览版)在 Azure Kubernetes 服务(AKS)中创建群集

在本教程中(共五部分中的第一部分),你将了解如何:

  • 安装 Kubernetes CLI kubectl
  • 安装 Azure CLI 扩展 aks-preview
  • 注册AzureLinuxOSGuardPreview功能标志。
  • 创建 Azure 资源组。
  • 使用 OS Guard 群集创建和部署 Azure Linux。
  • 配置 kubectl 以连接到具有 OS Guard 集群的 Azure Linux。

在后面的教程中,了解如何将具有 OS Guard 节点池的 Azure Linux 添加到现有群集,以及使用 OS Guard 将现有节点迁移到 Azure Linux。

注意事项和限制

在开始之前,请查看以下 Azure Linux 与 OS Guard 的注意事项和限制(预览版):

  • 使用 OS Guard 的 Azure Linux 需要 Kubernetes 版本 1.32.0 或更高版本。
  • 所有带操作系统防护的 Azure Linux 均已启用联邦信息处理标准 (FIPS)受信任启动
  • 在 AKS 上的 Azure Linux,只有 Azure CLI 和 ARM 模板这两种部署方法受支持,并且 OS Guard 目前处于预览状态。 不支持 PowerShell 和 Terraform。
  • 在预览版中,带操作系统防护的 Azure Linux 在 AKS 上不支持 Arm64 映像。
  • 对于 AKS 上带操作系统防护的 Azure Linux,唯一支持的 OS 升级通道NodeImageNone。 由于 /usr 目录不可变,UnmanagedSecurityPatch 与带操作系统防护的 Azure Linux 不兼容。
  • 不支持工件流式传输
  • 不支持Pod 沙盒功能
  • 不支持机密虚拟机(CVM)。
  • 不支持第 1 代虚拟机(VM)。

先决条件

安装 aks-preview Azure CLI 扩展

重要

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

  • 使用 aks-preview 命令安装 az extension add 扩展。

    az extension add --name aks-preview
    
  • 使用 az extension update 命令更新到扩展的最新版本。

    az extension update --name aks-preview
    

注册 Azure Linux OS Guard 预览版功能标志

  1. 使用 AzureLinuxOSGuardPreview 命令注册 az feature register 功能标志。

    az feature register --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    

    几分钟后,状态将显示为“已注册”

  2. 使用 az feature show 命令验证注册状态。

    az feature show --namespace "Microsoft.ContainerService" --name "AzureLinuxOSGuardPreview"
    
  3. 当状态显示“已注册”时,使用 az provider register 命令刷新 Microsoft.ContainerService 资源提供程序的注册。

    az provider register --namespace "Microsoft.ContainerService"
    

创建资源组

Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,需要指定位置。 此位置为:

  • 资源组元数据的存储位置。
  • 如果在创建资源时未指定其他区域,则资源在 Azure 中运行的位置。

使用 az group create 命令创建资源组。 在运行命令之前,声明环境变量以确保每个部署的唯一资源名称。

export REGION="EastUS2"
az group create --name $RESOURCE_GROUP_NAME --location $REGION

示例输出:

{
  "id": "/subscriptions/xxxxx/resourceGroups/testAzureLinuxOSGuardResourceGroupxxxxx",
  "location": "EastUS2",
  "managedBy": null,
  "name": "testAzureLinuxOSGuardResourceGroupxxxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

使用 OS Guard 创建 Azure Linux(预览版)群集

使用带有 --os-sku AzureLinuxOSGuard 参数的 az aks create 命令创建 AKS 群集,以便预配带操作系统防护的 Azure Linux。 需要启用 FIPS安全启动vtpm 才能将 Azure Linux 与 OS Guard 配合使用。 以下示例使用 OS Guard 群集创建 Azure Linux:

az aks create --name $MY_AZ_CLUSTER_NAME --resource-group $MY_RESOURCE_GROUP_NAME --os-sku AzureLinuxOSGuard --node-osdisk-type Managed --enable-fips-image --enable-secure-boot --enable-vtpm

示例输出:

{
  "id": "/subscriptions/xxxxx/resourceGroups/testAzureLinuxOSGuardResourceGroupxxxxx/providers/Microsoft.ContainerService/managedClusters/testAzureLinuxOSGuardClusterxxxxx",
  "location": "WestUS2",
  "name": "testAzureLinuxOSGuardClusterxxxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "type": "Microsoft.ContainerService/managedClusters"
}

片刻之后,该命令将会完成,并返回有关群集的 JSON 格式信息。

使用 kubectl 连接到群集

使用 kubectl 命令将 az aks get-credentials 配置为连接到你的 Kubernetes 群集。 以下示例使用前面创建的资源组和群集名称获取 Azure Linux 容器主机群集的凭据:

az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME

使用 kubectl get nodes 命令验证与群集的连接,以返回群集节点的列表。

kubectl get nodes

示例输出:

NAME                           STATUS   ROLES   AGE     VERSION
aks-nodepool1-00000000-0       Ready    agent   10m     v1.20.7
aks-nodepool1-00000000-1       Ready    agent   10m     v1.20.7

后续步骤

在本教程中,你已创建并部署了具有 OS Guard 群集的 Azure Linux。 在下一教程中,了解如何将包含 OS Guard 节点池的 Azure Linux 添加到现有群集。