Настройте другой внутренний IP-адрес для рабочих узлов

Я хочу настроить кластер Kubernetes локально, где я хотел бы иметь 1 главный узел и 2 рабочих узла. Мне удалось это сделать, но я не могу получить доступ к модулям или просмотреть журналы определенного модуля, поскольку внутренний IP-адрес одинаков для всех узлов.

vagrant@k8s-head:~$ kubectl get nodes -o wide
NAME         STATUS   ROLES    AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8s-head     Ready    master   5m53s   v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2
k8s-node-1   Ready    <none>   4m7s    v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2
k8s-node-2   Ready    <none>   2m28s   v1.15.0   10.0.2.15     <none>        Ubuntu 16.04.6 LTS   4.4.0-151-generic   docker://18.6.2

Я обнаружил, что для решения этой проблемы необходимо сделать следующее:
- добавить KUBELET_EXTRA_ARGS=--node-ip=<IP_ADDRESS> в файл / etc / default / kubelet
- перезапустить kubelet, запустив: < br /> _ 3_

Проблема в том, что в этом месте отсутствует файл / etc / default / kubelet, и я не могу добавить этот дополнительный параметр. Пытался создать файл вручную, но похоже, что он не работает, когда я перезапускаю kubelet, IP-адрес все тот же.

Кто-нибудь сталкивался с этой проблемой с отсутствующим файлом / etc / default / kubelet или если есть другой более простой способ настроить разные внутренние IP-адреса?


person Boban Djordjevic    schedule 01.07.2019    source источник
comment
Проверьте расположение конфигурации kubelet с помощью systemctl status kubelet, вы получите результат типа /usr/bin/kubelet ... --config=<kubelet_config_location>   -  person menya    schedule 01.07.2019


Ответы (1)


Это нормально иметь один и тот же IP-адрес на каждом узле для кластера Kubernetes, работающего в VirtualBox. Причина в том, что это NAT newtork не предназначенный для связи между виртуальными машинами, IP-адрес 10.0.2.15 преобразуется через NAT, когда доступ к внешнему миру.

На следующей диаграмме показаны сети, созданные в кластере Kubernetes поверх VirtualBox, как вы можете видеть, каждый узел имеет одинаковый IP-адрес в NAT newtork, но разные IP-адреса в других сетях:

Кластерные сети Kubernetes

Для доступа к POD вы можете использовать NodePort и HOST ONLY сеть.

Просмотрите полный пример и загрузите код со страницы Создание кластера Kubernetes с Vagrant и Ansible (без Minikube). Это руководство, в котором объясняется, как запустить кластер Kubernetes с помощью сценариев Ansible, Vagrant и VirtualBox.

Он использует Calico для работы в сети и включает еще одно руководство по установке Istio, если вам нужна микрослужба.

person Javier Ruiz    schedule 01.07.2019
comment
Большое спасибо за подробный ответ. Я обязательно посмотрю на предоставленный вами пример. Я уже создал сеть только для хоста, и для того, чтобы открыть доступ к узлам для IP-адресов, предоставленных из сети только для хоста, я хотел отредактировать файл / etc / default / kubelet. Я обнаружил, что случайно использовал неправильный IP-адрес внутри файла / etc / default / kubelet, когда я наконец изменил его на правильный IP, он работал после перезапуска kubelet. Теперь у каждого узла есть собственный IP-адрес, и я могу получить доступ к созданным мною подам. - person Boban Djordjevic; 03.07.2019