Разоблачить развертывание через сервисный тип Node Port в цифровом океане Kubernetes - PullRequest
0 голосов
/ 19 июня 2019

Я внедряю решение в Kubernetes для нескольких клиентов и хочу контролировать свой кластер с помощью Prometheus.Однако, поскольку это может быстро масштабироваться, и я хочу сократить расходы, я буду использовать Федерацию для Prometheus, чтобы очистить различные кластеры Kubernetes, но мне нужно разоблачить мое развертывание Prometheus.

У меня уже есть такая работа с типом службы LoadBalancer, которая раскрывает мое развертывание Prometheus, но этот подход добавляет дополнительные расходы к моей инфраструктуре (Digital Ocean LB).

Возможно ли сделать этоиспользуя тип службы NodePort, открывая порт для моего IP-адреса кластера, что-то вроде этого:

XXXXXXXXXXXXXXXX.k8s.ondigitalocean.com: 9090

Где я могу использовать этот URL-адрес для моего мастер-склада Прометейвсе "ведомые" экземпляры Prometheus?

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

Это мой сервис:

Name:                     my-nodeport-service
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-nodeport-service","namespace":"default"},"spec":{"ports":[{"na...
Selector:                 app=nginx
Type:                     NodePort
IP:                       10.245.162.125
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30800/TCP
Endpoints:                10.244.2.220:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>


Can anybody help me please?

---

This is my service: 

```kubectl describe service my-nodeport-service
Name:                     my-nodeport-service
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-nodeport-service","namespace":"default"},"spec":{"ports":[{"na...
Selector:                 app=nginx
Type:                     NodePort
IP:                       10.245.162.125
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30800/TCP
Endpoints:                10.244.2.220:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>


1 Ответ

0 голосов
/ 03 июля 2019

Затем вы можете настроить хост XXXXXXXXXXXXXXXX.k8s.ondigitalocean.com:9090 в качестве балансировщика нагрузки с Nginx.

Попробуйте настроить балансировщик нагрузки TCP Nginx.

Примечание: Вы будете использовать поток Nginx, и если вы хотите использовать Nginx с открытым исходным кодом, а не Nginx Plus, вам, возможно, придется скомпилировать свой собственный Nginx с параметром -with-stream .

Пример файла конфигурации:

events {
    worker_connections  1024;
}

stream {
    upstream stream_backend {
        server dhcp-180.example.com:446;
        server dhcp-185.example.com:446;
        server dhcp-186.example.com:446;
        server dhcp-187.example.com:446;
    }

    server {
        listen     446;
        proxy_pass stream_backend;
    }

После запуска Nginx результаты теста должны быть такими:

enter image description here

Host lb.example.com выступает в качестве балансировщика нагрузки с Nginx.

В этом примере Ngnix настроен на использование циклического перебора и, как вы можете видеть, каждый раз, когда новое соединение заканчивается на другом хосте / контейнере.

Примечание : имя хоста контейнера совпадает с именем хоста узла, это связано с hostNetwork.

Существуют некоторые недостатки этого решения, такие как:

  • определение hostNetwork резервирует порт (ы) хоста для всех контейнеров, работающих в модуле
  • , создавая один балансировщик нагрузки, у вас есть единственная точка отказа
  • каждый раз, когда добавляется новый узелили удален в кластер, балансировщик нагрузки должен быть обновлен

Таким образом, можно настроить кластер kubernetes на входящие-исходящие TCP-соединения, маршрутизирующие из / в пределы кластера.

Полезное сообщение: load-balancer-tcp .

Документация NodePort: nodePort .

...