Pods

Под - это минимальная вычислительная единица, которая объединяет один или несколько контейнеров в кластере. Каждый под имеет набор ресурсов, включая сеть, хранилище и образ контейнера. Каждый под может иметь свое уникальное имя и лейблы, что позволяет легко настраивать его параметры и конфигурацию. Поды также являются обязательными для создания высокодоступных и масштабируемых приложений в кластере.

Страница Pods содержит информацию о созданных подах.

На странице пода можно просмотреть информацию о поде, посмотреть лог контейнеров пода и открыть окно терминала. Для перехода в терминал в правой верхней части окна нажмите на кнопку вызова терминала. Для запуска терминала в контейнере должен быть shell. Bash не поддерживается.

Обратите внимание! Корректная работа терминала гарантируется только в браузере Google Chrome.

При необходимости вы можете скачать лог контейнера пода во время его просмотра. Просмотр полного лога контейнера доступен в консоли/интерфейсе OpenSearch.

Создание Pod

Скриншот

pod1

Чтобы создать под, нажмите на кнопку + Добавить Pod. В блоке Спецификация пода (Pod spec) доступны настройки:

  • использовать ли hostPID? По умолчанию выбрано “нет”.
  • использовать ли сеть хоста? По умолчанию выбрано “нет”.
  • определите политику перезапуска контейнеров. По умолчанию устанавливается Always, то есть контейнер будет перезапускать после любого завершения. Вы можете выбрать политику перезапуска контейнера только в случае его завершения с ошибкой - OnFailure, а также политику, которая не будет перезапускать автоматически завершенный контейнер - Never.
  • выберите секреты образов (Image Pull Secrets) из выпадающего списка. В списке представлены секреты, созданные на вкладке Хранилище раздела Неймспейс.
  • задайте имя хоста контейнера
  • при необходимости создайте Tolerations. Для создания нажмите на + и заполните поля в появившемся окне:
    • при необходимости задайте Ключ Taint узла. Чтобы Toleration распространялся на любые ключи Taints узлов, оставьте поле ключа пустым и выберите оператор Exists, а также задайте Эффект Taint узла;
    • при необходимости задайте Значение Taint узла. Если не заполнено значение, Toleration распространяется на любые значения Taints узлов;
    • выберите Оператор: Exists (существование), Equal (равенство). Укажите Exists, когда необходимо соответствие по ключу Taint узла. Если требуется, чтобы значение соответствовало значению Taint узлов, выберите Equal. По умолчанию установлен Equal.
    • при необходимости задайте время в секундах, в течение которого действует Toleration. По истечении указанного времени под будет вытеснен, если Taint не будет снят с узла.
    • при необходимости задайте Эффект Taint узла: NoSchedule, PreferNoSchedule NoExecute, Любой. Эффект Любой соответствует выбору всех эффектов с указанным ключом Taint узла.
Скриншот

toleration

  • задайте узлы. Для этого нажмите на + в селекторе узлов.
  • выберите ServiceAccountName из выпадающего списка.
  • определите, нужно ли подключить токен учетной записи. По умолчанию значение не задано
Скриншот

podtemplate1

На уровне пода вы можете настроить параметры безопасности Security context, которые будут применены для всех контейнеров пода.

