Облачная платформаAdvanced

Создание LoadBalancer Ingress с помощью kubectl

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

В этом разделе в качестве примера используется Nginx workload, чтобы описать, как создать LoadBalancer ingress с помощью kubectl.

Предварительные требования

Примечания и ограничения

  • Только кластеры v1.17 и более новые поддерживают выделенные load balancers.
  • Рекомендуется, чтобы другие ресурсы не использовали load balancer, автоматически создаваемый ingress. В противном случае load balancer будет занят после удаления ingress, что приведёт к оставшимся ресурсам.
  • После создания ingress обновляйте и поддерживайте конфигурацию выбранных load balancers в консоли CCE. Не изменяйте конфигурацию в консоли ELB. В противном случае сервис ingress может работать аномально.
  • URL, зарегистрированный в политике переадресации ingress, должен совпадать с URL, используемым для доступа к backend Service. В противном случае будет возвращена ошибка 404.
  • В кластере IPVS, если ingress LoadBalancer и Service используют один и тот же load balancer, доступ к ingress из узлов и контейнеров кластера невозможен. Это происходит потому, что kube-proxy привязывает адрес LoadBalancer Service к мосту ipvs-0, перехватывающему трафик ELB. Используйте разные load balancers для ingress LoadBalancer и Service.
  • Выделенные load balancers должны быть типа application (HTTP/HTTPS) и поддерживать частные сети (частные IP-адреса).
  • Если несколько ingress обращаются к одному и тому же порту ELB в кластере, параметры конфигурации listener (например, сертификат, связанный с listener, и атрибут HTTP/2 listener) подчиняются конфигурации первого ingress.

Автоматическое создание Load Balancer при создании Ingress

