Как исправить ошибку Docker «Сбой hnsCall в Win32: адаптер не найден» при развертывании службы? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь запустить рой из четырех узлов с моего хост-компьютера, где мой компьютер является менеджером, а три виртуальные машины Hyper-V - в качестве рабочих узлов.Я пытаюсь запустить статическую веб-страницу в качестве службы на всех узлах, но продолжаю получать ошибку hnsCall failed in Win32: An adapter was not found на моем хост-компьютере и No such image от виртуальных машин (пытаюсь извлечь образ службы из частного реестра).Это происходит при развертывании стека или использовании service create.Однако я могу запустить статическую страницу с помощью экземпляра контейнера, и она отлично работает.

Я следовал этому руководству , чтобы настроить и создать свои виртуальные машины, что, как я подозреваю, и является причиной возникновения моей проблемы.Виртуальный коммутатор, который я создал с помощью диспетчера виртуальных коммутаторов HyperV с именем thevswitch, является внешним и установлен на соответствующем адаптере.Я инициализировал рой, используя IPv4 моего хост-компьютера под thevswitch для флага --advertise-addr, и успешно подключил виртуальные машины в качестве рабочих узлов к этому IP, используя драйвер.Docker, похоже, не видит виртуальный коммутатор, который я создал, независимо от того.

PS C:\Docker\swarm-test> docker version
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:31 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.24)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:28:48 2019
  OS/Arch:          windows/amd64
  Experimental:     true
PS C:\Docker\swarm-test> docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3f4030aafa56        Default Switch      ics                 local
m1c2nzylf14x        ingress             overlay             swarm
168954d1275d        nat                 nat                 local
be3f092c32cb        none                null                local
PS C:\Docker\swarm-test> docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
4xiljuldm32avsxwo8o513uv5 *   ATLL000597          Ready               Active              Leader              18.09.2
w2ftfwt4oz00keswt6ztmq9ec     vm1                 Ready               Active                                  18.09.6
82vpc65ezml87sxhhx9mlvszk     vm2                 Ready               Active                                  18.09.6
lej0a3gabyi3qfta1f4le1f3s     vm3                 Ready               Active                                  18.09.6
PS C:\Docker\swarm-test> docker-machine ls
NAME   ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER     ERRORS
vm1    -        hyperv   Running   tcp://10.195.12.68:2376           v18.09.6
vm2    -        hyperv   Running   tcp://10.195.12.69:2376           v18.09.6
vm3    -        hyperv   Running   tcp://10.195.12.75:2376           v18.09.6

Host ipconfig:

PS C:\Docker\swarm-test> ipconfig

Windows IP Configuration


Ethernet adapter Ethernet 3:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter vEthernet (thevswitch):

   Connection-specific DNS Suffix  . : Int.CSDental.com
   Link-local IPv6 Address . . . . . : fe80::e90f:a37:5f33:87de%29
   IPv4 Address. . . . . . . . . . . : 10.195.12.87
   Subnet Mask . . . . . . . . . . . : 255.255.252.0
   Default Gateway . . . . . . . . . : 10.195.12.1

Wireless LAN adapter Wi-Fi:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 9:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Wireless LAN adapter Local Area Connection* 10:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Ethernet 4:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Ethernet adapter vEthernet (Default Switch) 2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::5de7:19c9:a701:b06a%65
   IPv4 Address. . . . . . . . . . . : 192.168.55.33
   Subnet Mask . . . . . . . . . . . : 255.255.255.240
   Default Gateway . . . . . . . . . :

Ethernet adapter vEthernet (nat) 2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::f173:8:f6e1:123c%73
   IPv4 Address. . . . . . . . . . . : 172.26.192.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :

Хост-машина (менеджер):