Доступные параметры для конфигурирования Security context:

  • fsGroup - определяет группу файловой системы, в которой будут изменены владелец и разрешения для файлов при монтировании тома в под:
    • Выберите 1. (FSGroup для всех файлов тома), когда необходимо, чтобы FSGroup была владельцем для всех файлов тома. Обратите внимание! Изменение владельца и разрешений всех файлов тома может вызвать задержки запуска пода для больших файловых систем.
    • Выберите 2. (FSGroup только для новых создаваемых файлов), когда следует установить FSGroup владельцем новых создаваемых файлов тома.
    • выберите 3. (rw-rw—-) при необходимости дополнения прав на чтение и запись в создаваемых файлах тома для владельца и пользователей группы владельца.
    • Чтобы отменить свой выбор или, если нет необходимости конфигурировать, укажите Не выбрано.
    • Если fsGroup не выбран, Kubelet не будет изменять владельца и разрешения для файлов тома.
  • Политика изменения FSGroup.:
    • Выберите OnRootMismatch, чтобы разрешения для файлов тома были изменены только в случае несовпадения с разрешениями корневого каталога.
    • При выборе Always всегда будут изменяться разрешения при монтировании тома. Обратите внимание! Политика изменения не применяется к типам томов: secret, configmaps и emptydir.
  • runAsGroup - идентификатор группы для запуска контейнеров в поде, чтобы контейнер не был запущен с привилегиями root. Если не установлен, то основной идентификатор группы (GID) будет root.
  • runAsUser - идентификатор пользователя для запуска контейнеров в поде, чтобы контейнер не был запущен с привилегиями root. Если не установлен, то идентификатор пользователя (UID) будет root.
  • runAsNonRoot - запустить контейнеры без привилегий root. Если хотите, чтобы контейнеры были запущены с привилегиями root выберите Нет, в случае выбора Не определено, параметр не будет установлен в Security context.
  • supplementalGroups - дополнительные идентификаторы групп для применения к процессам в контейнере, а также к GID и fsGroup. Вы можете добавить несколько дополнительных идентификаторов групп. Для этого нажмите + Добавить идентификатор группы и укажите идентификатор, например, 3000.
  • Список значений sysctl +. Чтобы добавить параметры ядра (sysctl), которые необходимо установить, нажмите +, задайте ключ и при необходимости значение ключа для параметра. Обратите внимание! При указании небезопасных sysctl под не будет запущен, пока хотя бы на одном узле не будут включены указанные sysctl.
  • профиль Seccomp:
    • чтобы использовать профиль для контейнеров пода, определенный в файле на узле, выберите Использовать настроенный профиль и укажите имя профиля. Предварительно необходимо установить файл профиля Seccomp на узел. Подробнее о создании профиля Seccomp и применении в кластере на странице;
    • выберите Профиль по умолчанию, когда следует использовать профиль по умолчанию для среды выполнения контейнера.
    • выберите Профиль не применять, когда не хотите ограничивать доступ к определенным системным вызовам из контейнеров пода.
Скриншот

securitycontext1

В блоках Init Контейнера/Контейнеры настройте конфигурацию контейнеров:

  • введите имя контейнера и образа;
  • при необходимости укажите рабочий каталог контейнера (Workdir).
  • выберите политику извлечения изображений. По умолчанию устанавливается Always, то есть kubelet всегда будет пытаться извлечь последний образ. Вы можете выбрать политику завершения контейнера с ошибкой, если извлечение не удастся - IfNotPresent, а также политику, при которой kubelet будет использовать только локальный образ - Never.
  • при необходимости добавьте команды, аргументы, порты и переменные окружения, выберите профиль Seccomp. Обратите внимание! Конфигурация профиля Seccomp в контейнере переопределит настройки профиля, установленные в поде.
  • смонтируйте тома внутрь контейнеров: укажите имя и путь тома (mountPath), способ распространения от хоста к контейнеру и наоборот (mountPropagation, по умолчанию способ не задан), при необходимости путь внутри тома (subPath) и расширенный путь в пределах тома (subPathExpr).
  • укажите запросы и лимиты на ресурсы для контейнера пода. Для этого:
    • выберите единицу измерения (CPU или m) для запроса и лимита CPU и задайте значение;
    • выберите единицу измерения для запроса и лимита Memory и задайте значение. Выбрать можно единицы стандартные для Kubernetes: байт (B), кибибайт (Ki), мебибайт (Mi), гибибайт (Gi).
Скриншот

unitcontainer

На уровне контейнера вы можете настроить параметры безопасности Security context, которые будут применены только для одного контейнера.

