Сервис Kubernetes - Как различить идентичные целевые порты - PullRequest
2 голосов
/ 23 апреля 2020

У меня есть два разных развертывания, создающих два разных модуля, которые раскручивают два разных контейнера для разных целей. но в качестве совпадения порт, представленный обоими этими контейнерами, равен 8080.

Я создал одну службу с двумя портами 8080 и 8081 (type = LoadBalancer) для предоставления обоих этих развертываний. когда я нажимаю URL-адрес LoadBalancer, я получаю ответ от контейнера 1 и после нажатия refre sh несколько раз получаю ответ от контейнера 2. Такое поведение одинаково для обоих портов.

Я знаю, что изменение Порт, выставленный в Dockerfile одного из этих контейнеров, решит эту проблему. но просто из любопытства, как новичка ie для kubernetes, есть ли другой подход для обработки этого сценария?

1 Ответ

3 голосов
/ 23 апреля 2020

Вы можете использовать Ingress. Вот пример.

Вместо создания одного Сервиса для обоих модулей. Создайте одну услугу на модуль. Убедитесь, что метки селектора различны для обоих. Установите тип для NodePort. Затем создайте Ingress с такими правилами, как.

spec:
  rules:
  - host: cafe.example.com
    http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

Сейчас существует множество решений для доступа. Ingress в k8s - это просто сетевая спецификация c. Все это модель данных, которая представляет вашу сетевую логику c. Различные входные контроллеры принимают эту спецификацию c и реализуют logi c со своим заданным решением. Вот ссылка на документацию для nginx входного контроллера. https://www.nginx.com/products/nginx/kubernetes-ingress-controller/

...