PS C:\Docker\swarm-test> docker inspect ATLL000597
[
    {
        "ID": "4xiljuldm32avsxwo8o513uv5",
        "Version": {
            "Index": 23501
        },
        "CreatedAt": "2019-05-29T16:41:17.1544224Z",
        "UpdatedAt": "2019-05-29T17:35:40.2375377Z",
        "Spec": {
            "Labels": {},
            "Role": "manager",
            "Availability": "active"
        },
        "Description": {
            "Hostname": "ATLL000597",
            "Platform": {
                "Architecture": "x86_64",
                "OS": "windows"
            },
            "Resources": {
                "NanoCPUs": 8000000000,
                "MemoryBytes": 16971313152
            },
            "Engine": {
                "EngineVersion": "18.09.2",
                "Plugins": [
                    {
                        "Type": "Log",
                        "Name": "awslogs"
                    },
                    {
                        "Type": "Log",
                        "Name": "etwlogs"
                    },
                    {
                        "Type": "Log",
                        "Name": "fluentd"
                    },
                    {
                        "Type": "Log",
                        "Name": "gelf"
                    },
                    {
                        "Type": "Log",
                        "Name": "json-file"
                    },
                    {
                        "Type": "Log",
                        "Name": "local"
                    },
                    {
                        "Type": "Log",
                        "Name": "logentries"
                    },
                    {
                        "Type": "Log",
                        "Name": "splunk"
                    },
                    {
                        "Type": "Log",
                        "Name": "syslog"
                    },
                    {
                        "Type": "Network",
                        "Name": "ics"
                    },
                    {
                        "Type": "Network",
                        "Name": "l2bridge"
                    },
                    {
                        "Type": "Network",
                        "Name": "l2tunnel"
                    },
                    {
                        "Type": "Network",
                        "Name": "nat"
                    },
                    {
                        "Type": "Network",
                        "Name": "null"
                    },
                    {
                        "Type": "Network",
                        "Name": "overlay"
                    },
                    {
                        "Type": "Network",
                        "Name": "transparent"
                    },
                    {
                        "Type": "Volume",
                        "Name": "local"
                    }
                ]
            },
            "TLSInfo": {
                "TrustRoot": "-----BEGIN CERTIFICATE-----\nMIIBazCCARCgAwIBAgIUew6Ov5cRAAXjR61XOWyX0l3evSYwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTkwNTI5MTYzNjAwWhcNMzkwNTI0MTYz\nNjAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABHiJekXiApSizb5ctC5JJ0r1EBXvuN5iXMSe3VM/d9rvnjzFozY7VRgALhHb\nAP3wxnnsVPX29JC2ZUlv6//U0LSjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBRUFwLEeWDMyZMC1QLrz1xhAyapuDAKBggqhkjO\nPQQDAgNJADBGAiEAqgyoSTtQxJ9RHnW2Zk7KsJthXSaoreN59vw+Ozp7XFACIQDB\n+tmtX3nGoeAf/np9j8oqvMNqApiPcxya8ToNSg/Otg==\n-----END CERTIFICATE-----\n",
                "CertIssuerSubject": "MBMxETAPBgNVBAMTCHN3YXJtLWNh",
                "CertIssuerPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeIl6ReIClKLNvly0LkknSvUQFe+43mJcxJ7dUz932u+ePMWjNjtVGAAuEdsA/fDGeexU9fb0kLZlSW/r/9TQtA=="
            }
        },
        "Status": {
            "State": "ready",
            "Addr": "10.195.12.87"
        },
        "ManagerStatus": {
            "Leader": true,
            "Reachability": "reachable",
            "Addr": "10.195.12.87:2377"
        }
    }
]

Только одна из виртуальных машин:

