Bug 45878 - Не использует опции Docker: DOCKER_NETWORK_OPTIONS → OPTIONS
Summary: Не использует опции Docker: DOCKER_NETWORK_OPTIONS → OPTIONS
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: flannel (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-04-16 16:27 MSK by Evgeny Shesteperov
Modified: 2023-04-17 22:51 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeny Shesteperov 2023-04-16 16:27:39 MSK
Описание проблемы

Пытаюсь настроить Docker с использованием Flannel.

Пакет предоставляет файл
/lib/systemd/system/docker.service.d/flannel.conf:

    # cat /lib/systemd/system/docker.service.d/flannel.conf
    [Service]
    EnvironmentFile=-/run/flannel/docker

    # cat /run/flannel/docker
    DOCKER_OPT_BIP="--bip=172.16.53.1/24"
    DOCKER_OPT_IPMASQ="--ip-masq=true"
    DOCKER_OPT_MTU="--mtu=1472"
    DOCKER_NETWORK_OPTIONS=" --bip=172.16.53.1/24 --ip-masq=true --mtu=1472"

Но в сервисе Docker нет использования опций выше:

    # systemctl cat docker | grep DOCKER_NETWORK_OPTIONS
    # grep DOCKER_NETWORK_OPTIONS /etc/sysconfig/docker
    # grep DOCKER_NETWORK_OPTIONS /etc/sysconfig/docker-storage

Вместо этого он использует OPTIONS:

    # systemctl cat docker | grep OPTIONS
              $OPTIONS \
              $DOCKER_STORAGE_OPTIONS

    # grep OPTIONS /etc/sysconfig/docker
    OPTIONS=""

Версия

-   flannel-0.21.4-alt1

Дистрибутивы

-   p10-server-10.1-x86-64, обновленный до Sisyphus

Шаги воспроизведения

    # apt-get install -y flannel etcd docker-engine
    # systemctl enable --now etcd && sleep 10; systemctl status etcd --no-pager -l
    # etcdctl put /coreos.com/network/config '{"Network": "172.16.0.0/12"}'
    # systemctl enable --now flanneld && sleep 5; systemctl status flanneld
    # systemctl enable --now docker && sleep 5; systemctl status docker --no-pager -l
    # ip addr show flannel0
    # ip addr show docker0

Ожидаемый результат: адрес интерфейса берётся из настроек Flannel
(/run/flannel/subnet.env, FLANNEL_SUBNET=172.16.53.1/24)

-   flannel0: 172.16.53.0/32
-   docker0: 172.16.53.1/24

Фактический результат: адрес интерфейса не берётся из настроек Flannel:

-   flannel0: 172.16.53.0/32
-   docker0: 172.17.0.1/16

Дополнительно. Решается следующим образом:

    # sed -i 's|DOCKER_NETWORK_OPTIONS|OPTIONS|g' /lib/systemd/system/flanneld.service
    # systemctl daemon-reload
    # systemctl restart flanneld.service && sleep 5; systemctl status flanneld.service
    # systemctl restart docker.service && sleep 5; systemctl status docker.service
Comment 1 Evgeny Shesteperov 2023-04-16 16:35:32 MSK
Это похоже на что-то такое https://github.com/kubernetes-sigs/kubespray/issues/748
Comment 2 Alexey Shabalin 2023-04-17 21:40:28 MSK
Решение совсем неправильное предложено.
Эти опции надо передать сервису dockerd.service, а flanneld.service править не надо.
Отправили в сизиф пакет docker-engine с исправлением.
Если есть есть возможность, перепроверьте пожалуйста.
Comment 3 Repository Robot 2023-04-17 22:51:26 MSK
docker-engine-23.0.3-alt2 -> sisyphus:

 Mon Apr 17 2023 Alexey Shabalin <shaba@altlinux> 23.0.3-alt2
 - fix integration with flannel (ALT#45878),
   read DOCKER_NETWORK_OPTIONS from /run/flannel/docker