Когда переводил influx базу данных в контейнерное иполнение, для работы с ней из Grafana, то словил неприятную особенность в настройке системы в контексте работы контейнеров с прокинутыми портами.
Проблема: После старта системы нет сетевого доступа к контейнеру. По всем параметрам контейнер запущен и порты указаны корректно, а соединения нет.
unable to connect to docker container
unable to connect to podman container
Соединение висит...
В виду того, что я использую CentOS, вместо привычного всем docker здесь podman, но я думаю суть не меняется, хотя в контексте отсутствия демона, может быть проблема имеет место быть только на системах с podman.
Диагностика.
1. Посмотрим PID процессов systemctl status influxdb.service (это юнит запуска моего контейнера):
PID podman 779
и посмотрим PID NetworkManager.service
$ systemctl status NetworkManager.service
Уже подозрительно, ведь podman использует свою внутреннюю сетку для общения хостовой системы с контейнерами
2. Посмотрим, что там с сетью
$ip s a
интерфейс cni-podman0 с сетью 10.88.0.1/16
Самое интересное для меня было, то что сервис контейнера infuxdb (podman, docker) нормально доступен если на уже загруженной системы выполнить рестарт контейнера!
И тут я решил проверить, а что там в дампах до рестарта когда контейнер не доступен и что после рестарта. И вот что увидел:
После перезагрузки системы, до рестарта контейнера, контейнер недоступен:
grafana настроена на общение с localhost, но так она до контейнера не доберется...
Рестартую контейнер и вот что в дампе:
Обмен пошел по внутренней сетке podman, как положенно.
Решение.
Исходя из этого всего делаю вывод, что сервис influxdb грузился слишком рано, не давая стеку tcp/ip или networkmanager загрузится. Учтем этот момент в юнит файле:
/etc/systemd/system/influxdb.service
[Unit]
Description=Influxdb Podman container
After=NetworkManager.service
[Service]
Restart=always
ExecStart=/usr/bin/podman start -a influxdocker
ExecStop=/usr/bin/podman stop -t 10 influxdocker
[Install]
WantedBy=multi-user.target
Теперь контейнер стартует гарантирована после старта сетевого интерфейса podman и корректно работает даже при рестарте системы.
Комментариев нет:
Отправить комментарий