Привет! В эту пятницу предлагаем разобраться, как Kubernetes управляет сетями — от ядра Linux до сервис-мешей.
Лука Каваллин написал подробную статью о том, что происходит с пакетами и подами в Kubernetes-кластере. В статье — фундаментальные принципы работы сетей в Linux, контейнерах и Kubernetes, а также современные абстракции: Service, Ingress и Gateway API. Автор не обошёл стороной и работу в мультикластерах, и типичные проблемы с сетевой доступностью между подами.
С деталями можно ознакомиться по ссылке.
Желаем приятного чтения! Тем, кто отдыхает — хороших выходных, а тем, кто работает — спокойных дежурных смен!
#devops #kubernetes #networking #pods
Лука Каваллин написал подробную статью о том, что происходит с пакетами и подами в Kubernetes-кластере. В статье — фундаментальные принципы работы сетей в Linux, контейнерах и Kubernetes, а также современные абстракции: Service, Ingress и Gateway API. Автор не обошёл стороной и работу в мультикластерах, и типичные проблемы с сетевой доступностью между подами.
С деталями можно ознакомиться по ссылке.
Желаем приятного чтения! Тем, кто отдыхает — хороших выходных, а тем, кто работает — спокойных дежурных смен!
#devops #kubernetes #networking #pods
🔥7❤2👍1
Как работать с Docker Networking: концепции и применение
👩💻 Автор статьи описывает классический случай из практики с Docker: разработчик запускает контейнер, подключается к нему через
На деле Docker уже делает всю работу – ниже расскажем об основном, подробнее найдете в статье.
👀 Почему проблема возникла?
При установке Docker создает дефолтный сетевой мост (network-bridge), где он выстраивает коммуникацию по временным IP таким образом, что многоконтейнерные приложения становятся неудобными: разработчик не находит сервисы по имени, и каждый перезапуск меняет адреса контейнеров.
⏺ Как решать?
Для устранения проблемы автор предлагает использовать user-defined bridge сети. При создании такой сети Docker автоматически включает внутренний DNS, и контейнеры получают постоянные hostname. Всё, что потребуется от разработчика – запустить контейнеры и подключить их к одной сети, чтобы приложение могло обращаться к базе по имени к БД, независимо от IP и рестарта контейнера.
Контейнеры с user-defined bridge
Контейнер со статическим IP и объявленная сеть
Для выполнения данного решения разработчик создает пользовательскую bridge-сеть с объявленным пулом адресов (subnet) и назначением контейнеру фиксированного IPv4 через ipv4_address. Так, мы обеспечиваем предсказуемую адресацию, полезную для интеграции с системой, которая зависит от IP. При этом сеть сохраняет встроенный DNS Docker, позволяющий обращаться к контейнерам по имени.
🚀 Вывод: для многоконтейнерных приложений не стоит использовать дефолтный bridge. Создавайте собственные сети или пользуйтесь Docker Compose, чтобы надёжно связать сервисы по их именам, а не по временным IP-адресам.
#devops #docker #dockercompose #networking #containers
localhost и…возникает проблема. Веб-сервис развёрнут в одном контейнере, БД — в отдельном. Как настроить сетевое взаимодействие между ними? На деле Docker уже делает всю работу – ниже расскажем об основном, подробнее найдете в статье.
При установке Docker создает дефолтный сетевой мост (network-bridge), где он выстраивает коммуникацию по временным IP таким образом, что многоконтейнерные приложения становятся неудобными: разработчик не находит сервисы по имени, и каждый перезапуск меняет адреса контейнеров.
Для устранения проблемы автор предлагает использовать user-defined bridge сети. При создании такой сети Docker автоматически включает внутренний DNS, и контейнеры получают постоянные hostname. Всё, что потребуется от разработчика – запустить контейнеры и подключить их к одной сети, чтобы приложение могло обращаться к базе по имени к БД, независимо от IP и рестарта контейнера.
Контейнеры с user-defined bridge
services:
app2:
image: nginx
networks:
- mybridge
app3:
image: alpine
command: ["sh", "-c", "while true; do sleep 3600; done"]
networks:
- mybridge
networks:
mybridge:
driver: bridge
Контейнер со статическим IP и объявленная сеть
Для выполнения данного решения разработчик создает пользовательскую bridge-сеть с объявленным пулом адресов (subnet) и назначением контейнеру фиксированного IPv4 через ipv4_address. Так, мы обеспечиваем предсказуемую адресацию, полезную для интеграции с системой, которая зависит от IP. При этом сеть сохраняет встроенный DNS Docker, позволяющий обращаться к контейнерам по имени.
services:
app:
image: nginx
networks:
custom_net:
ipv4_address: 172.20.0.10
networks:
custom_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24
#devops #docker #dockercompose #networking #containers
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤9👍9🔥6