LINUX.ORG.RU

Docker swarm, overlay network и gpu

 , ,


0

1

Привет. Есть swarm из двух нод - менеджерной и воркера. Создал overlay network по имени myinternal. Настроил докер для работы с GPU, тестовый образ nvidia/cuda:10.0-base отрабатывает штатно, контейнер видит gpu. Хочу развернуть контейнер с gpu и присоединить его к своей network:

docker service create --with-registry-auth --generic-resource "gpu=1" --name=test --constraint=node.id==50pbc33tbompfiiu1n61khyc5 --network=myinternal busybox:latest sh -c "while true; do echo Hello; sleep 2; done"

Не получается, докер говорит сначала node is missing network attachments, ip addresses may be exhausted, затем assigned node no longer meets constraints, примерно так:

ID                          NAME                IMAGE                                                                                    NODE                DESIRED STATE       CURRENT STATE             ERROR                                                                  PORTS
yonzgcjx8793nxf2jbuvpdukq    \_ test.1     busybox:latest@sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a   node-4             Shutdown            Rejected 19 seconds ago   "assigned node no longer meets constraints"
3a3wrspme0m5ureu69dd9wpju    \_ test.1     busybox:latest@sha256:d366a4665ab44f0648d7a00ae3fae139d55e32f9712c67accd604bb55df9d05a   node-4             Shutdown            Rejected 19 seconds ago   "node is missing network attachments, ip addresses may be exhausted"

При этом если убрать или --network или --generic-resource, то все прекрасно работает (без сети или без гпу, соответственно).

Подробности сети:

docker network inspect e0fs28o8t7pq
[
    {
        "Name": "myinternal",
        "Id": "e0fs28o8t7pqgc5p2jusa662g",
        "Created": "2020-10-08T06:46:38.851827933Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.9.8.1/16",
                    "Gateway": "10.9.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4096"
        },
        "Labels": null
    }
]

Что я делаю не так? (про kube просьба не писать)


Ответ на: комментарий от anonymous

Не угадал. Переделал под attachable - ничего не изменилось, не создает сервис. Вот сеть:

docker network inspect w4m5c3yqas7y
[
    {
        "Name": "mminternal",
        "Id": "w4m5c3yqas7yzg2qenv4tqpkv",
        "Created": "2020-10-09T05:42:32.21285955Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.9.8.1/16",
                    "Gateway": "10.9.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4098"
        },
        "Labels": null
    }
]

leet27
() автор топика
Ответ на: комментарий от leet27

При создании сети попробуй добавить

–label com.docker.compose.network=«test_net»
–label com.docker.compose.project=«test_proj»
–label com.docker.compose.version=«3.7»

были проблемы при подключении к сети без этих опций

anonymous
()
Ответ на: комментарий от leet27

М б, но у меня на swarm кластере при создании сети без этих опций сервисы не могли подключиться к сети

anonymous
()
Ответ на: комментарий от st4l1k

Сделал, из интересного вижу только

Oct 09 12:08:36 ip-<скип> dockerd[14534]: time="2020-10-09T12:08:36.091769987Z" level=debug msg="Calling GET /v1.40/networks/myinternal?scope=swarm"
Oct 09 12:08:36 ip-<скип> dockerd[14534]: time="2020-10-09T12:08:36.092726143Z" level=debug msg="error handling rpc" error="rpc error: code = NotFound desc = network myinternal not found" rpc=/docker.swarmkit.v1.Control/GetNetwork

При этом в network ls она есть и portainer ее видит.

leet27
() автор топика
Ответ на: комментарий от anonymous

А поясни за test_net и test_proj. Первое, видимо, название моей сетки (myinternal), а второе это что?

leet27
() автор топика

Правильный ответ - запускать без --generic-resource. При этом сохраняется доступ к gpu (при условии настроенного nvidia-docker-runtime) и к сети. Скорее всего это связано с неполной поддержкой swarm в рантайме nvidia’и.

leet27
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.