Развертывание контроллера входящего трафика
Область применения: 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
Следующие шаги
Дополнительные сведения см. по следующим ссылкам.