Я запускаю службу в кластере Swarm благодаря docker stack deploy --with-registry-auth
и этому файлу compose:
version: "3.1"
services:
builder-consumer:
image: us.gcr.io/my-gcloud-project/my/image:123
stop_grace_period: 30m
volumes:
- [...]
environment:
- [...]
deploy:
mode: global
placement:
constraints:
- node.role == worker
secrets:
- [...]
secrets:
[...]
Это нормально работает при развертывании, но когда я позже добавляю рабочий узел в рой, новый рабочий не может вытащить образ, необходимый для выполнения задачи. Системные журналы сообщают об этом:
level = error msg = "Не продолжать извлечение после ошибки: denied: Permission denied for \ 123 \" from request \ "/ v2 / my-gcloud-project / my / image / manifest / 123 \". "
level = info msg = "Перевод \" запрещен: доступ запрещен для \\ "123 \\" из запроса \\ "/ v2 / my-gcloud-project / my / image / manifest / 123 \\". \ "в \" репозиторий us.gcr.io/my-gcloud-project/my/image not found: не существует или нет доступа по запросу \ ""
level = error msg = "ошибка получения изображения" error = "репозиторий us.gcr.io/my-gcloud-project/my/image не найден: не существует или отсутствует доступ по запросу" module = "узел / агент / диспетчер задач" узел .id = ... service.id = ... task.id = ...
level = error msg = "фатальная ошибка задачи" error = "Нет такого изображения: us.gcr.io/my-gcloud-project/my/image:123@sha256: ..." module = "node / agent / taskmanager" node.id = ... service.id = ... task.id = ...
Однако когда я вручную запускаю docker pull
на этом компьютере, он работает нормально, поскольку каждый компьютер в кластере аутентифицируется в моем частном реестре Google благодаря docker login
.
Таким образом, мои вопросы:
- Почему добавленный работник не может извлечь данные из частного реестра?
- Что именно делает
--with-registry-auth
?
Большое спасибо
Примечание: узлы работают под управлением Ubuntu 16.04.2 LTS, а версия Docker:
Server:
Version: 17.04.0-ce
API version: 1.28 (minimum version 1.12)
Go version: go1.7.5
Git commit: 4845c56
Built: Mon Apr 3 18:07:42 2017
OS/Arch: linux/amd64
Experimental: false