В этом разделе в качестве примера используется 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 | Yes | String | Выберите подходящий тип балансировщика нагрузки. Этот параметр нельзя изменить после создания ingress.
|
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 символов.
|
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 будет удалён, существующий балансировщик нагрузки считается автоматически созданным. Если с балансировщиком нагрузки не связаны другие ресурсы, он также будет удалён. Пример:
|
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 (совпадение по префиксу) Варианты:
|
pathType | Да | Строка | Тип пути. Это поле поддерживается только кластерами v1.23 и более поздними. См. examples сопоставления пути ingress. |
Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
name | No | String | Имя автоматически создаваемого балансировщика нагрузки. Значение может содержать от 1 до 64 символов. Допустимы только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.). По умолчанию: cce-lb+service.UID |
type | No | String | Тип сети балансировщика нагрузки.
По умолчанию: inner |
bandwidth_name | Yes для публичных сетевых балансировщиков нагрузки | String | Имя пропускной способности. Значение по умолчанию — cce-bandwidth-******. Значение может содержать от 1 до 64 символов. Разрешены только буквы, цифры, символы подчеркивания (_), дефисы (-) и точки (.). |
bandwidth_chargemode | Да для балансировщиков нагрузки публичной сети | String | Режим пропускной способности.
|
bandwidth_size | Да для балансировщиков нагрузки публичной сети | Integer | Размер пропускной способности. Значение по умолчанию находится в диапазоне от 1 Mbit/s до 2000 Mbit/s. Настройте этот параметр в соответствии с диапазоном пропускной способности, разрешённым в вашем регионе. Минимальный шаг изменения пропускной способности зависит от диапазона пропускной способности. |
bandwidth_sharetype | Да для балансировщиков нагрузки публичной сети | String | Режим совместного использования пропускной способности.
|
eip_type | Да для балансировщиков нагрузки публичной сети | String | Тип EIP.
Типы различаются по регионам. Для получения подробной информации см. консоль 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. Пример:
Как получить: Войдите в 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.
Этот параметр доступен только для выделенных балансировщиков нагрузки. |
l7_flavor_name | No | String | Имя флейвора балансировщика нагрузки уровня 7. Этот параметр обязателен, когда используется HTTP или HTTPS.
Этот параметр доступен только для выделенных балансировщиков нагрузки. Его значение должно совпадать со значением l4_flavor_name, при этом оба должны быть либо elastic, либо fixed. |
kubectl create -f ingress-test.yaml
Если вывод команды содержит "ingress-test created", ingress создан.
kubectl get ingress
Если отображается информация, аналогичная следующей, ingress создан:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-test cce * 121.**.**.** 80 10s
121.**.**.** указывает IP-адрес унифицированного балансировщика нагрузки.
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 your target Service name.servicePort: 80property:ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
Параметр | Обязательно | Тип | Описание |
|---|---|---|---|
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.
ПРИМЕЧАНИЕ: Если ingress типа LoadBalancer обращается к существующему выделенному балансировщику нагрузки, выделенный балансировщик нагрузки должен быть типа application load balancing (HTTP/HTTPS). |
kubernetes.io/elb.port | No | String | Внешний порт, зарегистрированный в адресе службы LoadBalancer. Значение может принимать диапазон от 1 до 65535. Значение по умолчанию — 80 для HTTP и 443 для HTTPS. ПРИМЕЧАНИЕ:
|
kubectl create -f ingress-test.yaml
Если вывод команды содержит "ingress-test created", ingress был создан.
kubectl get ingress
Если отображается информация, аналогичная следующей, ingress был создан:
NAME CLASS HOSTS ADDRESS PORTS AGEingress-test cce * 121.**.**.** 80 10s
121.**.**.** указывает IP-адрес унифицированного load balancer.