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

- Имя пода (доступна фильтрация).
- Отношение количества работающих контейнеров к общему количеству контейнеров в поде.
- Количество рестартов пода (доступна сортировка).
- Дата создания (доступна сортировка).
- Неймспейс (доступна фильтрация). Нажатие на имя неймспейса открывает дашборд неймспейса. Вы можете ввести значение для фильтрации подов по неймспейсам. Для отмены фильтрации по неймспейсам, в фильтре нажмите Отменить и далее Применить.
- Статус (доступна фильтрация). Возможные значения для выбора в фильтре: Running, Pending, Terminating, CrashLoopBackOff, Completed, Failed, Unknown.
- Какому родительскому объекту подчинен под (доступна фильтрация). Когда под подчинен нагрузке, нажатие на имя нагрузки открывает ее страницу просмотра.
- Узел, на котором размещен под (доступна фильтрация). Нажатие на узел открывает страницу просмотра узла при наличии прав доступа.
- QoS (Quality of Service) пода (доступна фильтрация по: Guaranteed, Burstable, BestEffort). Подробнее о QoS в разделе Вкладка Pod.
- Лейблы пода (по умолчанию колонка Лейблы не отображается). Чтобы просмотреть лейблы подов, нажмите на шестеренку в правом углу таблицы и выберите колонку Лейблы для отображения на экране.
Нажатие на строку пода открывает страницу просмотра пода.
На странице пода можно просмотреть информацию о поде, посмотреть и скачать лог файл контейнеров пода, а также запустить терминал в контейнере. Для перехода в терминал откройте вкладку Терминал. Вкладка отображается, если в контейнере есть shell. Bash не поддерживается.
Обратите внимание! Корректная работа терминала гарантируется только в браузере Google Chrome.
Создание Pod
Чтобы создать под, нажмите на кнопку + Добавить 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 узла.
- при выборе эффекта NoExecute, позволяющего вытеснять уже работающие поды на узле, дополнительно доступна настройка Toleration Seconds периода времени, по истечении которого поды вытесняются с узла. По умолчанию tolerationSeconds равен 5 минутам.
Скриншот

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

На уровне пода вы можете настроить параметры безопасности 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 и применении в кластере на странице;
- выберите Профиль по умолчанию, когда следует использовать профиль по умолчанию для среды выполнения контейнера.
- выберите Профиль не применять, когда не хотите ограничивать доступ к определенным системным вызовам из контейнеров пода.
Скриншот

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

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

Обратите внимание!:
- Если не установлен лимит ограничения памяти для контейнера и не задан лимит по умолчанию, то контейнер может использовать всю память, доступную на узле. Для установления лимита потребления памяти по умолчанию, используйте ресурс LimitRange в неймспейсе, где запущен контейнер.
- Превышение контейнером заданного лимита памяти не допускается. Контейнер становится кандидатом на удаление, если запрашивает больше памяти, чем установленный лимит.
- Если сумма запросов памяти контейнеров пода будет превышать объем памяти узла, то под не сможет быть запущен на узле.
Volumes
В блоке 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

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

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

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

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

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

Просмотр Pod
Страница просмотра пода представляет собой страницу с вкладками:
- Pod
- Контейнеры (имеет индикацию количества)
- Volumes (имеет индикацию количества)
- Безопасность
- Лейблы и аннотации. Содержит список лейблов и аннотаций
- События (имеет индикацию количества)
- Манифест
- Терминал
- Логи
Вкладка Pod
Вкладка Pod содержит сведения о:
Скриншот

- дате и времени создания пода, состоянии, статусе и родительском объекте;
- Quality of Service (QoS) пода. Kubernetes назначает каждому поду QoS на основании установленных запросов и лимитов на ресурсы (Memory и CPU) его контейнерам. QoS используется для принятия решения при вытеснении подов с узла в случае Node Pressure. Первыми будут вытеснены поды с QoS BestEffortPod, далее Burstable и самыми последними при необходимости поды с GuaranteedPod. Присваиваемые классы QoS:
- Guaranteed - у каждого контейнера пода запрос Memory равен лимиту Memory и запрос CPU равен лимиту CPU;
- Burstable - как минимум один контейнер пода имеет запрос или лимит на ресурсы;
- BestEffort - ни один из контейнеров пода не имеет запроса или лимита на ресурсы.
- спецификации пода;
- узле, на котором расположен под. Пользователи, имеющие доступ к просмотру узла, могут перейти на страницу узла, нажав на его имя.
Для статуса пода дополнительно отображается цветовая индикация:
- зеленая, если статус узла Running, Completed;
- желтая, если статус Pending;
- красная, если статус Terminating, CrashLoopBackOff, Failed;
- серая, если Unknown.
Блок Метрики мониторинга отображает данные CPU Usage и Memory Usage пода за прошедший час.
Скриншот

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

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

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

Вкладка “Безопасность” содержит:
- результаты сканирования образов на уязвимости по объектам, содержащимся в этом репликасете (Отображается только если в кластере установлен Модуль сканирования образов контейнеров);
- результаты анализа на соответствие политикам безопасности объектов, содержащихся в этом репликасете (Отображается только если в кластере установлен Модуль анализа конфигураций приложений).
Лейблы и аннотации
Скриншот

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

Вкладка События содержит events пода:
- индикатор типа события;
- дата и время;
- источник события;
- текст сообщения события.
Вкладка Манифест
Скриншот

Вкладка содержит манифест 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 после таймаута. Также это может произойти, когда под удаляется на недоступном узле.
Скриншот

Вкладка Терминал
Если хотя бы в одном из контейнеров пода есть shell, запускается терминал и доступна вкладка Терминал. Bash не поддерживается.
Обратите внимание! Корректная работа терминала гарантируется только в браузере Google Chrome.
Скриншот

Вкладка Логи
На вкладке Логи доступны настройки вывода логов:
Скриншот

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