DNS-сервер Docker Swarm случайным образом разрешает сбой

#docker #docker-swarm

Вопрос:

У меня есть рой из трех узлов с главным узлом и несколькими запущенными стеками (все они совместно используют сеть). Время от времени приложения выходят из строя, не имея возможности разрешить внутренние DNS-имена. Они просто возвращаются к работе при обновлении службы, которая не смогла разрешить это имя.

Службы используют общую сеть:

 networks:
  traefik-public:
    external: true
 

Используя inspect, созданная сеть показывает:

 [
    {
        "Name": "traefik-public",
        "Id": "hwtew3nwv25f0hnpihozekude",
        "Created": "2021-03-29T21:35:15.564221398 02:00",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.7.0/24",
                    "Gateway": "10.0.7.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0d110ab118c41eef958553d8d9c8970034ee346b481c1ccd520e3a1ed49297fa": {
                "Name": "minion_minion_mysql.1.b6mq8432g5b0srabg73lk833q",
                "EndpointID": "0f363678f9c419475918d83c6b69b065a28b17040b34c696e7b630bebbf30402",
                "MacAddress": "02:42:0a:00:07:79",
                "IPv4Address": "10.0.7.121/24",
                "IPv6Address": ""
            },
            "3b1321643a2c7660a678591f3ed74b7facd338a9ab5c29ede63f188e35e016ba": {
                "Name": "minion_minion_ui.1.9e9cqqbvzuv2rf4e13f7cwbty",
                "EndpointID": "ad58ff109bf74387cef8f6a537a7e8be20dc7c239ea17a888e486c45fd3641cb",
                "MacAddress": "02:42:0a:00:07:77",
                "IPv4Address": "10.0.7.119/24",
                "IPv6Address": ""
            },
            "63590dafe7978133f114a53ed6816d73e9bd18f81778d6f9a169f13ae2bb2462": {
                "Name": "swarmpit_app.1.xalzfuq9mbg7t6k4w0x3bspu7",
                "EndpointID": "b4b0716458b0b77882b4cd5220fef8ab667683c4ffc1f1d9992a0c1845f8041f",
                "MacAddress": "02:42:0a:00:07:f3",
                "IPv4Address": "10.0.7.243/24",
                "IPv6Address": ""
            },
            "91e9ff38ed632d8290a9288026af719486b86f5bf2cd612e39fcbfb5aea13cc3": {
                "Name": "minio_minio1.1.ozqa8faxgp07c6ubon6xq3bwj",
                "EndpointID": "9edacf297796afda9bce22d47a635c0f87d974faeda2ae21112bde3927853949",
                "MacAddress": "02:42:0a:00:07:2b",
                "IPv4Address": "10.0.7.43/24",
                "IPv6Address": ""
            },
            "d0944d673c2a0eda051a16822a0f301973f98efb8ac0d9f140993306e859a562": {
                "Name": "mediadb_mediadb_anc.1.xbq9wnk84cii7bvzjt2968k7a",
                "EndpointID": "9cfc100ccec631b134accc0f3dabf1d28009819318710a028ab9b471b440f3dc",
                "MacAddress": "02:42:0a:00:07:46",
                "IPv4Address": "10.0.7.70/24",
                "IPv6Address": ""
            },
            "e6b84654afede231cd9e52573082c312b3c89d31c3ce34c605be944c3147e1cd": {
                "Name": "traefik_traefik.1.rf0hmr3dyh2l3y6iyt3ysry5t",
                "EndpointID": "2a3066d76c42fdee6871b9fce19917a6ad9e363c11e94bf23f5f1f6fb033e445",
                "MacAddress": "02:42:0a:00:07:f5",
                "IPv4Address": "10.0.7.245/24",
                "IPv6Address": ""
            },
            "f8af470ce571cf7a6b3cf90408eb1ba40721fa930b820dd74d4d1840d49b84d6": {
                "Name": "mediadb_mediadb_amo.1.egtd13w29iqzjm1tl4mebpynd",
                "EndpointID": "9fa4bf4543d1866ff82f95ee3912744fba156a3127dbe0c54b94919eddbadcd1",
                "MacAddress": "02:42:0a:00:07:f7",
                "IPv4Address": "10.0.7.247/24",
                "IPv6Address": ""
            },
            "lb-traefik-public": {
                "Name": "traefik-public-endpoint",
                "EndpointID": "04846d313ae4772083066dd4b0fad7b71538ea496b02624da8317608374c6481",
                "MacAddress": "02:42:0a:00:07:df",
                "IPv4Address": "10.0.7.223/24",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4101"
        },
        "Labels": {},
        "Peers": [
            {
                "Name": "70731e7a2f28",
                "IP": "192.168.133.101"
            },
            {
                "Name": "d4ef9d5dd73f",
                "IP": "192.168.133.102"
            },
            {
                "Name": "62b8966e8aca",
                "IP": "192.168.133.103"
            }
        ]
    }
]
 

Я запускаю docker версии 20.10.5, работающий на коробке Fedora.

Любая идея о том, как исправить эти проблемы или как их отладить, приветствуется.

Ответ №1:

Ваши службы, скорее всего, кэшируют DNS. Лучше всего уменьшить или удалить кэширование DNS для вашей службы.

Комментарии:

1. Службы работают в течение длительного времени, и их IP-адрес не должен меняться, поэтому я не совсем понимаю, в чем может быть проблема. Не могли бы вы дать несколько советов? Спасибо