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

Azure 容器实例的备用池

重要说明

若要使备用池成功创建和管理资源,需要访问订阅中的关联资源。 确保为备用池资源提供程序分配正确的权限,以便备用池正常运行。 有关详细说明,请参阅 为备用池配置角色权限

使用 Azure 容器实例的备用池,可以创建一组可用于响应传入流量的预配容器组。 池中的容器组已完全预配、初始化并准备好接收工作。

该图示显示使用传统路径和备用池路径创建容器的工作流。

限制

Azure 门户中尚不支持为 Azure 容器实例创建和管理备用池。

先决条件

提供者注册

使用 Azure Cloud Shell 向订阅注册备用池资源提供程序。 注册可能需要多达 30 分钟才能成功显示“已注册”。 可以重新运行以下命令,以确定功能何时注册成功。

Register-AzResourceProvider -ProviderNamespace Microsoft.StandbyPool

配置基于角色的访问控制权限

若要允许备用池在订阅中创建和管理容器实例,请将适当的权限分配给备用池资源提供程序。 有关更详细的步骤和信息,请参阅 在 Azure 容器实例中为备用池配置角色权限

使用备用池中的容器

如果需要新的容器组,可以立即从已预配且正在运行的备用池中拉取一个。

备用池仅从池中提供完全预配且已准备好接收工作的容器组。 例如,当池中的实例仍在进行初始化时,它们未处于正在运行状态,并且请求容器时不会被调出。 如果池中没有实例可用,Azure 容器实例将默认回退到全新的容器组创建。

备用池大小

备用池中的容器组数量通过设置 maxReadyCapacity 参数来确定。 使用池中的容器组时,备用池会自动开始重新填充,确保备用池保持设置的最大就绪容量。

目前,Azure 容器实例上备用池的唯一可用重新填充策略是 Always

设置 说明
maxReadyCapacity 要在池中部署的容器组数量上限。
refillPolicy 告知备用池立即补充容器组以维护 maxReadyCapacity。

容器组配置文件

容器组配置文件告知备用池如何在池中配置容器。 如果对容器组配置文件进行任何更改,则还需要更新备用池,确保更新应用于池中的实例。

{
    "location":"{location}",
    "properties":{
        "containers": [
        {
            "name":"[mycontainergroupprofile]",
            "properties": {
                "command":[],
                "environmentVariables":[],
                "image":"mcr.microsoft.com/azuredocs/aci-helloworld:latest",
                "ports":[
                    {
                        "port":8000
                    }
                ],
                "resources": {
                    "requests": {
                        "cpu":1,
                        "memoryInGB":1.5
                                }
                            }
                        }
                    }
                ],
                "imageRegistryCredentials":[],
                "ipAddress":{
                "ports":[
                    {
                        "protocol":"TCP",
                        "port":8000
                    }
            ],
            "type":"Public"
            },
            "osType":"Linux",
            "sku":"Standard"
            }
        }


ConfigMap

ConfigMap 属性可与容器组配置文件关联,并且用于应用类似于环境变量和机密卷的容器配置。 但是,使用环境变量或机密卷时,需要重启 Pod 才能使更改生效。 通过使用 ConfigMap,可以在不重启容器的情况下应用配置。 这将启用带外更新,以便容器可以在不重启的情况下读取新值。

无论是否使用 ConfigMap 都可创建 Azure 容器实例,并且可使用 ConfigMap 在创建后的任何时间点更新这些实例。 可以快速更新现有正在运行的容器组中的 ConfigMap,而不会导致容器重新启动。

有关详细信息,请参阅使用配置映射

{
    "properties": {
        "containers": [
            {
                "name": "{mycontainergroupprofile}",
                "properties": {
                    "image": "mcr.microsoft.com/azuredocs/aci-helloworld",
                    "ports": [
                        {
                            "port": 80,
                            "protocol": "TCP"
                        }
                    ],
                    "resources": {
                        "requests": {
                            "memoryInGB": 0.5,
                            "cpu": 0.5
                        }
                    },
                    "configMap": {
                        "keyValuePairs": {
                            "key1": "value1",
                            "key2": "value2"
                        }
                    }
                }
            }
        ],
        "osType": "Linux",
        "ipAddress": {
            "type": "Public",
            "ports": [
                {
                    "protocol": "tcp",
                    "port": 80
                }
            ]
        }
    },
    "location": "{location}"
}

机密容器

Azure 容器实例的备用池支持机密容器。 若要利用机密容器,请在容器组配置文件中将 sku 类型更新为 Confidential

重要说明

使用配置映射传递的值不包括在安全策略中,也不会在文件装载提供给容器之前由运行时验证。 任何可能影响数据或应用程序安全性的值都不能在执行过程中由应用程序信任,而是应该使用环境变量提供给容器。

{
    "location":"{location}",
    "properties":{
        "containers": [
        {
            "name":"{mycontainergroupprofile}",
            "properties": {
                "command":[],
                "environmentVariables":[],
                "image":"mcr.microsoft.com/azuredocs/aci-helloworld:latest",
                "ports":[
                    {
                        "port":8000
                    }
                ],
                "resources": {
                    "requests": {
                        "cpu":1,
                        "memoryInGB":1.5
                                }
                            }
                        }
                    }
                ],
                "imageRegistryCredentials":[],
                "ipAddress":{
                "ports":[
                    {
                        "protocol":"TCP",
                        "port":8000
                    }
            ],
            "type":"Public"
            },
            "osType":"Linux",
            "sku":"Confidential"
            }
        }


可用性区域

Azure 容器实例的备用池支持跨可用性区域创建和请求容器。 若要创建具有特定区域中实例的备用池,请在备用池创建请求中指定 zones 参数。

az standby-container-group-pool create \
   --resource-group myResourceGroup \
   --location WestCentralUS \
   --name myStandbyPool \
   --max-ready-capacity 20 \
   --refill-policy always \
   --zones 1,2,3 \
   --container-profile-id "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/mycontainergroupprofile"

后续步骤

为 Azure 容器实例创建备用池