Расширение внутренней сети Kubernetes до узла только для мастера

Я пытаюсь настроить небольшой кластер Kubernetes, используя виртуальную машину (главную) и 3 голых металлических сервера (все работают под Ubuntu 14.04). Я следую руководству по установке Ubuntu в Kubernetes. Все работает нормально, если я использую 4 узла (ВМ + серверы) в качестве миньонов. Но когда я пытаюсь использовать виртуальную машину как мастер, она не может получить доступ к сети Flannel. Я могу создавать модули, службы и т. Д., Но если я попытаюсь получить доступ к службе с главного узла (ВМ), он не сможет найти IP-адрес Flannel.

Могу ли я включить главный узел во внутреннюю сеть Kubernetes (в данном случае сеть Flannel)? Если нет, какие-либо советы о том, как получить доступ к пользовательскому интерфейсу Kubernetes и другим службам с главного узла?


person dilvan    schedule 05.11.2015    source источник


Ответы (1)


Чтобы главный узел получил доступ к сети кластера, вы можете запустить flanneld и kube-proxy на главном узле. Это должно дать вам необходимый доступ.

Однако добавление этих компонентов в контексте использования метода kube-up.sh может быть немного сложным. Похоже, у вас может быть несколько вариантов, оставаясь в основном в рамках этого руководства:

  • Вы можете просмотреть kube-up.sh сценарии и изменить его так, чтобы он устанавливал и настраивал kube-proxy и flanneld на главном узле, но не kubelet. Со временем это может быть трудно поддерживать.
  • Вы можете запустить кластер, как у вас уже есть, со всеми 4 узлами, работающими как «узлы» (новое имя для рабочих, которое раньше называлось «миньонами»). Затем отметьте главный узел как не подлежащий планированию (kubectl patch nodes $NODENAME -p '{"spec": {"unschedulable": true}}'), как указано здесь. Мастер по-прежнему будет отображаться в списках узлов и т. Д., Но он не должен получать запланированные для него модули и должен иметь полный сетевой доступ к кластеру.
  • Вы также можете запустить кластер, как у вас уже есть, с 4 узлами, а затем просто войти в систему и удалить kubelet на главном сервере. Фактически это похоже на приведенное выше, за исключением того, что мастер не будет отображаться в списках узлов (хотя вам, возможно, придется удалить его (kubectl delete node $NODENAME), когда вы удалите кубелет.

Вероятно, есть и другие варианты (они всегда есть!), Но, надеюсь, они помогут вам начать работу.

person rwehner    schedule 06.11.2015
comment
Я использовал второй вариант (4 узла с 1 неуправляемым). Он работает нормально, но было бы неплохо добавить предупреждение в руководство по установке для Ubuntu, в котором указывается, что мастер не имеет доступа к внутренней сети Kubernetes, и предлагаются некоторые обходные пути. Большое спасибо !!! - person dilvan; 12.11.2015
comment
@dilvan rwehner Я нашел это полезным спасибо, у меня есть еще одна проблема с одним миньоном, внутренний IP-адрес другого миньона недоступен, поэтому, если я получаю доступ к IP-адресу службы (nodeport, с IP-адресом pod), он не работает, когда он балансирует нагрузку с другими стручками миньонов - person PMat; 20.09.2017