# Протоколи Service

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->
Якщо ви налаштовуєте <a class='glossary-tooltip' title='Спосіб відкрити доступ до застосунку, що запущений на декількох Podʼах у вигляді мережевої служби.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/services-networking/service/' target='_blank' aria-label='Service'>Service</a>, ви можете обрати будь-який мережевий протокол, що підтримується Kubernetes.

Kubernetes підтримує наступні протоколи для Service:

- [`SCTP`](#protocol-sctp)
- [`TCP`](#protocol-tcp) _(типово)_
- [`UDP`](#protocol-udp)

Коли ви визначаєте Service, ви також можете вказати [протокол застосунку](/docs/concepts/services-networking/service/#application-protocol), який він використовує.

Цей документ описує деякі особливі випадки, всі з яких зазвичай використовують TCP як транспортний протокол:

- [HTTP](#protocol-http-special) та [HTTPS](#protocol-http-special)
- [PROXY protocol](#protocol-proxy-special)
- [TLS](#protocol-tls-special) термінація на балансувальнику навантаження

<!-- body -->

## Підтримувані протоколи {#protocol-support}

Існує 3 допустимі значення для `protocol` порту Service:

### `SCTP` {#protocol-sctp}








  <div class="feature-state-notice feature-stable">
      <span class="feature-state-name">СТАН ФУНКЦІОНАЛУ:</span>
      <code>Kubernetes v1.20 [stable]</code>
    </div>
  



При використанні втулка мережі, що підтримує SCTP-трафік, ви можете використовувати SCTP для більшості Service. Для Service типу `LoadBalancer` підтримка SCTP залежить від можливості постачальника хмарних послуг надавати цю функцію. (Більшість не підтримують).

SCTP не підтримується на вузлах, що працюють під управлінням Windows.

#### Підтримка багатодомашніх SCTP-асоціацій {#caveat-sctp-multihomed}

Підтримка багатодомашніх SCTP-асоціацій вимагає, щоб втулок CNI міг підтримувати призначення декількох інтерфейсів та IP-адрес для Podʼів.

NAT для багатодомашніх SCTP-асоціацій вимагає спеціальної логіки у відповідних модулях ядра.

### `TCP` {#protocol-tcp}

Ви можете використовувати TCP для будь-якого виду Service, і це стандартний протокол.

### `UDP` {#protocol-udp}

Ви можете використовувати UDP для більшості Service. Для Service типу `LoadBalancer` підтримка UDP залежить від можливості постачальника хмарних послуг надавати цю функцію.

## Особливі випадки {#special-cases}

### HTTP {#protocol-http-special}

Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service у режимі LoadBalancer для налаштування балансувальника навантаження поза межами вашого кластера Kubernetes у спеціальному режимі, де балансувальник навантаження вашого постачальника хмарних послуг реалізує зворотнє проксіювання трафіку HTTP / HTTPS, з перенаправленням трафіку на бекенд-точки доступу для цього Service.

Зазвичай, ви встановлюєте протокол для Service як `TCP` і додаєте <a class='glossary-tooltip' title='Ключ-значення, які використовуються для додавання довільних невизначених метаданих до обʼєктів.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/overview/working-with-objects/annotations' target='_blank' aria-label='анотацію'>анотацію</a> (зазвичай специфічну для вашого постачальника хмарних послуг), яка налаштовує балансувальник навантаження для обробки трафіку на рівні HTTP. Ця конфігурація може також включати обслуговування HTTPS (HTTP через TLS) та зворотнє проксіювання plain HTTP до вашого навантаження.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Ви також можете використовувати <a class='glossary-tooltip' title='Обʼєкт API, який управляє зовнішнім доступом до служб в кластері, зазвичай HTTP.' data-bs-toggle='tooltip' data-bs-placement='top' href='/uk/docs/concepts/services-networking/ingress/' target='_blank' aria-label='Ingress'>Ingress</a> для експонування HTTP/HTTPS Service.</div>


Ви можете додатково вказати, що [протокол застосунку](/docs/concepts/services-networking/service/#application-protocol) зʼєднання є `http` або `https`. Використовуйте `http`, якщо сесія від балансувальника навантаження до вашого навантаження є HTTP без TLS, та використовуйте `https`, якщо сесія від балансувальника навантаження до вашого навантаження використовує TLS-шифрування.

### PROXY protocol {#protocol-proxy-special}

Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service із типом `LoadBalancer` для налаштування балансувальника навантаження поза межами самого Kubernetes, який буде перенаправляти зʼєднання, обгорнуті у
[PROXY protocol](https://www.haproxy.org/download/2.5/doc/proxy-protocol.txt).

Балансувальник навантаження тоді надсилає початкову серію октетів, що описують
вхідне зʼєднання, схоже на цей приклад (PROXY protocol v1):

```none
PROXY TCP4 192.0.2.202 10.0.42.7 12345 7\r\n
```

Дані після проксі-протоколу є оригінальними даними від клієнта. Коли будь-яка сторона закриває зʼєднання, балансувальник навантаження також ініціює закриття зʼєднання та надсилає будь-які залишкові дані, якщо це можливо.

Зазвичай, ви визначаєте Service із протоколом `TCP`. Ви також встановлюєте анотацію, специфічну для вашого постачальника хмарних послуг, яка налаштовує балансувальник навантаження обгортати кожне вхідне зʼєднання у PROXY протокол.

### TLS {#protocol-tls-special}

Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service із типом `LoadBalancer` як спосіб налаштування зовнішнього зворотного проксіювання, де зʼєднання від клієнта до балансувальника навантаження зашифроване за допомогою TLS, а балансувальник навантаження виступає як TLS-сервер. Зʼєднання від балансувальника навантаження до вашого навантаження також може бути TLS, або може бути plain text. Точні варіанти залежать від вашого постачальника хмарних послуг або користувацької реалізації Service.

Зазвичай, ви встановлюєте протокол як `TCP` та встановлюєте анотацію (зазвичай специфічну для вашого постачальника хмарних послуг), яка налаштовує балансувальник навантаження виступати як TLS-сервер. Ви б налаштовували TLS-ідентифікацію (як сервер, та можливо також як клієнт, який підключається до вашого навантаження) за допомогою механізмів, специфічних для вашого постачальника хмарних послуг.
