Сети
Тема дорожной карты · Kubernetes
Сеть Kubernetes определяет, как Pod'ы, Service'ы и внешние клиенты взаимодействуют внутри кластера и между кластерами; в основе лежит фундаментальное правило: каждый Pod получает уникальный маршрутизируемый IP-адрес и может достигать любого другого Pod'а без NAT. Спецификацию Container Network Interface (CNI) реализуют плагины Calico, Cilium, Flannel и Weave Net, программирующие маршруты уровня узла и правила iptables или eBPF для выполнения модели сети Kubernetes. Service'ы предоставляют стабильные виртуальные IP-адреса для наборов Pod'ов: ClusterIP для внутрикластерного трафика, NodePort для внешнего доступа на уровне узла и LoadBalancer для интеграции с облачным провайдером — всё управляется kube-proxy через правила iptables или IPVS. Ingress-контроллеры — ingress-nginx, Traefik или реализации Kubernetes Gateway API — маршрутизируют HTTP/HTTPS-трафик в кластер на основе правил имени хоста и пути, выполняя терминацию TLS с сертификатами, управляемыми Cert-Manager. Разрешение DNS в Kubernetes обеспечивается CoreDNS, преобразующим имена Service в их ClusterIP по шаблону <service>.<namespace>.svc.cluster.local, обеспечивая обнаружение сервисов для всех нагрузок.
Как это работает
Сети в Kubernetes работает через CNI (Container Network Interface) на каждой ноде плюс API-ресурсы (Service, Ingress, NetworkPolicy и т.д.), которые декларирует пользователь. CNI выдаёт pod IPs из cluster-wide CIDR, kube-proxy программирует правила iptables/IPVS для Service ClusterIP, ingress-controller (NGINX, Traefik и др.) обрабатывает внешний HTTP-трафик с TLS termination.
Когда применять
Конфигурируйте Сети рано в setup кластера — сетевые решения имеют широкие последствия и сложно меняются позже. Выбирайте CNI (Calico, Cilium, Flannel) по нуждам policy и масштаба; выбирайте ingress controller под мешок нагрузок; проектируйте Service и DNS-разметку до деплоя реальных нагрузок. Network observability (kube-state-metrics + Prometheus + Cilium Hubble) экономит часы во время incident response.
Типичные ошибки
Сетевые ловушки: дефолт на NodePort (открывает порты на каждом worker — обычно не то, что вам нужно), когда имели в виду ClusterIP + Ingress; забыли NetworkPolicies (всё общается со всем по умолчанию в K8s — опасно в shared-кластерах); ingress controllers без TLS-стратегии; неправильная конфигурация CoreDNS, вызывающая cluster-wide DNS-failures. Тестируйте network policies на staging до production.