# Балансировщики и сеть (https://docs.h3llo.cloud/kubernetes/networking)

> Сервисы типа LoadBalancer, публичные IP и сетевая политика в кластере.

## Сервис LoadBalancer [#сервис-loadbalancer]

Сервис `type: LoadBalancer` получает публичный IP-адрес. Адрес оплачивается как [внешний IP](https://docs.h3llo.cloud/network/public-ip).

```yaml
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 8080
```

```bash
kubectl get svc web   # EXTERNAL-IP — публичный адрес
```

### Свой внешний IP [#свой-внешний-ip]

Закрепить за сервисом заранее выделенный внешний IP проекта можно аннотацией `h3.io/eip-id`:

```yaml
metadata:
  annotations:
    h3.io/eip-id: <ID внешнего IP проекта>
```

- адрес привязывается, если он свободен и принадлежит проекту; иначе в событиях сервиса появится предупреждение
  (`EIPNotFree`, `EIPNotOwned`, `EIPNotFound`);
- смена ID переносит балансировщик на другой адрес примерно за 30 секунд;
- после удаления сервиса адрес остаётся в проекте.

<Preview>
  Аннотация `h3.io/eip-id` работает только в кластерах, размещённых в VPC проекта. Такие кластеры сейчас в режиме
  предварительного доступа. В остальных кластерах аннотация игнорируется, и сервис получает новый адрес.
</Preview>

## Сетевые политики [#сетевые-политики]

В кластерах используется Cilium, поэтому работают стандартные `NetworkPolicy` Kubernetes. Сетевые потоки удобно
смотреть в [Hubble](https://docs.h3llo.cloud/kubernetes/addons#hubble).
