Я пытаюсь понять немного больше о сетях Kubernetes. Вот почему я развернул кластер в облаке Google и проверил сеть: кластеры контейнеров gcloud описывают cluster0 | grep -i cidr
clusterIpv4Cidr: 10.20.0.0/14 # --cluster-cidr
nodeIpv4CidrSize: 24
servicesIpv4Cidr: 10.23.240.0/20 # --service-cluster-ip-range
Итак, первый - для IP-адресов подов:
First IP: 10.20.0.1
Last IP: 10.23.255.254
обслуживание
First IP: 10.23.240.1
First IP: 10.23.255.254
Всегда ли так, что диапазон pod содержит диапазон IP-адресов службы? Используют ли они один и тот же сетевой уровень?
Это долгая история, как Сеть Kubernetes сделан...
Kubernetes предполагает, что модули могут взаимодействовать с другими модулями независимо от того, на каком хосте они находятся. Каждый модуль получает свой собственный IP-адрес, поэтому вам не нужно явно создавать ссылки между модулями, и вам почти никогда не придется иметь дело с сопоставлением портов контейнера с портами хоста. Это создает чистую, обратно совместимую модель, в которой модули можно рассматривать во многом как виртуальные машины или физические хосты с точки зрения распределения портов, именования, обнаружения служб, балансировки нагрузки, конфигурации приложений и миграции.
Kubernetes использует как частные, так и общедоступные IP-адреса. Публичные IP-адреса на данный момент не упоминаются.
Kubernetes использует частный пул адресов для обеспечения связи внутри кластера. У каждого модуля и сервиса есть частный IP-адрес. Сервисы в Kubernetes виртуальные - они создаются NAT, а iptables создает перенаправление портов от адресуемой службы к подам.
Основные правила общения внутри кластера:
По поводу вашего вопроса: официальный Сеть Kubernetes в документации указано:
--service-cluster-ip-range ipNet - A CIDR notation IP range from which to assign service cluster IPs. This must not overlap with any IP ranges assigned to nodes for pods.
Таким образом, не рекомендуется иметь IP-адрес службы в том же диапазоне, который используется модулями.
Очень рекомендую посмотреть видео о сети Kubernetes или глядя на иллюстрированное руководство.
clusterIpv4Cidr: 10.20.0.0/14 # IP subnet which is configured on all pods.
nodeIpv4CidrSize: 24 # CidrSize which is configured on each node
servicesIpv4Cidr: 10.23.240.0/20 # IP subnet which is configured for Services
С точки зрения модулей, все остальные модули и службы находятся в одной подсети, поэтому они доступны напрямую. Это означает, что конфигурация шлюза и маршрутизация не задействованы. Кстати, если serviceIpv4Cider находится вне диапазона clusterIPv4Cider, требуется настройка шлюза и маршрутизация. Это что-то другое.
Итак, я просто предполагаю, что в приведенном ниже предупреждении говорится, что service-cluster-ip-range не должен использоваться для подов, но это нормально, что они перекрываются с диапазоном clusterIPv4Cider. Это предназначено.
«Это не должно пересекаться ни с какими диапазонами IP-адресов, назначенными узлам для модулей».