Доступ к серверу API K8S, работающему на Openstack, за плавающим IP-адресом

#kubernetes #proxy #openstack #rbac #kubernetes-apiserver

#kubernetes #прокси #openstack #rbac #kubernetes-apiserver

Вопрос:

У меня есть Kubernetes Master, прослушивающий внутренний сетевой адрес Openstack 192.168.6.6: 6443. Этот компьютер имеет плавающий IP-адрес, связанный для доступа на основе ssh (x.x.x.x) из моего дома. SSH, полученный на плавающем IP-адресе, отправляется на внутренний IP-адрес. Но это не работает для пересылки 6443.

Как мне получить доступ к серверу API K8S из моего дома, когда я могу получить доступ к плавающему IP-адресу, связанному с ведущим сервером K8S, но не к внутреннему IP-адресу, который прослушивает сервер API.

Я знаю метод копирования файла конфигурации на ваш локальный компьютер, но файлы конфигурации имеют ip-адрес, на котором прослушивается master, и этот IP недоступен извне Openstack.

Спасибо за любую помощь

Ответ №1:

Мне удалось решить эту проблему путем переустановки кластера k8s в OpenStack и предоставления плавающего IP-адреса в качестве параметра «—apiserver-cert-extra-sans» для kubeadm.

инициализация kubeadm —apiserver-cert-extra-sans=

Ответ №2:

1. Настройте IP-адрес сервера API

Вам необходимо заменить IP-адрес сервера API в файле KUBE_CONFIG на плавающий IP-адрес.

2. Настройте группу безопасности

Затем вам нужно добавить правило входа, которое разрешает порт TCP 6443 для группы безопасности интерфейса главного узла. введите описание изображения здесь

Комментарии:

1. Большое спасибо. Я не знал, что вы можете изменить адрес, по которому прослушивается сервер API. Как это делается? Кроме того, не сделает ли это мастер недоступным для рабочих узлов в openstack?

2. Таким образом, адрес сервера api в файле kube_config указывает только адрес, на который клиент отправит запрос. Этот плавающий IP-адрес будет перенаправлен на внутренний IP-адрес сервера kube_api, который прослушивает сервер api. Поэтому я бы сказал, что IP-адрес прослушивания не меняется. А также в кластере рабочие узлы уже подключены к кластеру, используя адрес сервера api (внутренний). Адрес в kube_config используется только для используемого вами клиента kube, а не для рабочих узлов.

3. Еще раз спасибо, но это было первое, что я попробовал. Я скопировал файл конфигурации с главного сервера k8s на свой ноутбук и изменил IP 192.168.6.6:6443 на <плавающий ip>:6443. Но выполнение команды kubectl с этим выдает ошибку: «Невозможно подключиться к серверу: x509: сертификат действителен для 192.168.6.6, а не <плавающий ip>