Поделиться через


Развертывание контроллера входящего трафика

Область применения: AKS в Azure Local 22H2, AKS на Windows Server

Контроллер входящего трафика — это ресурс Kubernetes, который разрешает внешний доступ к службам в кластере Kubernetes. Входящий трафик позволяет оператору предоставлять службу внешним сетевым запросам, обычно HTTP или HTTPS. Вы настраиваете доступ путем создания набора правил, определяющих входящие подключения, которые достигают определенных служб.

Контроллер входящего трафика — это программное обеспечение, которое обеспечивает настраиваемую маршрутизацию трафика для служб Kubernetes. Ресурсы входящего трафика Kubernetes используются при настройке правил входящего трафика и маршрутов для отдельных служб Kubernetes. С помощью контроллера входящего трафика и правил входящего трафика можно использовать один IP-адрес для маршрутизации трафика в несколько служб в кластере Kubernetes.

После развертывания контроллера в среде можно создать и развернуть манифест входящего трафика. В настоящее время вы используете входящий трафик в AKS Arc с помощью контроллера входящего трафика NGINX. Сведения об установке, настройке и использовании контроллера входящего трафика NGINX см. в разделе "Установка с манифестами".

Входящий трафик отличается от NodePort и LoadBalancer уникальным способом, и он улучшает маршрутизацию трафика в кластер менее дорогостоящим способом. Определение служб NodePort создает многочисленные случайные порты, а определение служб LoadBalancer увеличивает затраты на облачные ресурсы больше, чем может потребоваться. При определении контроллера входящего трафика вы объединяете правила маршрутизации трафика в один ресурс, который выполняется в составе кластера. NodePort и LoadBalancer позволяют предоставлять службу, указывая это значение в типе службы, а входящий трафик является независимым ресурсом для службы. Входящий трафик определяется, создается и уничтожается отдельно от службы.

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

Использование входящего трафика для предоставления служб через внешние URL-адреса

Пример использования входящего трафика показан в следующем манифесте YAML. Отображается ingress.class в метаданных (в этом примере ingress-nginx), и этот параметр позволяет контроллеру входящего трафика NGINX знать, что необходимо отслеживать и обновлять:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080

В spec этом разделе содержатся сведения о настроенных параметрах. В этом примере определяется правило (или набор правил) и включает следующие элементы:

  • Узел, к которому применяются правила.
  • Независимо от того, является ли трафик HTTP или HTTPS.
  • Отслеживаемый путь.
  • Внутренняя служба и порт, в котором отправляется трафик.

Использование входящего трафика для балансировки нагрузки трафика

В следующем примере в манифест добавляется еще один путь, который разрешает балансировку нагрузки между разными внутренними серверами приложения. В этом примере оператор может разделить трафик и отправить его в разные конечные точки службы и развертывания на основе описанного пути. За каждым путем используется развертывание и служба, которая полезна для конечных точек, получающих больше трафика:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-and-earth
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080
               - path: /hello-earth
pathType: Prefix
backend:
    service: 
         name: hello-earth 
                    port:  
                     number: 8080

Использование входящего трафика для маршрутизации ТРАФИКА HTTP в несколько имен узлов в одном IP-адресе

Для каждого узла можно использовать другой ресурс входящего трафика, который позволяет управлять трафиком с несколькими именами узлов. Чтобы использовать другой ресурс входящего трафика, наведите несколько имен узлов на один общедоступный IP-адрес, используемый для службы LoadBalancer. В следующем файле манифеста hello-world добавлена рабочая версия. Используется имя prod.example.com узла, а трафик указывает на новую службу hello-world-prod. Трафик поступает через IP-адрес подсистемы балансировки нагрузки и направляется на основе имени узла и указанного пути:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-prod
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-test 
                    port:  
                     number: 8080
       - host: prod.example.com
          http:
              paths:
               - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-prod 
                    port:  
                     number: 8080

Следующие шаги

Дополнительные сведения см. по следующим ссылкам.