Ниже описано, как выполнить команду kubectl для автоматического создания load balancer при создании ingress.

  1. Используйте kubectl для доступа к кластеру. Подробности см. в Accessing a Cluster Using kubectl.
  2. Создайте YAML‑файл с именем ingress-test.yaml. Имя файла можно изменить.

    vi ingress-test.yaml
    Note

    Начиная с кластера v1.23, версия ingress переключена с networking.k8s.io/v1beta1 на networking.k8s.io/v1. Подробности о различиях между v1 и v1beta1 см. в Ingress API Version Upgrade in CCE Clusters v1.23.

    Пример совместного load balancer (доступ через публичную сеть) для кластеров v1.23 и более новых:

    apiVersion: networking.k8s.io/ v1
    kind: Ingress
    metadata:
    name: ingress-test
    annotations:
    kubernetes.io/elb.class: union
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.autocreate:
    '{
    "type":"public",
    "bandwidth_name":"cce-bandwidth-******", # Bandwidth name
    "bandwidth_chargemode":"bandwidth" , # Bandwidth billing mode
    "bandwidth_size":5,
    "bandwidth_sharetype":"PER",
    "vip_subnet_cidr_id": "*****", # IPv4 subnet ID of the subnet
    "vip_address": "**.**.**.**", # Private IP address of the load balancer
    "eip_type":"5_bgp" # EIP type
    }'
    kubernetes.io/elb.tags: key1=value1,key2=value2 # ELB resource tags
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    service:
    name: <your_service_name> # Replace it with your target Service name.
    port:
    number: <your_service_port> # Replace it with your target Service port.
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
    pathType: ImplementationSpecific
    ingressClassName: cce # A LoadBalancer ingress is used.

    Пример общего балансировщика нагрузки (доступ из публичной сети) для кластеров v1.21 и более ранних:

    apiVersion: networking.k8s.io/ v1beta1
    kind: Ingress
    metadata:
    name: ingress-test
    annotations:
    kubernetes.io/elb.class: union
    kubernetes.io/ingress.class: cce # A LoadBalancer ingress is used.
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.autocreate:
    '{
    "type":"public",
    "bandwidth_name":"cce-bandwidth-******", # Bandwidth name
    "bandwidth_chargemode":"bandwidth" , # Bandwidth billing mode
    "bandwidth_size":5,
    "bandwidth_sharetype":"PER",
    "eip_type":"5_bgp" # EIP type
    }'
    kubernetes.io/elb.tags: key1=value1,key2=value2 # ELB resource tags
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    serviceName: <your_service_name> # Replace it with your target Service name.
    servicePort: <your_service_port> # Replace it with your target Service port.
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH

    Пример выделенного балансировщика нагрузки (доступ из публичной сети) для кластеров v1.23 и более новых:

    apiVersion: networking.k8s.io/ v1
    kind: Ingress
    metadata:
    name: ingress-test
    namespace: default
    annotations:
    kubernetes.io/elb.class: performance
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.autocreate:
    '{
    "type": "public",
    "bandwidth_name": "cce-bandwidth-******", # Bandwidth name
    "bandwidth_chargemode": "bandwidth" , # Bandwidth billing mode
    "bandwidth_size": 5,
    "bandwidth_sharetype": "PER",
    "eip_type": "5_bgp", # EIP type
    "vip_subnet_cidr_id": "*****", # IPv4 subnet ID of the subnet
    "vip_address": "**.**.**.**", # Private IP address of the load balancer
    "elb_virsubnet_ids":["*****"], # Subnet network ID
    "available_zone": [
    "ru-moscow-1a"
    ],
    "l7_flavor_name": "L7_flavor.elb.s1.small"
    }'
    kubernetes.io/elb.tags: key1=value1,key2=value2 # ELB resource tags
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    service:
    name: <your_service_name> # Replace it with your target Service name.
    port:
    number: <your_service_port> # Replace it with your target Service port.
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
    pathType: ImplementationSpecific
    ingressClassName: cce

    Пример выделенного балансировщика нагрузки (доступ из публичной сети) для кластеров v1.21 и более ранних:

    apiVersion: networking.k8s.io/ v1beta1
    kind: Ingress
    metadata:
    name: ingress-test
    namespace: default
    annotations:
    kubernetes.io/elb.class: performance
    kubernetes.io/ingress.class: cce
    kubernetes.io/elb.port: '80'
    kubernetes.io/elb.autocreate:
    '{
    "type": "public",
    "bandwidth_name": "cce-bandwidth-******", # Bandwidth name
    "bandwidth_chargemode": "bandwidth" , # Bandwidth billing mode
    "bandwidth_size": 5,
    "bandwidth_sharetype": "PER",
    "eip_type": "5_bgp", # EIP type
    "elb_virsubnet_ids":["*****"], # Subnet network ID
    "available_zone": [
    "ru-moscow-1a"
    ],
    "l7_flavor_name": "L7_flavor.elb.s1.small"
    }'
    kubernetes.io/elb.tags: key1=value1,key2=value2 # ELB resource tags
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    serviceName: <your_service_name> # Replace it with your target Service name.
    servicePort: <your_service_port> # Replace it with your target Service port.
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH

    Table 1 Ключевые параметры

    Параметр

    Обязательно

    Тип

    Описание

    kubernetes.io/elb.class

    Yes

    String

    Выберите подходящий тип балансировщика нагрузки. Этот параметр нельзя изменить после создания ingress.

    • union: общий балансировщик нагрузки
    • performance: выделенный балансировщик нагрузки

    kubernetes.io/ingress.class

    Да

    (только для кластеров v1.21 или более ранних)

    String

    cce: Используется собственный LoadBalancer ingress.

    Этот параметр обязателен при создании ingress.

    ingressClassName

    Да

    (только для кластеров v1.23 или более новых)

    String

    cce: Используется собственный LoadBalancer ingress.

    Этот параметр обязателен при создании ingress.

    kubernetes.io/elb.port

    Нет

    String

    Внешний порт, зарегистрированный с адресом службы LoadBalancer.

    Значение находится в диапазоне от 1 до 65535. Значение по умолчанию — 80 для HTTP и 443 для HTTPS.

    ПРИМЕЧАНИЕ:

    Некоторые порты на совместном load balancer являются высокорисковыми и блокируются по умолчанию, например, порт 21.

    kubernetes.io/elb.subnet-id

    None

    String

    Идентификатор подсети, в которой находится кластер. Значение может содержать от 1 до 100 символов.

    • Обязательно, когда кластер v1.11.7-r0 или более ранней версии будет создан автоматически.
    • Необязательно для кластеров версии новее v1.11.7-r0. По умолчанию оставляется пустым.

    kubernetes.io/elb.enterpriseID

    No

    String

    Этот параметр доступен в кластерах Kubernetes версии v1.15 и новее. В кластерах Kubernetes версии ниже v1.15 load balancers создаются в проекте по умолчанию.

    Этот параметр указывает ID enterprise‑проекта, в котором создаётся load balancer. Он применим только к enterprise‑аккаунтам с включёнными enterprise‑проектами. После выбора ID enterprise‑проекта ресурсы могут быть созданы в enterprise‑проекте ELB.

    Значение содержит от 1 до 100 символов.

    Как получить:

    Войдите в EPS console, нажмите название целевого корпоративного проекта. На странице сведений о корпоративном проекте найдите поле ID и скопируйте ID.

    kubernetes.io/elb.autocreate

    Yes

    elb.autocreate object

    Создавать ли автоматически балансировщик нагрузки, связанный с ingress. Подробную информацию о описании поля см. в Table 2. Этот параметр нельзя изменить после создания ingress.

    ВНИМАНИЕ:

    kubernetes.io/elb.id и kubernetes.io/elb.autocreate не могут быть указаны одновременно.

    Если обе аннотации указаны в Service, CCE будет использовать существующий балансировщик нагрузки вместо автоматического создания. Если этот Service будет удалён, существующий балансировщик нагрузки считается автоматически созданным. Если с балансировщиком нагрузки не связаны другие ресурсы, он также будет удалён.

    Пример:

    • Автоматически созданный выделенный балансировщик нагрузки с привязанным EIP:

      '{"type":"public","bandwidth_name":"cce-bandwidth-1741230802502","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","available_zone":["*****"],"elb_virsubnet_ids":["*****"],"l7_flavor_name":"L7_flavor.elb.pro.max","l4_flavor_name":"","vip_subnet_cidr_id":"*****"}'

    • Автоматически созданный выделенный балансировщик нагрузки без привязанного EIP:

      '{"type":"inner","available_zone":["*****"],"elb_virsubnet_ids":["*****"],"l7_flavor_name":"L7_flavor.elb.pro.max","l4_flavor_name":"","vip_subnet_cidr_id":"*****"}'

    • Автоматически созданный совместный балансировщик нагрузки с привязанным EIP:

      '{"type":"public","bandwidth_name":"cce-bandwidth-1551163379627","bandwidth_chargemode":"bandwidth","bandwidth_size":5,"bandwidth_sharetype":"PER","eip_type":"5_bgp","name":"james"}'

    • Автоматически созданный совместный load balancer без привязанного EIP:

      '{"type":"inner", "name": "A-location-d-test"}'

    kubernetes.io/elb.tags

    Нет

    String

    Нужно ли добавлять теги ресурсов к load balancer. Эта функция доступна только при автоматическом создании load balancer и когда кластер версии v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 или более новой.

    Тег имеет формат "key=value". Для разделения нескольких тегов используйте запятые (,). load balancer поддерживает максимум 20 тегов ресурсов. CCE автоматически добавляет 1 system tag, который учитывается в этом лимите.

    host

    Нет

    String

    Доменное имя для доступа к Service. По умолчанию этот параметр оставлен пустым, и доменное имя должно полностью совпадать. Доменное имя должно быть зарегистрировано и подано. После использования в политике переадресации будет приниматься только это доменное имя.

    path

    Да

    String

    Пользовательский путь маршрута. Все внешние запросы доступа должны соответствовать host и path.

    ПРИМЕЧАНИЕ:

    Путь доступа, добавленный здесь, должен существовать в приложении бэкенда. В противном случае переадресация завершится неудачей.

    Например, URL доступа по умолчанию для приложения Nginx — /usr/share/nginx/html. При добавлении /test в политику переадресации ingress убедитесь, что URL доступа вашего приложения Nginx содержит /usr/share/nginx/html/test. В противном случае будет возвращена ошибка 404.

    ingress.beta.kubernetes.io/url-match-mode

    Нет

    String

    Политика сопоставления маршрута.

    По умолчанию: STARTS_WITH (совпадение по префиксу)

    Варианты:

    • EQUAL_TO: точное совпадение
    • STARTS_WITH: совпадение по префиксу
    • REGEX: совпадение по регулярному выражению

    pathType

    Да

    Строка

    Тип пути. Это поле поддерживается только кластерами v1.23 и более поздними.

    • ImplementationSpecific: Метод сопоставления зависит от Ingress Controller. Метод сопоставления, определённый ingress.beta.kubernetes.io/url-match-mode, используется в CCE.
    • Exact: точное сопоставление URL, чувствительное к регистру.
    • Prefix: сопоставление по префиксу, чувствительное к регистру. При этом методе путь URL разбивается на несколько элементов с помощью слешей (/), и элементы сравниваются последовательно. Если каждый элемент URL соответствует пути, подпути URL могут маршрутизироваться нормально.
      ПРИМЕЧАНИЕ:
      • При сопоставлении по префиксу каждый элемент должен точно совпадать. Если последний элемент URL является подстрокой последнего элемента в запрашиваемом пути, сопоставление не выполняется. Например, /foo/bar соответствует /foo/bar/baz, но не соответствует /foo/barbaz.
      • Когда элементы разделены слешами (/), если URL или запрашиваемый путь заканчивается слешем (/), конечный слеш (/) игнорируется. Например, /foo/bar соответствует /foo/bar/.

    См. examples сопоставления пути ingress.

    Table 2 elb.autocreate data structure

    Параметр

    Обязательно

    Тип

    Описание

    name

    No

    String

    Имя автоматически создаваемого балансировщика нагрузки.

    Значение может содержать от 1 до 64 символов. Допустимы только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.).

    По умолчанию: cce-lb+service.UID

    type

    No

    String

    Тип сети балансировщика нагрузки.

    • public: публичный сетевой балансировщик нагрузки
    • inner: частный сетевой балансировщик нагрузки

    По умолчанию: inner

    bandwidth_name

    Yes для публичных сетевых балансировщиков нагрузки

    String

    Имя пропускной способности. Значение по умолчанию — cce-bandwidth-******.

    Значение может содержать от 1 до 64 символов. Разрешены только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.).

    bandwidth_chargemode

    Да для балансировщиков нагрузки публичной сети

    String

    Режим пропускной способности.

    • bandwidth: оплата по пропускной способности
    • traffic: оплата по трафику

    bandwidth_size

    Да для балансировщиков нагрузки публичной сети

    Integer

    Размер пропускной способности. Значение по умолчанию находится в диапазоне от 1 Mbit/s до 2000 Mbit/s. Настройте этот параметр в соответствии с диапазоном пропускной способности, разрешённым в вашем регионе.

    Минимальный шаг изменения пропускной способности зависит от диапазона пропускной способности.

    • Минимальный шаг составляет 1 Mbit/s, если разрешённая пропускная способность не превышает 300 Mbit/s.
    • Минимальный шаг составляет 50 Mbit/s, если разрешённый диапазон пропускной способности от 300 Mbit/s до 1000 Mbit/s.
    • Минимальный шаг составляет 500 Mbit/s, если разрешённая пропускная способность превышает 1000 Mbit/s.

    bandwidth_sharetype

    Да для балансировщиков нагрузки публичной сети

    String

    Режим совместного использования пропускной способности.

    • PER: выделенная пропускная способность

    eip_type

    Да для балансировщиков нагрузки публичной сети

    String

    Тип EIP.

    • 5_bgp: динамический BGP

    Типы различаются по регионам. Для получения подробной информации см. консоль EIP.

    vip_subnet_cidr_id

    Нет

    String

    Идентификатор IPv4 подсети, в которой находится балансировщик нагрузки. Эта подсеть используется для выделения IP‑адресов балансировщику нагрузки для предоставления внешних сервисов. IPv4 подсеть должна принадлежать VPC кластера.

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

    Это поле можно указывать только для кластеров версии v1.21 и выше.

    Как получить:

    Войдите в VPC console. В панели навигации выберите Subnets. Отфильтруйте целевую подсеть по имени VPC кластера, нажмите название подсети и скопируйте IPv4 Subnet ID на вкладке Summary.

    ipv6_vip_virsubnet_id

    No

    String

    Идентификатор IPv6 подсети, в которой развернут балансировщик нагрузки. Для подсети должен быть включён IPv6.

    Этот параметр доступен только для выделенных балансировщиков нагрузки.

    Как получить:

    Войдите в VPC console. В панели навигации выберите Subnets. Отфильтруйте целевую подсеть по имени VPC кластера, нажмите название подсети и скопируйте Network ID на вкладке Summary.

    elb_virsubnet_ids

    No

    Массив строк

    Идентификатор сети подсети, в которой находится load balancer. Эта подсеть используется для выделения IP‑адресов для доступа к backend server. Если этот параметр не указан, по умолчанию будет использована подсеть, указанная в vip_subnet_cidr_id. Load balancer занимают различное количество IP‑адресов подсети в зависимости от их спецификаций. Не используйте CIDR‑блоки подсетей других ресурсов (например, clusters или nodes) в качестве CIDR‑блока load balancer.

    Этот параметр доступен только для выделенных load balancer.

    Пример:

    "elb_virsubnet_ids": [
    "14567f27-8ae4-42b8-ae47-9f847a4690dd"
    ]

    Как получить:

    Войдите в VPC console. В панели навигации выберите Subnets. Отфильтруйте целевую подсеть по имени VPC кластера, нажмите имя подсети и скопируйте Network ID на вкладке Summary.

    vip_address

    Нет

    String

    Приватный IP‑адрес load balancer. Поддерживаются только IPv4‑адреса.

    IP‑адрес должен находиться в CIDR‑блоке ELB. Если этот параметр не указан, IP‑адрес будет автоматически назначен из CIDR‑блока ELB.

    Этот параметр доступен только в кластерах v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 и более поздних версиях.

    available_zone

    Да

    Массив строк

    Зона доступности, в которой находится load balancer.

    Этот параметр доступен только для выделенных балансировщиков нагрузки.

    l4_flavor_name

    No

    String

    Имя флейвора балансировщика нагрузки уровня 4. Этот параметр обязателен, когда используется TCP или UDP.

    • Elastic: применяется к переменному трафику, оплата производится на основе общего трафика. Кластеры v1.21.10-r10, v1.23.8-r10, v1.25.3-r10 и более поздние версии поддерживают эластичные спецификации.
    • Fixed: применяется к стабильному трафику, оплата производится на основе спецификаций.

    Этот параметр доступен только для выделенных балансировщиков нагрузки.

    l7_flavor_name

    No

    String

    Имя флейвора балансировщика нагрузки уровня 7. Этот параметр обязателен, когда используется HTTP или HTTPS.

    • Elastic: применяется к переменному трафику, оплата производится на основе общего трафика. Кластеры v1.21.10-r10, v1.23.8-r10, v1.25.3-r10 и более поздние версии поддерживают эластичные спецификации.
    • Fixed: применяется к стабильному трафику, оплата производится на основе спецификаций.

    Этот параметр доступен только для выделенных балансировщиков нагрузки. Его значение должно совпадать со значением l4_flavor_name, при этом оба должны быть либо elastic, либо fixed.

  3. Создайте ingress.

    kubectl create -f ingress-test.yaml

    Если вывод команды содержит "ingress-test created", ingress создан.

  4. Проверьте созданный ingress.

    kubectl get ingress

    Если отображается информация, аналогичная следующей, ingress создан:

    NAME CLASS HOSTS ADDRESS PORTS AGE
    ingress-test cce * 121.**.**.** 80 10s

  5. Введите http://121.**.**.**:80 в адресную строку браузера, чтобы получить доступ к рабочей нагрузке (например, Nginx workload).

    121.**.**.** указывает IP-адрес унифицированного балансировщика нагрузки.