Доступные параметры для конфигурирования Security context:

  • runAsGroup - идентификатор группы для запуска контейнера, чтобы контейнер не был запущен с привилегиями root. Если не установлен, то основной идентификатор группы (GID) контейнера будет root.
  • runAsUser - идентификатор пользователя для запуска контейнера, чтобы контейнер не был запущен с привилегиями root. Если не установлен, то основной идентификатор пользователя (UID) контейнера будет root.
  • runAsNonRoot - запустить контейнер без привилегий root. Если необходимо, чтобы контейнер был запущен с привилегиями root выберите Нет, в случае выбора Не определено, параметр не будет установлен в Security context.
  • профиль Seccomp:
    • чтобы использовать профиль для контейнера пода, определенный в файле на узле, выберите Использовать настроенный профиль и укажите имя профиля. Предварительно необходимо установить файл профиля Seccomp на узел. Подробнее о создании профиля Seccomp и применении в кластере на странице;
    • выберите Профиль по умолчанию, когда следует использовать профиль по умолчанию для среды выполнения контейнера.
    • выберите Профиль не применять, когда не хотите ограничивать доступ к определенным системным вызовам из контейнера пода.

Обратите внимание! Конфигурация Security context в контейнере переопределяет настройки контекста, установленные в поде.

Скриншот

securitycontext2

Обратите внимание!:

  • Если не установлен лимит ограничения памяти для контейнера и не задан лимит по умолчанию, то контейнер может использовать всю память, доступную на узле. Для установления лимита потребления памяти по умолчанию, используйте ресурс LimitRange в нейсмпейсе, где запущен контейнер.
  • Превышение контейнером заданного лимита памяти не допускается. Контейнер становится кандидатом на удаление, если запрашивает больше памяти, чем установленный лимит.
  • Если сумма запросов памяти контейнеров пода будет превышать объем памяти узла, то под не сможет быть запущен на узле.

В блоке Volumes добавьте тома (Volumes) в под, которые могут быть смонтированы в контейнеры:

  • введите имя тома (Volume) и выберите один из типов:
    • ConfigMap. Укажите имя ConfigMap и при необходимости режим доступа (defaultMode).
    • DownwardAPI - используйте, если необходимо предоставить информацию о Pod контейнерам Pod. Укажите имя файла хранения поля и добавьте поле Pod. Возможные поля Pod для указания: аннотации, метки, имя и пространство имен.
    • EmptyDir - эфемерный и пустой тип тома для чтения и записи одних и тех же файлов контейнерами Pod. Вы можете выбрать тип носителя, который должен поддерживать этот том, и указать общий объем хранилища, требующийся тому. Чтобы задать общий объем хранилища выберите единицу измерения (байт (B), кибибайт (Ki), мебибайт (Mi), гибибайт (Gi)) и укажите числовое значение. По умолчанию тома хранятся на любом носителе (диск, SSD, сетевое хранилище), выберите medium, чтобы смонтировать файловую систему с поддержкой RAM.
    • PersistentVolumeClaim. Укажите имя pvc и выберите устанавливать ли режим только для чтения для контейнеров пода.
    • Secret - используйте для передачи конфиденциальной информации в Pod. Всегда монтируется в контейнеры Pod в режиме ReadOnly.
    • HostPath монтирует файл или каталог из файловой системы узла хоста в Pod. Укажите путь к каталогу на хосте и тип для HostPath.

В зависимости от выбранного типа тома будут предложены разные параметры для настройки Volume.

Скриншот параметры ConfigMap

volumeadd

Скриншот параметры DownwardAPI

volumedownwardapi

Скриншот параметры EmptyDir

volumeemptydir

Скриншот параметры PersistentVolumeClaim

volumepvc

Скриншот параметры Secret

volumesecret

Скриншот параметры HostPath

volumehostpath

Просмотр Pod

Страница просмотра пода представляет собой страницу с вкладками. Под заголовком с названием пода расположены дата и время создания пода, статус, conditions, сведения о родительском объекте.

Скриншот

pod1

Для статуса пода дополнительно отображается цветовая индикация:

  • зеленая, если статус узла Running, Completed;
  • желтая, если статус Pending;
  • красная, если статус Terminating, CrashLoopBackOff, Failed;
  • серая, если Unknown.

На странице доступны вкладки:

  • Pod
  • Контейнеры (имеет индикацию количества)
  • Volumes (имеет индикацию количества)
  • Безопасность
  • Лейблы и аннотации. Содержит список лейблов и аннотаций
  • События (имеет индикацию количества)
  • Манифест

