Требуется ли балансировщик нагрузки перед Ingress в моей инфраструктуре Kubernetes?

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

Ingress -> Service -> Deployment

Я не уверен, почему мой Ingress не работает должным образом. Я использую https://github.com/kubernetes/ingress-nginx в качестве контроллера Ingress . Я также применил конфигурацию службы 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 перед Ingress, как показано ниже? (какой идеальный)

LoadBalancer -> Ingress -> Service -> Deployment

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

LoadBalancer -> Service -> Deployment

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


person thegexploit    schedule 19.10.2018    source источник


Ответы (2)


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

  • с помощью службы k8s (clusterIP, nodeport, loadbalancer (в aws, gcp environement))

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

  • используя вход

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

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

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

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

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

person Ijaz Ahmad Khan    schedule 19.10.2018

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

person GyulaWeber    schedule 19.10.2018