Диагностика пересечения подсетей в кластере
В платформе “Штурвал” при создании кластера (клиентского, управления) по умолчанию выделяются:
- подсеть подов: 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 будет пусто.
Ошибка IP-адреса 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 не может выделить подсеть
Kube-controller-manager не может выделить подсеть, при этом в логах нет ошибок о конфликте подсетей.
Пример команды проверки:
kubectl -n kube-system get po -l component=kube-controller-manager -o yaml | grep -E "(cluster-cidr|service-cluster-ip-range)"
В ответе будет пусто.
При обнаружении пересечения диапазонов 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