Балансировщики нагрузки

Балансировщик нагрузки в Kubernetes используется для распределения входящего трафика между подами.

В Managed Kubernetes можно предоставлять внешний доступ кластеру с использованием сервиса (Service) с типом type: LoadBalancer, который будет использовать Балансировщик нагрузки Облачной платформы.

Созданный балансировщик нагрузки появится в панели управления в разделе Облачная платформа ⟶ Балансировщики внутри проекта.

Обратите внимание! Рекомендуем все действия с созданными балансировщиками производить только через утилиту kubectl, чтобы избежать некорректного поведения.

Балансировщик с публичным IP-адресом

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

Пример манифеста:

# loadbalancer.yaml
kind: Service
apiVersion: v1
metadata:
  name: loadbalancer
  labels:
    app: webservice
spec:
  type: LoadBalancer
  selector:
    app: webservice
  ports:
  - port: 80
    protocol: TCP

Балансировщик с приватным IP-адресом

Чтобы создать балансировщик с IP-адресом только внутри сети кластера (без получения и оплаты публичного IP-адреса), необходимо использовать аннотацию:

annotations: service.beta.kubernetes.io/openstack-internal-load-balancer: "true"

Пример манифеста:

# loadbalancer.yaml
kind: Service
apiVersion: v1
metadata:
  name: loadbalancer 
  labels:
    app: webservice
  annotations:
    service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
spec:
  type: LoadBalancer
  selector:
    app: webservice
  ports:
  - name: http
    port: 80
    targetPort: 80

Балансировщик с правилом TCP ⟶ Proxy

Чтобы создать балансировщик с правилом TCP ⟶ Proxy, используйте аннотацию:

annotations: loadbalancer.openstack.org/proxy-protocol: "true"

Пример манифеста:

# loadbalancer.yaml
kind: Service
apiVersion: v1
metadata:
  name: loadbalancer 
  annotations:
    loadbalancer.openstack.org/proxy-protocol: "true"
...

Таймаут сессий

Чтобы изменить текущее значение таймаута сессий балансировщика, в манифесте балансировщика добавьте в блок annotations одну из аннотаций в зависимости от типа таймаута:

metadata:
  name: loadbalancer
  annotations:
    loadbalancer.openstack.org/timeout-client-data: "%value%"
    loadbalancer.openstack.org/timeout-member-connect: "%value%"
    loadbalancer.openstack.org/timeout-member-data: "%value%"
    loadbalancer.openstack.org/timeout-tcp-inspect: "%value%"