我介绍了集群上的 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)
并且我无法理解哪些资源已经结束以及具体在哪里。有没有办法全面了解资源预留?
我制作了一些脚本来通过服务获取内存和 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]
内存必须除以 10^9 才能得到 Gb
并且(纳米)CPU乘以10^9得到CPU