PS C:\Docker\swarm-test> docker-machine inspect vm1
{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "10.195.12.68",
        "MachineName": "vm1",
        "SSHUser": "docker",
        "SSHPort": 22,
        "SSHKeyPath": "C:\\Users\\19030430\\.docker\\machine\\machines\\vm1\\id_rsa",
        "StorePath": "C:\\Users\\19030430\\.docker\\machine",
        "SwarmMaster": false,
        "SwarmHost": "tcp://0.0.0.0:3376",
        "SwarmDiscovery": "",
        "Boot2DockerURL": "",
        "VSwitch": "thevswitch",
        "DiskSize": 20000,
        "MemSize": 1024,
        "CPU": 1,
        "MacAddr": "",
        "VLanID": 0,
        "DisableDynamicMemory": false
    },
    "DriverName": "hyperv",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": [],
            "Dns": null,
            "GraphDir": "",
            "Env": [],
            "Ipv6": false,
            "InsecureRegistry": [],
            "Labels": [],
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsVerify": true,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Agent": false,
            "Master": false,
            "Host": "tcp://0.0.0.0:3376",
            "Image": "swarm:latest",
            "Strategy": "spread",
            "Heartbeat": 0,
            "Overcommit": 0,
            "ArbitraryFlags": [],
            "ArbitraryJoinFlags": [],
            "Env": null,
            "IsExperimental": false
        },
        "AuthOptions": {
            "CertDir": "C:\\Users\\19030430\\.docker\\machine\\certs",
            "CaCertPath": "C:\\Users\\19030430\\.docker\\machine\\certs\\ca.pem",
            "CaPrivateKeyPath": "C:\\Users\\19030430\\.docker\\machine\\certs\\ca-key.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "C:\\Users\\19030430\\.docker\\machine\\machines\\vm1\\server.pem",
            "ServerKeyPath": "C:\\Users\\19030430\\.docker\\machine\\machines\\vm1\\server-key.pem",
            "ClientKeyPath": "C:\\Users\\19030430\\.docker\\machine\\certs\\key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "ClientCertPath": "C:\\Users\\19030430\\.docker\\machine\\certs\\cert.pem",
            "ServerCertSANs": [],
            "StorePath": "C:\\Users\\19030430\\.docker\\machine\\machines\\vm1"
        }
    },
    "Name": "vm1"
}
PS C:\Docker\swarm-test> get-hnsnetwork


ActivityId             : F5EEF28D-7A66-410E-8F06-85417531C225
AdditionalParams       :
CurrentEndpointCount   : 0
Extensions             : {@{Id=E7C3B2F0-F3C5-48DF-AF2B-10FED6D72E7A; IsEnabled=False; Name=Microsoft Windows Filtering Platform}, @{Id=E9B59CFA-2BE1-4B21-828F-B6FBDBDDC017; IsEnabled=False; Name=Microsoft Azure VFP Switch Extension},
                         @{Id=EA24CD6C-D17A-4348-9190-09F0D5BE83DD; IsEnabled=True; Name=Microsoft NDIS Capture}}
Flags                  : 3
GatewayMac             : 00-15-5D-0C-C5-08
Health                 : @{AddressNotificationMissedCount=0; AddressNotificationSequenceNumber=5; InterfaceNotificationMissedCount=0; InterfaceNotificationSequenceNumber=0; LastErrorCode=0; LastUpdateTime=132036146558887527;
                         RouteNotificationMissedCount=0; RouteNotificationSequenceNumber=0}
ID                     : C08CB7B8-9B3C-408E-8E30-5E16A3AEB444
IPv6                   : False
IsolateSwitch          : True
LayeredOn              : 77DEBE34-C5AF-43EF-86C1-92F7CF9CD8EF
MacPools               : {@{EndMacAddress=00-15-5D-0C-CF-FF; StartMacAddress=00-15-5D-0C-C0-00}}
MaxConcurrentEndpoints : 0
Name                   : Default Switch
NatName                : ICS85DBD8A9-EEA6-4691-9FE4-901A4445B714
Policies               : {}
Resources              : @{AdditionalParams=; AllocationOrder=2; Allocators=System.Object[]; Health=; ID=F5EEF28D-7A66-410E-8F06-85417531C225; PortOperationTime=0; State=1; SwitchOperationTime=0; VfpOperationTime=0;
                         parentId=D841CDEC-707C-421C-BC2C-155F3F378A40}
State                  : 1
Subnets                : {@{AdditionalParams=; AddressPrefix=192.168.55.32/28; GatewayAddress=192.168.55.33; Health=; ID=F7DEEC46-10E5-448D-B890-D78D93E6D560; Policies=System.Object[]; State=0}}
SwitchGuid             : C08CB7B8-9B3C-408E-8E30-5E16A3AEB444
TotalEndpoints         : 0
Type                   : ICS
Version                : 38654705666

