K8s не удается назначить плавающий IP-адрес loadbalancer с octavia

#kubernetes #openstack

#kubernetes #openstack

Вопрос:

У меня есть

  • openstack, это Queens, в нем есть octavia для lbaas
  • небольшой (тестовый) кластер k8s поверх него (3 узла, 1 главный), версия 9.1.2
  • вызываемое развертывание hello , которое обслуживает простую веб-страницу с надписью «hello world», работает при доступе изнутри кластера

Я хочу представить свое развертывание как службу балансировки нагрузки с плавающим IP-адресом.

Я сделал kubectl expose deployment hello --type=LoadBalancer --name=my-service

В нем говорится ( kubectl describe service my-service )

Error creating load balancer (will retry): failed to ensure load balancer for service default/my-service: error getting floating ip for port 9cc6442b-2b2f-4b6a-8f91-65dbc2ff13d0: Resource not found

Если я вручную сделаю: openstack floating ip --port 9cc6442b-2b2f-4b6a-8f91-65dbc2ff13d0 356c8ffa-7bc2-43a9-a8d3-29147ae01727 где:

 | ID                                   | Floating IP Address | Port                                 | Floating Network                     |
| 356c8ffa-7bc2-43a9-a8d3-29147ae01727 | 172.27.81.241       | None                                 | eb31cc74-96ba-4394-aef4-0e94bec46d85 |
  

и / etc/kubernetes /cloud_config имеет:

 [LoadBalancer]
subnet-id=6a6cdc35-8dda-4982-850e-53c6ee5a5085
floating-network-id=eb31cc74-96ba-4394-aef4-0e94bec46d85
use-octavia=True
  

(таким образом, он ищет плавающие IP-адреса в правильной сети, и эта подсеть является внутренней подсетью k8s)

Все работает.

Итак, все, кроме «связать IP», сработало. Почему этот шаг завершается неудачей? Где k8s зарегистрировал, что он сделал и как произошел сбой? Я могу найти документы только для ведения журнала на уровне pod (и мой pod в порядке, и обслуживание его тестовой веб-страницы просто отличное).

(У меня осталось много квот для «создания большего количества плавающих IP-адресов», и несколько неиспользуемых находятся поблизости)

Ответ №1:

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

Я бы рекомендовал вам проверить эту страницу сообщества OpenStack и поискать дополнительные ответы, поскольку я не эксперт в OpenStack.

Что касается вашего вопроса

Где k8s зарегистрировал, что он сделал и как произошел сбой?

Вы можете использовать kubectl describe service <service_name>

Показать сведения о конкретном ресурсе или группе ресурсов

Выведите подробное описание выбранных ресурсов, включая связанные ресурсы, такие как события или контроллеры. Вы можете выбрать один объект по имени, все объекты этого типа, указать префикс имени или селектор меток. Например:

$ kubectl describe TYPE NAME_PREFIX

Для описания режима отладки, пожалуйста, проверьте службы отладки.