В k8s1.16 при использовании kubenet и двойного стека, как настроить ping cbr0 gw на другом узле?

Я установил кластер kubernetes v1.16 с двумя узлами и включил «двойной стек IPv4/IPv6», следуя это руководство. Для «двойного стека» я установил --network-plugin=kubenet на kubelet.

Теперь модули имеют адреса ipv4 и ipv6, а каждый узел имеет gw cbr0 с адресами ipv4 и ipv6. Но когда я пингую с узла на cbr0 gw другого узла, это не удается.

Я попытался вручную добавить маршрут следующим образом: «ip route add [podCIDR другого узла] через [ipaddress другого узла]»

После того, как я добавил маршрут на два узла, я могу успешно пропинговать cbr0 gw с ipv4. Но «добавление маршрута вручную» не кажется правильным способом.

Когда я использую kubenet, как мне настроить ping с узла на cbr0 gw другого узла?


person KeepTheBeats    schedule 30.10.2019    source источник
comment
Можете ли вы отредактировать свой пост, включая все внесенные вами изменения, а также вывод следующих команд? kubectl get pods -n kube-system и kubectl get nodes <YOUR_MASTER_NODE> -o go-template --template='{{range .spec.podCIDRs}}{{printf "%s\n" .}}{{end}}'   -  person A_Suh    schedule 01.11.2019
comment
kubernetes.io/docs/concepts/extend -kubernetes/ Судя по этому сайту, ему нужен облачный провайдер, который устанавливает правила маршрутизации для связи между узлами. Но у моего k8s нет облачного провайдера.   -  person KeepTheBeats    schedule 03.11.2019


Ответы (1)


Kubenet — это требование для включения IPv6 и, как вы сказали , kubenet имеют некоторые ограничения и здесь мы можем прочитать:

Kubenet — это очень простой сетевой плагин, предназначенный только для Linux. Сам по себе он не реализует более продвинутые функции, такие как межузловая сеть или сетевая политика. Обычно он используется вместе с поставщиком облачных служб, который устанавливает правила маршрутизации для связи между узлами или в средах с одним узлом.

Я хотел бы подчеркнуть, что kubenet не создает для вас маршруты автоматически.

Основываясь на этой информации, мы можем понять, что в вашем сценарии это ожидаемое поведение и проблем не возникает. Если вы хотите продолжать двигаться в этом направлении, вам нужно создавать маршруты вручную.

Важно помнить, что это альфа-функция (WIP).

Также проводится некоторая работа, чтобы сделать возможным загрузку кластера Kubernetes с двойным стеком с использованием Kubeadm, но его пока нельзя использовать, и для него нет ожидаемого времени прибытия.

В этом репозитории есть несколько примеров настроек IPv6 и двойного стека с другими сетевыми плагинами., но по-прежнему требует добавления маршрутов вручную.

Этот проект служит двум основным целям: (i) изучить и проверить поддержку ipv6 в kubernetes и связанных плагинах (ii) предоставить среду разработки для реализации и тестирования дополнительных функций (например, двойного стека)

person Mark Watney    schedule 15.11.2019
comment
Если мой ответ помог вам добиться того, что вам нужно, не забудьте принять мой ответ и/или проголосовать за него. Спасибо. - person Mark Watney; 20.11.2019