делать.
Есть self-hosted k8s установленный ручками через kubeadm. Аж целых две ноды сейчас. На k8s-нодах два интерфейса. Первый - дефолтный, через него сделан defaul-route. Второй - для внутренней сетки. Через него обе ноды и связаны. В kubelet через extra-args выставлен —node-ip второго интерфейса. Пытаемся поверх этого запустить flannel. И flannel всегда берёт в качестве public-ip адрес первого интерфейса, от чего не может ходить друг к другу.
Беглое гугление подсказало про:
flannel.alpha.coreos.com/public-ip аннотацию ноды и про flannel.alpha.coreos.com/public-ip-overwrite. Всё равно flannel берёт не тот ip. Подозреваю, что вообще он сначала пытается сходить в kube-api-server, оттуда вытянуть аннотации, но не может, т.к. уже идёт неправильно
про опцию --public-ip у flannel и про опцию с выбором инерфейса.
Есть вопросы. Есть ли какая-то возможность пропихнуть node-ip в --public-ip? (spec.NodeName можно в env впихнуть, а ip что-то нет. Может, где-то недоглядел). Либо как можно накофигурить использование фланнелом интерфейса, если flannel разворачивается через daemonset, а когда количество нод будут расти, то имена интерфейсов везде разные будут.
вариант не использовать flannel тоже рассматривается, но нужно что-то, что точно заработает в примерно таком конфиге
- command: - /opt/bin/flanneld - --ip-masq - --kube-subnet-mgr - --iface-regex=172\.21\.0\.\d{1,3} указать фланелю на интерфейс с какими ip вешаться
Обсуждают сегодня