Нужно ли иметь балансировщик нагрузки до входа в мою инфраструктуру Kubernetes - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь внедрить ClusterIP-Service для каждого моего развертывания. К вашему сведению, я настраиваю kubernetes на своем собственном сервере в офисе (по какой-то причине не использую облако) .Ранее вот сеть / инфраструктура, о которой я мог подумать:

Ingress -> Service -> Deployment

Я не уверен, почему мой Ingress не работает так, как задумывалось.Я использую https://github.com/kubernetes/ingress-nginx в качестве моего Ingress Controller.Я также применил конфигурацию службы Bare-metal из https://kubernetes.github.io/ingress-nginx/deploy/

. Ниже приведен мой простой Ingress и ClusterIP, например:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: simpleweb-service
              servicePort: 80

---
apiVersion : v1
kind : Service
metadata:
  name: simpleweb-service
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80
  selector:
    component: web

Я попытался получить доступ к http://<server-internal-ip>:80, но вместо соединения мне отказалиполучать доступ к моим приложениям внутри определенного сервиса.Что-то, что я сделал выше, могло бы пойти не так?

Нужно ли иметь LoadBalancer перед входом, как показано ниже?(какой из них идеален)

LoadBalancer -> Ingress -> Service -> Deployment

или, может быть,

LoadBalancer -> Service -> Deployment

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

У вас есть несколько вариантов выставления вашего сервиса.Я предлагаю metallb , он позволяет выставлять сервисы с LoadBalancer.С ClusterIP служба не подвержена влиянию внешнего мира, подробнее см. Службы публикации - типы служб .Вход не является обязательным, но без него вы можете иметь только один сервис + порт / IP-адрес, в то время как вход позволяет использовать маршрутизацию на основе имени и / или пути.

0 голосов
/ 19 октября 2018

Параметры доступа:

  • с использованием службы k8s (clusterIP, nodeport, loadbalancer (в aws, окружении gcp))

Внешний балансировщик нагрузки (опционально) -> Служба типа nodeport -> Deploymenet

  • с использованием входа

Внешний балансировщик нагрузки (опционально) -> Ingress -> Service (clusterIP) -> Deploymenet

В вашем случае вы можете протестировать его, сначала используя nodeport, и получить к нему прямой доступ, затем, если работает, затем использовать clusterIp и свернуть еговнутри кластера, чтобы убедиться, что он работает на порту 80, а затем выставьте его на вход, если вы хотите использовать вход.Также отладьте и отмените входную службу.

Если вы получаете отказ в соединении, может быть проблема с портом.

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

документы: https://console.bluemix.net/docs/containers/cs_ingress.html#ingress

...