你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要说明
Azure 容器实例的备用池现在为预览版。 需同意补充使用条款才可使用预览版。 在正式版 (GA) 推出之前,此功能的某些方面可能会有所更改。
使用 Azure 容器实例的备用池,可以创建一组可用于响应传入流量的预配容器组。 池中的容器组已完全预配、初始化并准备好接收工作。
限制
Azure 门户中尚不支持为 Azure 容器实例创建和管理备用池。
先决条件
功能注册
使用 Azure Cloud Shell 向订阅注册备用池资源提供程序和备用池预览功能。 注册可能需要多达 30 分钟才能成功显示“已注册”。 可以重新运行以下命令,以确定功能何时注册成功。
Register-AzResourceProvider -ProviderNameSpace Microsoft.ContainerInstance
Register-AzResourceProvider -ProviderNamespace Microsoft.StandbyPool
Register-AzProviderFeature -FeatureName StandbyContainerGroupPoolPreview -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"
目前,以下区域提供对 ACI 备用池的区域支持:
- 澳大利亚东部
- 巴西南部
- CanadaCentral
- CentralUS
- EastUS
- EastUS2
- FranceCentral
- 德国西中部
- IndiaCentral
- JapanEast
- NorthEurope
- 东南亚
- SouthCentralUS
- 瑞典中心
- 西欧
- WestUS
- WestUS2
- WestUS3