Реплики глобального сервиса Docker Swarm работают только на ведущем узле. Ошибка контейнера: HNS завершился с ошибкой: {объект существует}
Когда я пытаюсь развернуть службу с глобальным режимом, запускается только реплика на ведущем узле, реплика на рабочем узле не запускается. У меня есть два экземпляра Windows Server 2016, работающих на AWS (1 лидер и 1 рабочий узел). Я использую стандартный образ Microsoft / IIS. Оба узла имеют статус "Готов"
PS C:\Users\Administrator> docker version
Client:
Version: 17.06.2-ee-6
API version: 1.30
Go version: go1.8.3
Git commit: e75fdb8
Built: Mon Nov 27 22:46:09 2017
OS/Arch: windows/amd64
Server:
Version: 17.06.2-ee-6
API version: 1.30 (minimum version 1.24)
Go version: go1.8.3
Git commit: e75fdb8
Built: Mon Nov 27 22:55:16 2017
OS/Arch: windows/amd64
Experimental: false
Это команда, которую я выполнил для развертывания службы:
docker service create --name web --mode global --publish 8080:80 microsoft/iis
В глобальном режиме одна реплика процесса должна быть запущена на каждом узле. Однако работает только одна из двух реплик (как видно ниже). Реплика работает на узле "Лидер". Реплика на рабочих узлах не создается.
PS C:\Users\Administrator> docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
we1v56oqqg85 web global 1/2 microsoft/iis:latest *:8080->80/tcp
Я проверил один из контейнеров, которые не запускаются на рабочем узле, и выдается следующая ошибка: Err ":" HNS завершился с ошибкой: {объект существует} Была сделана попытка создать объект, и имя объекта уже существовало. "
PS C:\Users\Administrator> docker inspect udx0u2r79qak
[
{
"ID": "udx0u2r79qakjqj47q54h77im",
"Version": {
"Index": 3097
},
"CreatedAt": "2017-12-20T01:23:16.8231351Z",
"UpdatedAt": "2017-12-20T01:23:22.0121065Z",
"Labels": {},
"Spec": {
"ContainerSpec": {
"Image": "microsoft/iis:latest@sha256:fdabed2b25528610300f61ec4fc62c93858080e943c8170b2eb3b78f3cb34d6f",
"DNSConfig": {}
},
"Resources": {
"Limits": {},
"Reservations": {}
},
"Placement": {
"Platforms": [
{
"Architecture": "amd64",
"OS": "windows"
},
{
"Architecture": "amd64",
"OS": "windows"
}
]
},
"ForceUpdate": 0
},
"ServiceID": "we1v56oqqg85jc97ro3h385a5",
"NodeID": "v9v4k3v3rc1vbfugrj62jtd56",
"Status": {
"Timestamp": "2017-12-20T01:23:17.0172859Z",
"State": "rejected",
"Message": "preparing",
"Err": "HNS failed with error : {Object Exists} An attempt was made to create an object and the object name already existed. ",
"ContainerStatus": {},
"PortStatus": {}
},
"DesiredState": "shutdown",
"NetworksAttachments": [
{
"Network": {
"ID": "ob7ysngbmgnk57r68tpk3miun",
"Version": {
"Index": 2998
},
"CreatedAt": "2017-12-19T21:48:23.5930028Z",
"UpdatedAt": "2017-12-20T01:16:01.771829Z",
"Spec": {
"Name": "ingress",
"Labels": {},
"DriverConfiguration": {},
"Ingress": true,
"IPAMOptions": {
"Driver": {},
"Configs": [
{
"Subnet": "10.255.0.0/16",
"Gateway": "10.255.0.1"
}
]
},
"Scope": "swarm"
},
"DriverState": {
"Name": "overlay",
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4096"
}
},
"IPAMOptions": {
"Driver": {
"Name": "default"
},
"Configs": [
{
"Subnet": "10.255.0.0/16",
"Gateway": "10.255.0.1"
}
]
}
},
"Addresses": [
"10.255.0.19/16"
]
}
]
}
]
Во время моего исследования я наткнулся на это: https://github.com/MicrosoftDocs/Virtualization-Documentation/issues/529 котором говорится об ошибке, но ни одно из предложений не помогло.
Я попытался сбросить HNS C:\ProgramData\Microsoft\Windows\HNS\HNS.data и запустить его снова. Я также попытался запустить скрипт, предлагаемый на этой странице: https://github.com/MicrosoftDocs/Virtualization-Documentation/tree/live/windows-server-container-tools/CleanupContainerHostNetworking
Экземпляры AWS не поддерживают Hyper-V, это может быть частью проблемы, так как это ограничивает сетевые возможности, но это всего лишь слабое подозрение, которое у меня есть.
Как бы я пошел об устранении этой ошибки хост-службы сети (HNS)?