Команда VK Cloud перевела статью об основных принципах работы сети в Kubernetes: как кластер принимает и отправляет пакеты начиная с исходного веб-запроса и до размещения приложения в контейнере.
Требования к сети в Kubernetes
Сначала давайте проясним требования к сети Kubernetes:
- Под в кластере должен свободно взаимодействовать с любым другим подом без использования Network Address Translation (NAT).
- Любая программа, работающая на узле кластера, должна взаимодействовать с любым подом на том же узле без использования NAT.
- У каждого пода есть собственный IP-адрес (IP-per-Pod), и любой другой под может обратиться к нему по этому адресу.
Эти требования и ограничения описывают свойства сети кластера в целом и вынуждают отвечать на следующие вопросы:
- Как убедиться, что контейнеры в одном и том же поде ведут себя как на одном хосте?
- Может ли под обращаться к другим подам в кластере?
- Может ли под обращаться к службам? Обрабатывают ли службы запросы о балансировке нагрузки?
- Может ли под получать трафик извне кластера?
В этой статье мы рассмотрим первые три пункта, начиная со взаимодействия на уровне подов и контейнеров.