модуль хост-сети - только 1 контейнер должен быть доступен для интернета - PullRequest
0 голосов
/ 20 мая 2018

Это мои первые шаги в мир kubernetes, так что извините, если мои термины не используются правильно и т. Д. Я запускаю установку kubernetes с одним узлом без внешнего loadbalancer, и я развернул модуль с контейнерами.Одна база данных mysql и powerdns.Powerdns должен предоставлять порт 53 Интернету, а mysql - только в кластере.Поэтому я установил следующее:

«hostNetwork: true» для модуля pod
«hostPort» для контейнера powerdns, а не для mysql

Служба для порта 3306 с «type: ClusterIP»

Теперь все работает.Powerdns может подключиться к MySQL и выставлен на 53-м порту в Интернете.Но вопреки моему предположению база данных mysql также доступна для Интернета.

Может ли кто-нибудь подсказать мне, что я делаю неправильно?

1 Ответ

0 голосов
/ 20 мая 2018

Использование hostNetwork: true позволяет всему вашему модулю (все контейнеры в нем) связывать порты с хостом, который вы уже определили как проблемный.

Прежде всего, вы должны рассмотреть возможность перемещения контейнера mysql извашего стручка.Предполагается, что использование нескольких контейнеров позволяет группировать контейнеры, работающие как одно целое (например, приложение и фоновый процесс, тесно взаимодействующие друг с другом).

Продумайте сервисы.Ваша служба PowerDNS сама является пользователем службы, так как для нее требуется база данных, а приложение PowerDNS не предоставляет ее.Вы хотите другой сервис для MySQL.Взгляните на документацию ( one , two ) для StatefulSets, так как он использует MySQL в качестве примера (запуск баз данных в Kubernetes - одна из более сложных задач).Создайте для этого ClusterIP сервис.ClusterIP службы доступны только внутри кластера (ваша база данных является внутренней службой, так что вы этого хотите).

Таким образом, ваш модуль PowerDNS будет содержать только один контейнер, который вы можете привязать к своему хосту.сеть. Но с использованием hostNetwork: true в целом не годится.Вы не сможете создать несколько экземпляров своего приложения (в случае масштабирования PowerDNS), хотя для первых шагов это хорошо.Балансировщик нагрузки перед вашей настройкой будет лучше, хотя.Вы можете использовать службы NodePort, чтобы сделать вашу службу доступной для порта с высокими значениями, к которому ваш балансировщик нагрузки подключается через прокси.

...