В этом разделе в качестве примера используется Nginx workload, чтобы описать, как создать LoadBalancer ingress с помощью kubectl.
Ниже описано, как выполнить команду kubectl для автоматического создания load balancer при создании Ingress.
vi ingress-test.yaml
Начиная с кластера 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 и новее:
Пример общего балансировщика нагрузки (доступ из публичной сети) для кластеров v1.21 и более ранних:
Пример выделенного балансировщика нагрузки (доступ из публичной сети) для кластеров v1.23 и более новых:
Пример выделенного балансировщика нагрузки (доступ из публичной сети) для кластеров v1.21 и более ранних:
Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
kubernetes.io/elb.class | Да | String | Выберите подходящий тип балансировщика нагрузки. Этот параметр нельзя изменить после создания ingress.
|
kubernetes.io/ingress.class | Yes (только для кластеров v1.21 или более ранних) | String | cce: используется проприетарный LoadBalancer ingress. Этот параметр обязателен при создании ingress. |
ingressClassName | Yes (только для кластеров v1.23 или более новых) | String | cce: используется проприетарный LoadBalancer ingress. Этот параметр обязателен при создании ingress. |
kubernetes.io/elb.port | No | String | Этот параметр указывает внешний порт, зарегистрированный с адресом LoadBalancer Service. Значение находится в диапазоне от 1 до 65535. Значение по умолчанию — 80 для HTTP и 443 для HTTPS. ПРИМЕЧАНИЕ: Некоторые порты на совместно используемом load balancer являются высоко рискованными и блокируются по умолчанию, например, порт 21. |
kubernetes.io/elb.subnet-id | None | String | ID подсети, в которой находится кластер. Значение может содержать от 1 до 100 символов.
|
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, click название целевого enterprise project. On the enterprise project details page, найдите ID поле и скопируйте ID. |
kubernetes.io/elb.autocreate | Yes | elb.autocreate object | Создавать ли автоматически балансировщик нагрузки, связанный с ingress. Для получения подробной информации о описании поля см. Table 2. Этот параметр нельзя изменить после создания ingress. Пример:
|
kubernetes.io/elb.tags | Нет | String | Определяет, добавлять ли теги ресурсов к балансировщику нагрузки. Эта функция доступна только при автоматическом создании балансировщика нагрузки и когда кластер имеет версию v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 или более новую. Тег имеет формат "key=value". Для разделения нескольких тегов используйте запятые (,). Балансировщик нагрузки поддерживает максимум 20 тегов ресурсов. CCE автоматически добавляет один тег, уменьшая доступную квоту до 19. |
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 (совпадение по префиксу) Параметры:
|
pathType | Да | String | Тип пути. Это поле поддерживается только кластерами версии v1.23 и выше. См. examples сопоставления путей ingress. |
Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
name | Нет | String | Имя автоматически созданного балансировщика нагрузки. Значение может содержать от 1 до 64 символов. Допустимы только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.). По умолчанию: cce-lb+service.UID |
type | No | String | Тип сети балансировщика нагрузки.
По умолчанию: inner |
bandwidth_name | Yes for public network load balancers | String | Имя пропускной способности. Значение по умолчанию: cce-bandwidth-******. Значение может содержать от 1 до 64 символов. Допустимы только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.). |
bandwidth_chargemode | Да для public network load balancers | String | Режим пропускной способности.
|
bandwidth_size | Да для public network load balancers | Integer | Размер пропускной способности. Значение по умолчанию находится в диапазоне от 1 Mbit/s до 2000 Mbit/s. Настройте этот параметр в соответствии с диапазоном пропускной способности, разрешённым в вашем регионе. Минимальный шаг изменения пропускной способности зависит от диапазона пропускной способности. |
bandwidth_sharetype | Да для public network load balancers | String | Режим совместного использования пропускной способности.
|
eip_type | Да для публичных сетевых балансировщиков нагрузки | String | Тип EIP.
Типы различаются по регионам. Подробнее см. консоль EIP. |
vip_subnet_cidr_id | No | 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 | Массив строк | Идентификатор сети подсети, в которой находится балансировщик нагрузки. Эта подсеть используется для выделения IP‑адресов для доступа к серверу back‑end. Если этот параметр не указан, по умолчанию будет использована подсеть, указанная в vip_subnet_cidr_id. Балансировщики нагрузки занимают различное количество IP‑адресов подсети в зависимости от их спецификаций. Не используйте CIDR‑блоки подсетей других ресурсов (например, кластеров или узлов) в качестве CIDR‑блока балансировщика нагрузки. Этот параметр доступен только для выделенных балансировщиков нагрузки. Пример:
Как получить: Войдите в VPC console. В панели навигации выберите Subnets. Отфильтруйте целевую подсеть по имени VPC кластера, нажмите имя подсети и скопируйте Network ID на вкладке Summary. |
vip_address | No | String | Приватный IP-адрес балансировщика нагрузки. Поддерживаются только IPv4-адреса. IP-адрес должен находиться в CIDR-блоке ELB. Если этот параметр не указан, IP-адрес будет автоматически назначен из CIDR-блока ELB. Этот параметр доступен только в кластерах v1.23.11-r0, v1.25.6-r0, v1.27.3-r0 или более поздних версиях. |
available_zone | Yes | Array of strings | Зона доступности, в которой расположен балансировщик нагрузки. Этот параметр доступен только для выделенных балансировщиков нагрузки. |
l4_flavor_name | No | String | Имя флейвора Layer 4 load balancer. Этот параметр обязателен, когда используется TCP или UDP.
Этот параметр доступен только для выделенных load balancer-ов. |
l7_flavor_name | No | String | Имя флейвора Layer 7 load balancer. Этот параметр обязателен, когда используется HTTP.
Этот параметр доступен только для выделенных load balancer-ов. Его значение должно совпадать со значением l4_flavor_name, при этом оба должны быть либо эластичными флейворами, либо фиксированными флейворами. |
kubectl create -f ingress-test.yaml
Если отображается информация, аналогичная следующей, ingress был создан:
ingress/ingress-test created
kubectl get ingress
Если отображается информация, аналогичная следующей, ingress был создан:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-test cce * 121.**.**.** 80 10s
121.**.**.** указывает IP-адрес унифицированного load balancer.
CCE позволяет подключаться к существующему load balancer при создании ingress.
vi ingress-test.yaml
Если версия кластера 1.23 или новее, конфигурация YAML‑файла выглядит следующим образом:
Если версия кластера 1.21 или более ранняя, конфигурация YAML‑файла выглядит следующим образом:
apiVersion: networking.k8s.io/ v1beta1kind: Ingressmetadata:name: ingress-testannotations: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 typekubernetes.io/elb.port: '80'kubernetes.io/ingress.class: ccespec:rules:- host: ''http:paths:- path: '/'backend:serviceName: <your_service_name> # Replace it with the name of your target Service.servicePort: 80property:ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
kubernetes.io/elb.id | Нет | String | Идентификатор балансировщика нагрузки. Значение может содержать от 1 до 100 символов. Используйте либо этот параметр, либо kubernetes.io/elb.ip. Если они конфликтуют, приоритет будет у kubernetes.io/elb.id. Этот параметр нельзя изменить после создания ingress. Как получить: В консоли управления нажмите Service List, выберите Networking > Elastic Load Balance. Нажмите имя целевого балансировщика нагрузки. На вкладке Summary найдите и скопируйте идентификатор. |
kubernetes.io/elb.ip | Нет | String | IP-адрес балансировщика нагрузки. Используйте либо этот параметр, либо kubernetes.io/elb.id. Если они конфликтуют, приоритет будет у kubernetes.io/elb.id. Этот параметр нельзя изменить после создания ingress. При создании ingress указывайте публичный или частный IP-адрес для совместно используемого балансировщика нагрузки. Для выделенного балансировщика нагрузки можно указать только частный IP-адрес. |
kubernetes.io/elb.class | Да | String | Load balancer type. Этот параметр нельзя изменить после создания ingress.
ПРИМЕЧАНИЕ: Если ingress LoadBalancer обращается к существующему выделенному load balancer, выделенный load balancer должен быть типа application load balancing (HTTP/HTTPS). |
kubernetes.io/elb.port | Нет | String | Внешний порт, зарегистрированный с адресом ingress LoadBalancer. Значение находится в диапазоне от 1 до 65535. Значение по умолчанию — 80 для HTTP и 443 для HTTPS. ПРИМЕЧАНИЕ:
|
kubectl create -f ingress-test.yaml
Если отображается информация, аналогичная следующей, ingress был создан:
ingress/ingress-test created
kubectl get ingress
Если отображается информация, аналогичная следующей, ingress был создан:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-test cce * 121.**.**.** 80 10s
121.**.**.** указывает IP-адрес унифицированного балансировщика нагрузки.