J02.04. Services (Сервисы)
Что такое Services (Сервисы)?
Services (Сервисы) — способ представить приложение, работающее в наборе подов как сетевая служба. Сервис группирует конечные точки подов в единый ресурс, доступ к которому можно получить разными способами.
В Cloud Managed Kubernetes не нужно модифицировать приложение, чтобы использовать незнакомый механизм обнаружения сервисов. Cloud Managed Kubernetes предоставляет подам их IP-адреса и одно DNS-имя для набора. Также Cloud Managed Kubernetes распределяет нагрузку между подами.
Ссылки на документацию
Более подробно в официальной документации Kubernetes.
Типы доступа к сервису
- Виртуальный IP: основан на уникальном IP-адресе, сгенерированном кластером. Через этот IP-адрес внутри кластера можно получить доступ к сервису. Этот тип подходит для большинства сервисов. Кроме того, к сервису можно получить доступ через NodePort и LoadBalancer за пределами кластера.
- Headless-сервис: кластер не генерирует IP-адрес для сервиса. Сервис доступен напрямую через IP-адрес бэкэнд-пода службы в кластере. Этот тип подходит для серверных разнородных служб, таких как службы, которым необходимо различать мастер и агент.
Необходимые условия перед выполнением настроек
Перед выполнением настроек должны быть созданы:
- рабочее пространство,
- проект,
- пользователь project-regular.
Пользователь должен быть приглашен в проект и наделен ролью operator.
Методы создания сервисов
Cloud Managed Kubernetes предоставляет три основных метода создания сервисов:
- Stateless Service,
- Stateful Service,
- External Service.
При необходимости настройте сервис с помощью Specify Workload и Edit YAML в Customize Service.
Метод | Описание |
Stateless Service (сервис без отслеживания состояния) | Является наиболее часто используемым. Сервис определяют шаблон пода для управления статусом пода, включая последовательные обновления и откаты. Рабочая нагрузка развертывания создается при создании сервиса без отслеживания состояния. |
Stateful Service (сервис с отслеживанием состояния) | Сервис используется для управления приложениями с отслеживанием состояния. Сервис обеспечивает:
|
External Service (внешний сервис) | В отличие от Stateless Service и Stateful Service External Servic сопоставляет сервис с DNS-именем, а не селектором. Укажите внешние сервисы в поле External Service Address. Поле помечено как externalName в файле YAML. |
Specify Workload (рабочая нагрузка) | Создание сервиса с существующими подами. |
Edit YAML (редактирование файла YAML) | Создание сервиса напрямую с помощью YAML. При необходимости загрузите и выгрузите файлы конфигурации YAML из консоли. |
Создание сервиса без отслеживания состояния
Создание состоит из следующих последовательных шагов:
1. Открытие дашборда.
2. Ввод основной информации.
3. Установка пода.
4. Определение количества томов.
5. Настройка дополнительных параметров.
При необходимости проверьте параметры настройки.
Шаг 1. Открытие дашборда
1. Перейдите в раздел Services раздела Application Workloads проекта и нажмите кнопку Create.
2. Нажмите на Stateless Service.
Шаг 2. Ввод основной информации
В отображаемом диалоговом окне доступно поле Version со значением v1. Определите имя сервиса, например,demo-stateless. После введения данных нажмите Next, чтобы продолжить настройку.
- Name: имя сервиса и развертывания. Имя является уникальным идентификатором.
- Alias: псевдоним сервиса, упрощающий идентификацию ресурсов.
- Version: версия содержать только строчные буквы и цифры. Максимально допустимая длина символов —16.
Пример файла YAML
metadata:
labels:
version: v1
app: xxx
name: xxx-v1
spec:
selector:
matchLabels:
version: v1
app: xxx
template:
metadata:
labels:
version: v1
app: xxx
---
kind: Service
metadata:
labels:
version: v1
app: xxx
name: xxx
spec:
metadata:
labels:
version: v1
app: xxx
Шаг 3. Установка пода
Чтобы добавить образ контейнера для сервиса, посмотрите детали в разделе Pods.
Шаг 4. Определение количества томов
Укажите количество томов.
Шаг 5. Настройка дополнительных параметров
При необходимости определите политику планирования нод и добавьте метаданные. Доступны две дополнительные опции:
Опция External Access
При необходимости предоставьте доступ к сервису одним из двух способов:
- NodePort: сервис предоставляется на IP-адресе каждой ноды на статическом порту.
- LoadBalancer: клиенты отправляют запросы на IP-адрес балансировщика нагрузки.
Опция Sticky Session (Закрепленная сессия)
При необходимости направьте трафик, отправленный из одного клиентского сеанса, в один и тот же экземпляр приложения с несколькими репликами. Также при необходимости установите максимальное время фиксации сеанса в поле .spec.sessionAffinityConfig.clientIP.timeoutSeconds файла манифеста. Поле по умолчанию равно 10800.
Проверка параметров настройки
При необходимости проверьте параметры настройки.
Страница сведений
1. После создания сервиса нажмите значок справа и выберете параметры в меню, чтобы изменить данные. Например, метаданные, за исключением имени, YAML, порт и доступ в Интернет.
- Edit Information: просмотр и редактирование основной информации.
- Edit YAML: просмотр, загрузка, скачивание или обновление файла YAML.
- Edit Service: просмотр типов доступа и установка селекторов и портов.
- Edit External Access: изменение метода внешнего доступа к сервису.
- Delete: при удалении сервиса отображаются связанные ресурсы. Отмеченные ресурсы удаляются вместе с сервисом.
2. Нажмите на название сервиса и ознакомьтесь со сведениями. Нажмите кнопку More, чтобы развернуть раскрывающееся меню.
- Список подов содержит подробную информацию о поде (состояние, узел, IP-адрес и использование ресурсов).
- При необходимости:
- Просмотрите информацию о контейнере, щелкнув элемент Pod.
- Выведите логи контейнера.
- Щелкните на под, чтобы посмотреть информацию.
Статус ресурса
1. Перейдите на вкладку Resource Status, чтобы просмотреть информацию о служебных портах, рабочих нагрузках и подах.
2. В области подов щелкните , чтобы обновить информацию о поде. Затем щелкните , чтобы отобразить/скрыть контейнеры в каждом поде.
Метаданные
Щелкните вкладку Metadata, чтобы просмотреть метки и аннотации сервиса.
События
Щелкните вкладку Events, чтобы просмотреть события сервиса.