• 如何为swarm中的service设置需要cpu和内存?



    想象一下这个场景,你有一个服务,想要最好的运行状态,必须需要一定的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是否可以设置内存、内存使用的最大值?如何设置?

     

     

  • 相关阅读:
    Zend Studio使用
    iOS中block实现的探究
    用python演示一个简单的AST(抽象语法树)
    Cocos2D-x权威指南: CCNode类方法:
    ListView的优化
    可变參数
    android媒体--stagefright概述【一】
    flume安装及配置
    linux包之sysstat之mpstat与pidstat命令
    Java实现第十届蓝桥杯等差数列
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/16714877.html
Copyright © 2020-2023  润新知