Диагностика пересечения подсетей в кластере

В платформе “Штурвал” при создании кластера (клиентского, управления) по умолчанию выделяются:

  • подсеть подов: 172.16.0.0/16;
  • подсеть сервисов: 10.96.0.0/12.

Подробнее о подсетях кластера на странице Выделение подсетей.

При конфигурировании кластера с вашими подсетями (не дефолтными), проверьте диапазоны IP-адресов на пересечение (например, с помощью онлайн калькулятора). Кластер с конфигурацией, в которой есть пересечение подсетей, успешно не развернется.

Обнаружить пересечение подсетей после инициализации кластера вы можете по следующим признакам:

  • Узлы кластера не получают PodCIDR;
Пример команды проверки
kubectl get nodes -o custom-columns=NAME:.metadata.name,PODCIDR:.spec.podCIDR

В ответе в PodCIDR будет пусто.

  • В логах cilium-agent ошибка IP-адреса PodCIDR, из-за чего он не инициализируется;
Пример команды проверки
kubectl -n kube-system logs ds/cilium --all-pods --all-containers | grep -i cidr

# Пример вывода лога с ошибкой PodCIDR
level=warning msg="Waiting for k8s node information" error="required IPv4 PodCIDR not available"
  • Kube-controller-manager не может выделить подсеть, при этом в логах нет ошибок о конфликте подсетей.
Пример команды проверки
kubectl -n kube-system logs -l component=kube-controller-manager --all-pods --all-containers | grep -i cidr

В ответе будет пусто.

При обнаружении пересечения диапазонов IP-адресов в подсетях подов, сервисов в инициализированном кластере, создайте заново кластер с корректной конфигурацией подсетей.

Пример конфигурации с пересечением подсетей
podSubnet: 100.0.0.0/18           # 100.0.0.0 — 100.0.63.255
serviceSubnet: 100.0.64.0/16      # 100.0.0.0 — 100.0.255.255 
Примеры корректной конфигурации подсетей
# Пример 1
podSubnet: 100.0.0.0/18           # 100.0.0.0 — 100.0.63.255
serviceSubnet: 100.0.64.0/18      # 100.0.64.0 — 100.0.127.255
# Пример 2 
podSubnet: 100.0.0.0/16           # 100.0.0.0 — 100.0.255.255
serviceSubnet: 100.1.0.0/16       # 100.1.0.0 — 100.1.255.255
# Пример 3
podSubnet: 10.244.0.0/16          # 10.244.0.0 — 10.244.255.255
serviceSubnet: 10.96.0.0/16       # 10.96.0.0 — 10.96.255.255

Пример команды получения конфигурации подсетей
kubectl get cm -n kube-system kubeadm-config -o yaml | grep -i subnet
×