容器服务支持对 Docker 容器的重新调度:当一个节点失效时,容器可以被自动调度到其他可用节点自动运行。
缺省情况下,容器的重新调度策略是关闭的。根据需要,您可以用如下配置来让重调度策略生效。
容器服务提供兼容 Docker Swarm 的容器重新调度策略,可以通过环境变量方式或者 label 方式启动。
[backcolor=transparent]环境变量:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云容器服务确实支持对Docker容器的自动重新调度功能,以确保高可用性。当集群中的某个节点发生故障时,该功能可以自动将运行在该节点上的容器重新调度到其他健康的节点上继续运行,从而减少服务中断的风险。
您提到了两种配置方式来启用容器的重新调度策略:
通过在容器的定义中添加特定的环境变量来开启重新调度策略。例如,在您的Redis容器定义中,通过设置环境变量reschedule:on-node-failure
来指示容器服务在节点失败时重新调度容器。
redis:
image: redis
environment:
- reschedule:on-node-failure
另一种方法是使用标签(Labels)来指定重新调度策略。在Docker Swarm兼容模式下,可以通过添加特定的标签来实现这一功能。比如在Nginx容器的例子中,通过设置标签com.docker.swarm.reschedule-policies
为["on-node-failure"]
来激活节点故障时的重调度机制。
web:
image: nginx
restart: always
environment:
- aaaaa=aaaaa
labels:
aliyun.scale: "3"
com.docker.swarm.reschedule-policies: ["on-node-failure"]
请注意,上述示例假设您正在使用的是支持Docker Swarm特性的阿里云容器服务或类似系统。在实际操作中,具体配置可能需要根据您使用的阿里云产品(如ACK - 阿里云容器服务Kubernetes版)和其管理界面或YAML配置文件的具体要求进行调整。
对于ACK,推荐使用Kubernetes原生的重启策略(如restartPolicy: Always
)以及StatefulSet、Deployment等资源对象来管理应用的高可用性和容错能力,这些高级功能提供了更灵活和强大的容器管理能力。