Swarm服务提供了几种不同的方法来控制不同节点上服务的规模和位置。
1.您可以指定服务是需要运行特定数量的副本,还是应该在每个工作节点上全局运行请参见复制或全局服务
2.您可以配置服务的CPU或内存要求,并且服务仅在满足这些要求的节点上运行。
3.放置约束使您能够将服务配置为仅在具有特定元数据集的节点上运行如果没有合适的节点,部署将会失败例如,您可以指定您的服务应该只在pci_compliant设置为的任何节点上运行true
4.放置首选项允许您将具有一定范围值的任意标签应用于每个节点,并使用算法在这些节点之间分配服务任务目前唯一支持的算法是spread,它试图将它们均匀放置例如,如果用机架值为1—10的标签标记每个节点,然后用键指定放置首选项机架,则在机架采用其他放置约束,放置首选项和其他特定于节点的限制后,服务任务将尽可能均匀地放置在所有标记的节点上
与约束不同,放置首选项是最大的努力,如果没有节点能够满足首选项,服务将不会部署失败如果指定了服务的放置首选项,当集群管理器决定哪些节点应该运行服务任务时,匹配该首选项的节点排名会更高其他因素,如服务的高可用性,也会影响调度服务任务运行的节点例如,如果您有N个带有机架标签的节点,并且您的服务被配置为运行N 1个副本,那么1将被安排在一个还没有该服务的节点上,如果有,无论哪个节点有没有机架标签
复制或全局服务
Swarm模式有两种类型的服务:复制和全局对于复制服务,您可以指定群集管理器在可用节点上计划的复制任务数对于全局服务,调度器在每个可用节点上放置一个任务,以满足服务放置约束和资源要求
您可以使用— mode标志来控制服务类型如果不指定模式,服务默认为复制对于复制服务,您可以使用—replications标志来指定要启动的复制任务数
$ docker服务创建
—命名我的网站
—复制品3
服务器
要在每个可用节点上启动全局服务,请将—modeglobal传递给docker服务create每次有新节点可用时,调度程序都会在新节点上放置全局服务的任务
$ docker服务创建
—命名我的服务
—全局模式
阿尔卑斯山顶
服务约束允许您在调度程序将服务部署到节点之前,为节点设置要满足的条件您可以基于节点属性和元数据或引擎元数据对服务应用约束有关约束的更多信息,请参见docker服务创建CLI参考
为服务保留内存或中央处理器
要为服务保留给定数量的内存或CPU,请使用— reserve—memory或— reserve—cpu标志如果没有可用的节点来满足要求,服务将保持挂起,直到有合适的节点可以运行其任务
内存不足异常
如果您的服务试图使用比群节点的可用内存更多的内存,您可能会遇到内存不足的异常,并且容器或Docker守护程序可能会被内核OOM终止为了防止这种情况,请确保您的应用程序运行在具有足够内存的主机上,并参考了解内存不足的风险
Swarm服务允许您使用资源约束,放置首选项和标签来确保您的服务被部署到适当的swarm节点。
声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。