Google Cloud Kubernetes без балансировки нагрузки - PullRequest
0 голосов
/ 06 июля 2018

Google Container Engine с внешним IP, без балансировщика нагрузки

Я изучал, как создать группу серверов на облачном движке Google kubernetes. Закончилось создание нескольких с балансировщиком нагрузки ... хотя цена сейчас неплохая, я попытался использовать тип службы NodePort, и он привязывается к локальному IP-адресу виртуальной машины, к которой он привязан, а не к внешнему IP-адресу или чему-либо еще остальное. Как бы я пошел о маршрутизации трафика на тип службы узла-порта? Кроме того, было бы безопасным для меня сделать запись SRV для контейнера в узле, чтобы получить доступ к моей службе с преимущественным экземпляром / возможным переназначением, если kubernetes делает это автоматически?

1 Ответ

0 голосов
/ 06 июля 2018

Можно использовать Kubernetes NodePort для работы в качестве внешней службы.

NodePorts предоставит порт на каждом из ваших хостов, который вы можете использовать для доступа к вашему сервису.

Недостатком этого подхода является управление портами.

Приложения не могут предполагать, что HTTPS использует порт 443 или что MySQL работает через порт 3306. Вместо этого он может жить через порт 32042 в PROD и 32012 в DEV.

Рассмотрите возможность использования NodePort таким образом зияющая дыра в безопасности кластера, более того, NodePort не может выставлять стандартные номера с низким номером порты типа 80 и 443.

apiVersion: v1
kind: Service
metadata:  
  name: my-nodeport-service
spec:
  selector:    
    app: my-app
  type: NodePort
  ports:  
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30036
    protocol: TCP

С помощью ingress вы можете запустить программный балансировщик нагрузки, такой как nginx, выставив его как порт 80/443 на все ваши хосты и затем контролируют маршрутизацию любого HTTP-трафика к сервисам Kuberbetes.

Это лучше всего подходит для трафика уровня 7, такого как HTTP / HTTPS.

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

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  backend:
    serviceName: other
    servicePort: 8080
  rules:
  - host: foo.mydomain.com
    http:
      paths:
      - backend:
          serviceName: foo
          servicePort: 8080
  - host: mydomain.com
    http:
      paths:
      - path: /bar/*
        backend:
          serviceName: bar
          servicePort: 8080

Вдохновленный think-nodeport-kubernetes и облачный kubernetes nodeport vs ingress статья.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...