你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器实例的备用池(预览)
重要
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 门户”中,导航到订阅。
- 选择要调整权限的订阅。
- 选择“访问控制 (IAM)”。
- 依次选择“添加”、“添加角色分配”。
- 在“角色”选项卡下,搜索“备用容器组池参与者”并将其选择。
- 移动到“成员”选项卡。
- 选择 + 选择成员。
- 搜索“备用池资源提供程序”并选择它。
- 移动到“查看 + 分配”选项卡。
- 应用更改。
- 重复上述步骤,同时将 Azure 容器实例参与者角色和网络参与者分配到备用池资源提供程序。
有关分配角色的信息,请参阅使用 Azure 门户分配 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,而不会导致容器重新启动。
有关详细信息,请参阅使用 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
。
重要
使用 ConfigMap 传递的值不包括在安全策略中,也不会在文件装载提供给容器之前由运行时验证。 在执行过程中,应用程序不能信任可能影响数据或应用程序安全的任何值,而应该使用环境变量提供给容器。
{
"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 容器实例的备用池支持与托管标识的集成。 从备用池请求容器并包括 identity
参数和设置时,会应用托管标识。 托管标识不是容器组配置文件中直接支持的属性。
{
"location": "{location}",
"properties": {
"standByPoolProfile":{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.StandbyPool/standbyContainerGroupPools/{standbyPoolName}"
},
"containerGroupProfile": {
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerInstance/containerGroupProfiles/{mycontainergroupprofile}",
"revision": {revisionNumber}
},
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identity}": {}
},
"containers": [
{
"name": "{mycontainergroupprofile}",
"properties": {
"configMap": {
"keyValuePairs": {
"{newKey}": "{newValue}"
}
}
}
}
]
}
}
可用性区域
Azure 容器实例的备用池支持跨可用性区域创建和请求容器。 创建区域性备用池目前仅在使用备用池 REST API 使用版本 2024-08-01-preview,并且仅在印度中部区域可用。
创建区域备用池
PUT https://management.azure.com/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.StandbyPool/standbyContainerGroupPools/myStandbyPool?api-version=2024-08-01-preview
Request Body
{
"properties": {
"elasticityProfile": {
"maxReadyCapacity": 20,
"refillPolicy": "always"
},
"containerGroupProperties": {
"containerGroupProfile": {
"id": "/subscriptions/{SubscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.ContainerInstance/containerGroupProfiles/mycontainergroupprofile",
"revision": 1
},
"subnetIds": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNET/subnets/mySubnet"
}
]
},
"zones": [
"1",
"2",
"3"
]
},
"location": "West Central US"
}