为了使应用有更高的可用性,容器服务支持将同一个服务的容器调度在不同的可用区(availability zone)里。当某个可用区故障时,应用依然能够提供服务。
您可以在编排文件中通过环境变量指定对可用区的选择,有以下两种格式。
availability:az==3
服务至少分布在 3 个可用区中;如果当前集群没有 3 个可用区,或机器资源不够导致无法分布在 3 个可用区,容器创建会失败。
availability:az==~3
服务尽可能分布在 3 个可用区中;无法满足时依然可以成功创建。
在下面的示例中,服务至少要部署在两个可用区中。
- [backcolor=transparent]nnn[backcolor=transparent]:
- [backcolor=transparent] expose[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]443[backcolor=transparent]/[backcolor=transparent]tcp
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80[backcolor=transparent]/[backcolor=transparent]tcp
- [backcolor=transparent] image[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'nginx:latest'
- [backcolor=transparent] environment[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]'availability:az==2'
- [backcolor=transparent] labels[backcolor=transparent]:
- [backcolor=transparent] aliyun[backcolor=transparent].[backcolor=transparent]scale[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'8'
- [backcolor=transparent] restart[backcolor=transparent]:[backcolor=transparent] always
- [backcolor=transparent] volumes[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]/var/[backcolor=transparent]cache[backcolor=transparent]/[backcolor=transparent]nginx
阿里云 AI 助理回答
在您提供的示例中,展示了如何在容器服务的编排文件中设置环境变量以确保服务至少部署在两个可用区(availability zones)中。具体配置如下:
nnn:
expose:
- "443/tcp"
- "80/tcp"
image: 'nginx:latest'
environment:
- 'availability:az==2'
labels:
aliyun.scale: '8'
restart: always
volumes:
- /var/cache/nginx
在这个配置里,关键点在于environment
部分,它定义了一个环境变量availability:az==2
。这表示该服务期望被调度到至少2个不同的可用区里,以此来提高服务的可用性。如果集群包含足够的节点资源分布在至少2个可用区,容器服务将会遵循这个策略进行调度。
请注意,如果集群实际可用区数量少于指定的数量,或者资源不足以满足跨多个可用区部署的需求,根据您的描述,采用availability:az==2
这种严格要求的方式可能会导致容器创建失败。在这种情况下,可以考虑使用availability:az==~2
这样的表达式,它表示尽可能部署到2个可用区,即使无法满足也不会阻止容器的创建。
阿里云容器服务ACK(Container Service for Kubernetes)或ASK(Serverless Kubernetes)均支持这类高级调度特性,帮助用户实现高可用的容器应用部署。通过YAML文件或者UI界面,您可以灵活地配置服务的部署策略,包括但不限于可用区选择、节点亲和性、容忍度等,以满足不同业务场景下的需求。