ActivityId             : 6589B251-E629-4942-847F-DEE47853D5B6
AdditionalParams       :
CurrentEndpointCount   : 0
Extensions             : {@{Id=E7C3B2F0-F3C5-48DF-AF2B-10FED6D72E7A; IsEnabled=False; Name=Microsoft Windows Filtering Platform}, @{Id=E9B59CFA-2BE1-4B21-828F-B6FBDBDDC017; IsEnabled=False; Name=Microsoft Azure VFP Switch Extension},
                         @{Id=EA24CD6C-D17A-4348-9190-09F0D5BE83DD; IsEnabled=True; Name=Microsoft NDIS Capture}}
Flags                  : 0
Health                 : @{LastErrorCode=0; LastUpdateTime=132036158099689062}
ID                     : 07E7CCC7-187E-457B-A577-1EAFB16E9731
IPv6                   : False
LayeredOn              : 9108D862-FE98-4FE4-8004-2C210074F964
MacPools               : {@{EndMacAddress=00-15-5D-B0-CF-FF; StartMacAddress=00-15-5D-B0-C0-00}}
MaxConcurrentEndpoints : 0
Name                   : thevswitch
Policies               : {}
Resources              : @{AdditionalParams=; AllocationOrder=0; Health=; ID=6589B251-E629-4942-847F-DEE47853D5B6; PortOperationTime=0; State=1; SwitchOperationTime=0; VfpOperationTime=0; parentId=CAEB6648-F50F-4C19-95D8-038C4E3B7346}
State                  : 1
TotalEndpoints         : 0
Type                   : Transparent
Version                : 38654705666

ActivityId             : 7F5DFDB2-6E7E-497E-A33E-5BE5655DA57E
AdditionalParams       :
CurrentEndpointCount   : 0
Extensions             : {@{Id=E7C3B2F0-F3C5-48DF-AF2B-10FED6D72E7A; IsEnabled=False; Name=Microsoft Windows Filtering Platform}, @{Id=E9B59CFA-2BE1-4B21-828F-B6FBDBDDC017; IsEnabled=False; Name=Microsoft Azure VFP Switch Extension},
                         @{Id=EA24CD6C-D17A-4348-9190-09F0D5BE83DD; IsEnabled=True; Name=Microsoft NDIS Capture}}
Flags                  : 0
Health                 : @{AddressNotificationMissedCount=0; AddressNotificationSequenceNumber=0; InterfaceNotificationMissedCount=0; InterfaceNotificationSequenceNumber=0; LastErrorCode=0; LastUpdateTime=132036143540255829;
                         RouteNotificationMissedCount=0; RouteNotificationSequenceNumber=0}
ID                     : B242C9F9-89C0-4867-B14A-8A175A5D0DDB
IPv6                   : False
LayeredOn              : 80208A97-455B-4273-B95A-1E73666C9C52
MacPools               : {@{EndMacAddress=00-15-5D-D9-8F-FF; StartMacAddress=00-15-5D-D9-80-00}}
MaxConcurrentEndpoints : 0
Name                   : nat
NatName                : ICSBC687A8B-1FC0-4F10-A614-68EA68A3E2EF
Policies               : {}
Resources              : @{AdditionalParams=; AllocationOrder=2; Allocators=System.Object[]; Health=; ID=7F5DFDB2-6E7E-497E-A33E-5BE5655DA57E; PortOperationTime=0; State=1; SwitchOperationTime=0; VfpOperationTime=0;
                         parentId=7507FF2E-F59E-4B2C-8194-DDA947C5B5AE}
State                  : 1
Subnets                : {@{AdditionalParams=; AddressPrefix=172.26.192.0/20; GatewayAddress=172.26.192.1; Health=; ID=B735AB8E-A2F9-4134-84BC-598A492F976A; Policies=System.Object[]; State=0}}
TotalEndpoints         : 0
Type                   : nat
Version                : 38654705666

Dockerfile:

version: "3"
services:
        Hello:
                image: registry.local:5000/wintest/swarm-test:2.0.0
                ports:
                        -"8888:80"
                deploy:
                        mode: global
