如何通过cli查看Docker Swarm资源预留

问题描述 投票:0回答:1

我介绍了集群上的 Docker Swarm 资源限制(24 GB RAM 和 12 VCPU)以及使用以下配置指定的服务限制:

  redis:
    image: redis
    deploy:
      replicas: 1
      resources:
        reservations:
          cpus: '1'
          memory: 300m
    ports:
      - "6379:6379"

现在的问题是我收到错误

no suitable node (insufficient resources on 3 nodes)
并且我无法理解哪些资源已经结束以及具体在哪里。有没有办法全面了解资源预留?

docker docker-swarm
1个回答
0
投票

我制作了一些脚本来通过服务获取内存和 CPU 的预留:

  docker service ls --format '{{ .ID }}' \
    | xargs docker service ps --format '{{ .ID }}\t{{ .DesiredState }}\t{{ .Name }}\t{{ .Node }}' \
    | grep Running \
    | sed 's/.1\t/\t/g' \
    | sed 's/.2\t/\t/g' \
    | sed 's/.3\t/\t/g' \
    | sed 's/.4\t/\t/g' \
    | sed 's/.5\t/\t/g' \
    | sed 's/.6\t/\t/g' \
    | sed 's/.7\t/\t/g' \
    | sed 's/.8\t/\t/g' \
    | sed 's/.9\t/\t/g' \
    | sed 's/.10\t/\t/g' \
    | sed 's/.11\t/\t/g' \
    | sed 's/.12\t/\t/g' \
    | sed 's/.13\t/\t/g' \
    | sed 's/.14\t/\t/g' \
    | sed 's/.15\t/\t/g' \
    | sed 's/.16\t/\t/g' \
    | sed 's/.17\t/\t/g' \
    | sed 's/.18\t/\t/g' \
    | sed 's/.19\t/\t/g' \
    | awk -F'\t' '{printf("%s\t%s\t%s\t",$1,$3,$4); system("docker service inspect --format \" BYTE[{{ .Spec.TaskTemplate.Resources.Reservations.MemoryBytes }}]\tCPU[{{ .Spec.TaskTemplate.Resources.Reservations.NanoCPUs }}]\" " $3); printf("//////////")}' \
    | sed 's/\/\/\/\/\/\/\/\/\/\//\n/g' \
    | column -t -s $'\t'

如果您的服务未定义内存或 CPU 预留,您将看到

Status: Template parsing error: template: :1:14: executing "" at <.Spec.TaskTemplate.Resources.Reservations.MemoryBytes>: nil pointer evaluating *swarm.Resources.MemoryBytes, Code: 1
,您可以安全地忽略该错误。

这是一些结果:

Status: Template parsing error: template: :1:14: executing "" at <.Spec.TaskTemplate.Resources.Reservations.MemoryBytes>: nil pointer evaluating *swarm.Resources.MemoryBytes, Code: 1
Status: Template parsing error: template: :1:14: executing "" at <.Spec.TaskTemplate.Resources.Reservations.MemoryBytes>: nil pointer evaluating *swarm.Resources.MemoryBytes, Code: 1
Status: Template parsing error: template: :1:14: executing "" at <.Spec.TaskTemplate.Resources.Reservations.MemoryBytes>: nil pointer evaluating *swarm.Resources.MemoryBytes, Code: 1
mfqvby9sl2ak  validation-staf_delete-files-worker                node02.host.com         
jvxr385qjj    validation-staf_lta-product-zip-extraction-worker  node02.host.com         
i3gebgj8pe    validation-staf_lta-sip-generator-worker           node01.host.com         
4rli5dp0xv    validation-staf_rs-access-instance                 node01.host.com          BYTE[536870912]   CPU[250000000]
z50pnst1      validation-staf_rs-access-project                  node01.host.com          BYTE[536870912]   CPU[250000000]
rc9wdr1cs3    validation-staf_rs-admin-instance                  node02.host.com          BYTE[536870912]   CPU[500000000]
wd5kd4869tbj  validation-staf_rs-admin                           node02.host.com          BYTE[805306368]   CPU[500000000]
ihqyvsyr6yuc  validation-staf_rs-authentication                  node02.host.com          BYTE[268435456]   CPU[250000000]
htp0qm3q2z    validation-staf_rs-catalog                         node01.host.com          BYTE[1073741824]  CPU[1000000000]
gjn6vzlnap    validation-staf_rs-config                          node01.host.com          BYTE[134217728]   CPU[250000000]
qnub9gucv1tz  validation-staf_rs-dam                             node02.host.com          BYTE[1073741824]  CPU[1000000000]
of6qnmg2vj5b  validation-staf_rs-dataprovider                    node02.host.com          BYTE[1073741824]  CPU[500000000]
maf2yoijqc    validation-staf_rs-delivery                        node01.host.com          BYTE[536870912]   CPU[500000000]
xnxqub8930lv  validation-staf_rs-elasticsearch                   node02.host.com          BYTE[2097152000]  CPU[500000000]
i35pqgdzr45x  validation-staf_rs-fem                             node01.host.com          BYTE[1073741824]  CPU[1000000000]
qx87kc3i90    validation-staf_rs-front                           node02.host.com          BYTE[67108864]    CPU[100000000]
v0w4ncbmg2lk  validation-staf_rs-front                           node02.host.com          BYTE[67108864]    CPU[100000000]
x816mlmumhaz  validation-staf_rs-front                           node01.host.com          BYTE[67108864]    CPU[100000000]
qhcf5fzw9evv  validation-staf_rs-gateway                         node02.host.com          BYTE[268435456]   CPU[250000000]
1zdmwdremdvv  validation-staf_rs-ingest                          node02.host.com          BYTE[1073741824]  CPU[1000000000]
lfkr420ksopo  validation-staf_rs-kibana                          node01.host.com          BYTE[838860800]   CPU[500000000]

然后我用Excel按节点主机求和并得到这样的信息:

内存必须除以 10^9 才能得到 Gb
并且(纳米)CPU乘以10^9得到CPU

© www.soinside.com 2019 - 2024. All rights reserved.