В правой части экрана доступны иконки для вызова терминала и логов.

Терминал Pod

Для запуска терминала в контейнере должен быть shell. Bash не поддерживается.

Обратите внимание! Корректная работа терминала гарантируется только в браузере Google Chrome.

Скриншот

terminal

Логи Pod

В окне “Просмотр логов контейнера” доступны настройки вывода логов:

Скриншот

podlog1

  • выбрать контейнер пода;
  • выключить/отключить:
    • автообновление;
    • отображение временной метки;
    • отображение предыдущего лога;
  • задать количество записей логов для вывода в окне просмотра. По умолчанию выводится 100 записей логов;
  • задать диапазон времени, по которому необходимо просмотреть логи. Можно задать диапазон одним из способов:
    • выбрать начальную дату и время. Логи будут выведены начиная с указанной даты.
    • указать диапазон в секундах. Логи будут выведены за прошедшие указанные секунды.
  • скачать log файл. Cкачивание происходит в файл с расширением .log, название которого предзаполнено и совпадает с наименованием контейнера.
  • выполнить поиск по тексту логов. Введите в поле Поиск по тексту данные для поиска. Начиная с первого символа выполняется поиск по тексту.
  • сбросить настройки отображения по умолчанию.

Вкладка Pod содержит сведения о:

  • состоянии, статусе и подчинении пода;
  • спецификации пода;
  • узле, на котором расположен под. Пользователи, имеющие доступ к просмотру узла, могут перейти на страницу узла, нажав на его имя.

Блок Метрики мониторинга отображает данные CPU Usage и Memory Usage пода за прошедший час.

Скриншот

podmetrics

Вкладка Контейнеры

Скриншот

podcontainer

Вкладка Контейнеры содержит список контейнеров и Init контейнеров пода. Нажатие на имя контейнера в списке раскрывает блок с данными по контейнеру.

Вкладка Volumes

Скриншот

podvolumes

Вкладка Volumes содержит список томов (Volumes) пода, смонтированых в контейнеры. Нажатие на строку тома в списке открывает окно со сведениями тома.

Вкладка События

Скриншот

podevent

Вкладка События содержит events пода:

  • индикатор типа события;
  • дата и время;
  • источник события;
  • текст сообщения события.

Вкладка Безопасность

Скриншот

podsecure

Вкладка “Безопасность” содержит:

  • результаты сканирования образов на уязвимости по объектам, содержащимся в этом репликасете (Отображается только если в кластере установлен Модуль сканирования образов контейнеров);
  • результаты анализа на соответствие политикам безопасности объектов, содержащихся в этом репликасете (Отображается только если в кластере установлен Модуль анализа конфигураций приложений).

Вкладка Манифест

Скриншот

podmanifest

Вкладка содержит манифест Pod, в который вы не можете внести изменения, если Pod подчинен любому другому объекту Kubernetes.

В случае, если Pod был создан отдельностоящим вы можете изменить в манифесте только следующие поля:

  • spec.containers[*].image
  • spec.initContainers[*].image
  • spec.activeDeadlineSeconds
  • spec.tolerations
  • spec.terminationGracePeriodSeconds

Обратите внимание! После сохранения изменений манифеста, Pod не будет перезапущен в новой конфигурации. Для перезапуска пода с новой конфигурацией необходимо выполнить команду вручную через консольный интерфейс Kubectl.

Для изменения существующих отдельностоящих подов при необходимости редактирования, рекомендуется удалить Pod в старой конфигурации и создать новый. Используйте ресурсы kubernetes (Deployments, StatefulSets DaemonSets), управляющие перезапуском подов самостоятельно.

Чтобы удалить под, на странице Pods нажмите в строке пода или на странице просмотра пода нажмите Удалить. При удалении вы можете:

  • удалить - выполняется корректное завершение и удаление пода. Если поды зависли в состоянии Terminating, обычное удаление не сработает.
  • Удалить принудительно, чтобы удалить под в состоянии Terminating. Поды, работающие на недоступном узле, переходят в состояние Terminating после таймаута. Также это может произойти, когда под удаляется на недоступном узле.
Скриншот

poddelete

×