为了使应用有更高的可用性,容器服务支持将同一个服务的容器调度在不同的可用区(availability zone)里。当某个可用区故障时,应用依然能够提供服务。
您可以在编排文件中通过环境变量指定对可用区的选择,有以下两种格式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您提供的示例中,展示了如何在容器服务的编排文件中设置环境变量以确保服务至少部署在两个可用区(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界面,您可以灵活地配置服务的部署策略,包括但不限于可用区选择、节点亲和性、容忍度等,以满足不同业务场景下的需求。