如何为swarm中的service设置需要cpu和内存?
2023-09-11 14:14:16 时间
想象一下这个场景,你有一个服务,想要最好的运行状态,必须需要一定的CPU和内存的数量,这样的场景,如何在service中进行设置?
也就是说,为service设置一个cpu和内存的值,swarm集群中的节点,只有满足这个要求的才能运行这个task。
参数
设置的方法,非常的简单,在创建service的时候,通过下面的参数指定cpu和内存的需求值:
--reserve-memory
--reserve-cpu
示例:有满足资源需求的节点
来看个例子,运行一个nginx的service,cpu要求2核,内存512M
docker service create \ --with-registry-auth \ --name=nginx \ --replicas=3 \ --reserve-memory=512M \ --reserve-cpu=2 \ --publish published=8080,target=80 \ 172.20.58.152/middleware/nginx:1.21.4
部署过程及service运行状态
[root@nccztsjb-node-01 ~]# docker service create \ > --with-registry-auth \ > --name=nginx \ > --replicas=3 \ > --reserve-memory=512M \ > --reserve-cpu=2 \ > --publish published=8080,target=80 \ > 172.20.58.152/middleware/nginx:1.21.4 rd9svjyzuopxzt6954lsxs6il overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged [root@nccztsjb-node-01 ~]# [root@nccztsjb-node-01 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS rd9svjyzuopx nginx replicated 3/3 172.20.58.152/middleware/nginx:1.21.4 *:8080->80/tcp [root@nccztsjb-node-01 ~]# docker service ps nginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 2nrgamav1lpe nginx.1 172.20.58.152/middleware/nginx:1.21.4 nccztsjb-node-02 Running Running about a minute ago 2e341d756d06 nginx.2 172.20.58.152/middleware/nginx:1.21.4 nccztsjb-node-01 Running Running about a minute ago sz1earbc8c2e nginx.3 172.20.58.152/middleware/nginx:1.21.4 nccztsjb-node-05 Running Running about a minute ago [root@nccztsjb-node-01 ~]#
查看service的详细信息,在Resources中,保留的CPU是2,内存:512MiB
这个例子是,swarm集群节点中的资源满足service的要求,如果没有节点满足这个要求,service的状态会怎么样,看下面的例子······
示例:节点资源不满足service资源需求
主机是8c,16g,但是创建service的时候,指定需要9c
docker service create \ --with-registry-auth \ --name=nginx \ --replicas=3 \ --reserve-memory=512M \ --reserve-cpu=9 \ --publish published=8080,target=80 \ 172.20.58.152/middleware/nginx:1.21.4
部署时,会显示:no suitable node (insufficient resources on 4 nodes)
由于不满足资源的要求,在集群的4个节点上,都不适合运行这些task,所以,部署失败了!
以上,简单说明了下,service在创建时设置的资源的要求,但是下面的问题,你还需要考虑:
1、节点上已经运行task,占用内存之后,就剩512M,但是主机是16G,此时申请4G的service,可否被调度到这个节点上面?
2、service是否可以设置内存、内存使用的最大值?如何设置?
相关文章
- C#做的CPU内存使用率
- python如何给内存和cpu使用量设置限制
- Java内存模型小析
- 高并发Web服务的演变——节约系统内存和CPU
- 从JVM并发看CPU内存指令重排序(Memory Reordering)
- java高cpu占用和高内存占用
- Linux TOP命令 按内存占用排序和按CPU占用排序
- 类中内容在内存中到底是如何分配的呢?
- CPU,寄存器,内存三者的关系
- 【Linux】内存、cpu和硬盘之间的区别
- 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一1.6 内存管理之结构体
- Windows 程序启动性能优化(先载入EXE,后载入DLL,只取有限的代码载入内存,将CPU的IP指向程序的入口点)
- 阿里云Redis集群子实例内存查看
- Win10下查看内存信息
- 浅析JVM与Java内存区
- 浅析前端缓存:强缓存(Expires与Cache-Control详解)与协商缓存(4个配置)、缓存失效的问题、缓存nginx配置、缓存存在哪里(内存、硬盘、ServiceWorker)
- 基于 STM32CubeMX 添加 RT-Thread 操作系统组件(二)- 单线程SRAM静态内存
- Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划
- mongo 内存限制wiredTigerCacheSizeGB = 10
- The Machine破局:从CPU驱动到内存驱动
- 关于Cocos的内存管理机制引发一些异常的解决方案
- c语言内存模型
- JVM学习--内存分配策略(持续更新)
- 写代码如何合理使用和优化我们的机器资源(CPU、内存、网络、磁盘)