PS C:\Docker\swarm-test> docker service ps test_Hello --no-trunc
ID                          NAME                                   IMAGE                                          NODE                DESIRED STATE       CURRENT STATE                     ERROR                                                               PORTS
27iw2nyi610g971bk0meeuf1h   test_Hello.82vpc65ezml87sxhhx9mlvszk   registry.local:5000/wintest/swarm-test:2.0.0   vm2                 Ready               Assigned less than a second ago                                                    
tw7ren3nakf0ukigjsqzrnkmf   test_Hello.w2ftfwt4oz00keswt6ztmq9ec   registry.local:5000/wintest/swarm-test:2.0.0   vm1                 Ready               Rejected less than a second ago   "No such image: registry.local:5000/wintest/swarm-test:2.0.0"
xmdrc9102s4qjtstakrvh3msx   test_Hello.4xiljuldm32avsxwo8o513uv5   registry.local:5000/wintest/swarm-test:2.0.0   ATLL000597          Ready               Rejected 1 second ago             "hnsCall failed in Win32: An adapter was not found. (0x803b0006)"
ezh203iv1ntj3w18wgqzdjceo   test_Hello.lej0a3gabyi3qfta1f4le1f3s   registry.local:5000/wintest/swarm-test:2.0.0   vm3                 Running             Rejected 4 seconds ago            "No such image: registry.local:5000/wintest/swarm-test:2.0.0"
n3n4nfevoadawuqlusfbspg34   test_Hello.82vpc65ezml87sxhhx9mlvszk   registry.local:5000/wintest/swarm-test:2.0.0   vm2                 Shutdown            Rejected 4 seconds ago            "No such image: registry.local:5000/wintest/swarm-test:2.0.0"
t46s5etkwgumoa6jp22au3nq5   test_Hello.w2ftfwt4oz00keswt6ztmq9ec   registry.local:5000/wintest/swarm-test:2.0.0   vm1                 Shutdown            Rejected 5 seconds ago            "No such image: registry.local:5000/wintest/swarm-test:2.0.0"
rxwqbg2wndz4cdxw71k1d5ore   test_Hello.4xiljuldm32avsxwo8o513uv5   registry.local:5000/wintest/swarm-test:2.0.0   ATLL000597          Shutdown            Rejected 6 seconds ago            "hnsCall failed in Win32: An adapter was not found. (0x803b0006)"
as92ats2qur5sr6e8lxflz71w   test_Hello.lej0a3gabyi3qfta1f4le1f3s   registry.local:5000/wintest/swarm-test:2.0.0   vm3                 Shutdown            Rejected 9 seconds ago            "No such image: registry.local:5000/wintest/swarm-test:2.0.0"

Что привлекает мое внимание, так это проверка виртуальных машинкажется, показывает, что они не являются частью роя, но они есть?

PS C:\Docker\swarm-test> docker-machine ssh vm1 "docker swarm init"
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
exit status 1

Кроме того, тот факт, что проверка Get-HNSNetwork показывает, что thevswitch является прозрачной сетью.Насколько я понимаю, способ, которым я создал сеть, должен был показывать как наложение (для драйвера), так и внешнее.В предыдущей попытке выполнить эти задачи у меня был другой vswitch, который я создал точно таким же идентичным способом, но тот оказался закрытым.Я не понимаю, как выполнение одних и тех же шагов может привести к двум разным и неверным результатам.

Вот также скриншот моего Virtual Switch Manager: V-Switch Manager

Я прочитал все виды документации от Docker и Windows относительно сетей, в частности оверлейных сетейи я чувствую себя довольно растерянным.Насколько я понимаю, это должно работать, и все ошибки, которые я обнаружил в Интернете, указывают на одни и те же документы.Я не видел ничего такого, что заставило бы меня думать, что этого нельзя сделать.

Любая помощь будет принята с благодарностью.

ПРИМЕЧАНИЕ: В первый раз, используя Docker, пытаетесь собрать успешный PoC.Я знаю, что на мой docker-compose.yml не очень приятно смотреть.Я потратил больше времени на изучение сетей с помощью докера, чем смог изучить лучшие практики.

...