Связывание существующего Load Balancer с ingress при создании ingress

CCE позволяет подключить существующий load balancer при создании ingress.

  1. Используйте kubectl для доступа к кластеру. Подробности см. в Accessing a Cluster Using kubectl.
  2. Создайте файл YAML с именем ingress-test.yaml. Имя файла можно изменить.

    vi ingress-test.yaml
    Note
    • Начиная с кластера v1.23, версия ingress переключается с networking.k8s.io/v1beta1 на networking.k8s.io/v1. Подробности о различиях между v1 и v1beta1 см. в Ingress API Version Upgrade in CCE Clusters v1.23.
    • Существующий выделенный load balancer должен быть типа application (HTTP/HTTPS) и поддерживать частные сети (с частным IP-адресом).

    Если версия кластера 1.23 или новее, конфигурация файла YAML выглядит следующим образом:

    apiVersion: networking.k8s.io/ v1
    kind: Ingress
    metadata:
    name: ingress-test
    annotations:
    kubernetes.io/elb.id: <your_elb_id> # Replace it with the ID of your existing load balancer.
    kubernetes.io/elb.ip: <your_elb_ip> # Replace it with the IP address of your existing load balancer.
    kubernetes.io/elb.class: performance # Load balancer type
    kubernetes.io/elb.port: '80'
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    service:
    name: <your_service_name> # Replace it with your target Service name.
    port:
    number: 8080 # Replace it with your target Service port.
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
    pathType: ImplementationSpecific
    ingressClassName: cce

    Если версия кластера 1.21 или более ранняя, конфигурация файла YAML выглядит следующим образом:

    apiVersion: networking.k8s.io/ v1beta1
    kind: Ingress
    metadata:
    name: ingress-test
    annotations:
    kubernetes.io/elb.id: <your_elb_id> # Replace it with the ID of your existing load balancer.
    kubernetes.io/elb.ip: <your_elb_ip> # Replace it with the IP address of your existing load balancer.
    kubernetes.io/elb.class: performance # Load balancer type
    kubernetes.io/elb.port: '80'
    kubernetes.io/ingress.class: cce
    spec:
    rules:
    - host: ''
    http:
    paths:
    - path: '/'
    backend:
    serviceName: <your_service_name> # Replace it with your target Service name.
    servicePort: 80
    property:
    ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
    Table 3 Ключевые параметры

    Параметр

    Обязательно

    Тип

    Описание

    kubernetes.io/elb.id

    Нет

    Строка

    Идентификатор балансировщика нагрузки. Значение может содержать от 1 до 100 символов.

    Используйте либо этот параметр, либо kubernetes.io/elb.ip. Если они конфликтуют, приоритет будет у kubernetes.io/elb.id. Этот параметр нельзя изменить после создания ingress.

    Как получить:

    В консоли управления нажмите Service List, и выберите Networking > Elastic Load Balance. Нажмите название целевого балансировщика нагрузки. На вкладке Summary найдите и скопируйте идентификатор.

    kubernetes.io/elb.ip

    Нет

    Строка

    IP-адрес балансировщика нагрузки.

    Используйте либо этот параметр, либо kubernetes.io/elb.id. Если они конфликтуют, приоритет будет у kubernetes.io/elb.id. Этот параметр нельзя изменить после создания ingress.

    При создании ingress укажите публичный или частный IP-адрес для совместно используемого балансировщика нагрузки. Для выделенного балансировщика нагрузки можно указать только частный IP-адрес.

    kubernetes.io/elb.class

    Yes

    String

    Тип балансировщика нагрузки. Этот параметр нельзя изменить после создания ingress.

    • union: совместно используемый балансировщик нагрузки
    • performance: выделенный балансировщик нагрузки, который можно использовать только в кластерах v1.17 и новее.
    ПРИМЕЧАНИЕ:

    Если ingress типа LoadBalancer обращается к существующему выделенному балансировщику нагрузки, выделенный балансировщик нагрузки должен быть типа application load balancing (HTTP/HTTPS).

    kubernetes.io/elb.port

    No

    String

    Внешний порт, зарегистрированный в адресе службы LoadBalancer.

    Значение может принимать диапазон от 1 до 65535. Значение по умолчанию — 80 для HTTP и 443 для HTTPS.

    ПРИМЕЧАНИЕ:
    • Некоторые порты на совместном load balancer являются высоко рискованными и по умолчанию блокируются, например, порт 21.
    • Если вы выбираете существующий load balancer, порты listener разных кластеров нельзя переиспользовать. Несколько ingress в одном кластере могут использовать один и тот же порт listener, но рабочая конфигурация listener определяется самой ранней конфигурацией ingress.

  3. Создайте ingress.

    kubectl create -f ingress-test.yaml

    Если вывод команды содержит "ingress-test created", ingress был создан.

  4. Проверьте созданный ingress.

    kubectl get ingress

    Если отображается информация, аналогичная следующей, ingress был создан:

    NAME CLASS HOSTS ADDRESS PORTS AGE
    ingress-test cce * 121.**.**.** 80 10s

  5. Введите http://121.**.**.**:80 в адресную строку браузера, чтобы получить доступ к workload (например, Nginx workload).

    121.**.**.** указывает IP-адрес унифицированного load balancer.