J02.04. Services (Сервисы)

Редактировал(а) Ирина Сафонова 07.01.2024, 00:18

Что такое Services (Сервисы)?

Services (Сервисы) — способ представить приложение, работающее в наборе подов как сетевая служба. Сервис группирует конечные точки подов в единый ресурс, доступ к которому можно получить разными способами.

В Cloud Managed Kubernetes не нужно модифицировать приложение, чтобы использовать незнакомый механизм обнаружения сервисов. Cloud Managed Kubernetes предоставляет подам их IP-адреса и одно DNS-имя для набора. Также Cloud Managed Kubernetes распределяет нагрузку между подами.

Ссылки на документацию

Более подробно в официальной документации Kubernetes.

Типы доступа к сервису


  • Виртуальный IP: основан на уникальном IP-адресе, сгенерированном кластером. Через этот IP-адрес внутри кластера можно получить доступ к сервису. Этот тип подходит для большинства сервисов. Кроме того, к сервису можно получить доступ через NodePort и LoadBalancer за пределами кластера.

В Cloud Managed Kubernetes сервисы с отслеживанием состояния и без него по умолчанию создаются с виртуальным IP-адресом. Если хотите создать Headless-сервис, используйте YAML для непосредственной настройки сервиса.

  • Headless-сервис: кластер не генерирует IP-адрес для сервиса. Сервис доступен напрямую через IP-адрес бэкэнд-пода службы в кластере. Этот тип подходит для серверных разнородных служб, таких как службы, которым необходимо различать мастер и агент.

Необходимые условия перед выполнением настроек


 Перед выполнением настроек должны быть созданы:

Пользователь должен быть приглашен в проект и наделен ролью 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 из консоли.

Значение ключевых слов annotations:kubesphere.io/serviceType может быть определено как: statelessservice, statefulservice, externalservice и None.

Создание сервиса без отслеживания состояния


Создание состоит из следующих последовательных шагов:

1. Открытие дашборда.
2. Ввод основной информации.
3. Установка пода.
4. Определение количества томов.
5. Настройка дополнительных параметров.

При необходимости проверьте параметры настройки.

Шаг 1. Открытие дашборда

1. Перейдите в раздел Services раздела Application Workloads проекта и нажмите кнопку Create.
2. Нажмите на Stateless Service.

Этапы создания сервиса с отслеживанием состояния и сервиса без сохранения состояния одинаковы. В примере процесс создания сервиса без сохранения состояния.

Шаг 2. Ввод основной информации

В отображаемом диалоговом окне доступно поле Version со значением v1. Определите имя сервиса, например,demo-stateless. После введения данных нажмите Next, чтобы продолжить настройку.

  • Name: имя сервиса и развертывания. Имя является уникальным идентификатором.
  • Alias: псевдоним сервиса, упрощающий идентификацию ресурсов.
  • Version: версия содержать только строчные буквы и цифры. Максимально допустимая длина символов —16.

Значение Name используется в обеих конфигурациях: одна для развертывания, а другая — для службы. Чтобы увидеть файл манифеста развертывания в формате YAML, нажмите кнопку Edit YAML в правом верхнем углу. Пример файла.

Пример файла YAML

kind: Deployment

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. После создания сервиса нажмите значок icon справа и выберете параметры в меню, чтобы изменить данные. Например, метаданные, за исключением имени, YAML, порт и доступ в Интернет.

  • Edit Information: просмотр и редактирование основной информации.
  • Edit YAML: просмотр, загрузка, скачивание или обновление файла YAML.
  • Edit Service: просмотр типов доступа и установка селекторов и портов.
  • Edit External Access: изменение метода внешнего доступа к сервису.
  • Delete: при удалении сервиса отображаются связанные ресурсы. Отмеченные ресурсы удаляются вместе с сервисом.

2. Нажмите на название сервиса и ознакомьтесь со сведениями. Нажмите кнопку More, чтобы развернуть раскрывающееся меню.

  • Список подов содержит подробную информацию о поде (состояние, узел, IP-адрес и использование ресурсов).
  • При необходимости:
    • Просмотрите информацию о контейнере, щелкнув элемент Pod.
    • Выведите логи контейнера.
    • Щелкните на под, чтобы посмотреть информацию.

Статус ресурса

1. Перейдите на вкладку Resource Status, чтобы просмотреть информацию о служебных портах, рабочих нагрузках и подах.
2. В области подов щелкните icon, чтобы обновить информацию о поде. Затем щелкните icon, чтобы отобразить/скрыть контейнеры в каждом поде.

Метаданные

Щелкните вкладку Metadata, чтобы просмотреть метки и аннотации сервиса.

События

Щелкните вкладку Events, чтобы просмотреть события сервиса.

В начало 🡱
К следующему разделу 🡲
К предыдущему разделу 🡰