У меня есть небольшое приложение, состоящее из трех служб:
- Одностраничное приложение (SPA), обслуживаемое из nginx
- Простой API-интерфейс nodejs HTTP, используемый SPA
- MQtt-брокер, предоставляющий порты 1883 и 9001
В идеале мне бы хотелось, чтобы все обслуживалось с одного и того же субдомена и статического IP-адреса, и я пытался настроить это в Kubernetes в Google CloudПлатформа.
Я создал развертывания для каждой из служб с портом 80, предоставляющим SPA, API 3000 и брокером MQTT 1883/9001.Затем я следовал инструкциям здесь для настройки статического IP-адреса и службы для маршрутизации в SPA, а затем создал аналогичные службы для API и приложения MQTT.(Я изначально адаптировал их из развертываний и служб, сгенерированных из файла docker-compose и Kompose).
Кажется, что SPA и API работают нормально, а служба MQTT - нет.Когда я запускаю kubetl get events
, я вижу:
Error creating load balancer (will retry): failed to ensure load balancer for service default/mqtt-broker: failed to create forwarding rule for load balancer (a5529f2a9bdaf11e8b35d42010a84005(default/mqtt-broker)): googleapi: Error 400: Invalid value for field 'resource.IPAddress': '35.190.221.113'. Specified IP address is in-use and would result in a conflict., invalid
Поэтому мне интересно, должен ли я создать одну службу для маршрутизации к трем развертываниям, но не могу найти какую-либо документациюили примеры, объясняющие, как это сделать для службы, отличной от http.
Полагаю, я мог бы разместить службу mqtt на отдельном IP-адресе, но, похоже, это решает проблему, а не решает ее.
Заранее спасибо за любой совет.