Spec-Zone.ru › Kubernetes 1.25

Под

Под — это набор контейнеров, которые могут выполняться на хосте.

apiVersion: v1

import "k8s.io/api/core/v1"

Под

Под — это набор контейнеров, которые могут выполняться на хосте. Этот ресурс создаётся клиентами и планируется на хосты.

  • apiVersion: v1

  • kind: Под

  • metadata (ObjectMeta)

    Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (PodSpec)

    Описание желаемого поведения под. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

  • status (PodStatus)

    Последний наблюдаемый статус под. Данные могут быть неактуальными. Заполняется системой. Только для чтения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

PodSpec

PodSpec — описание под.

Контейнеры

  • containers ([]Container), обязательно

    Стратегия патча: слияние по ключу name

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

  • initContainers ([]Container)

    Стратегия патча: слияние по ключу name

    Список инициализационных контейнеров, принадлежащих под. Инициализационные контейнеры выполняются в порядке, предшествующем запуску контейнеров. Если какой-либо инициализационный контейнер завершается ошибкой, под считается завершившимся ошибкой и обрабатывается в соответствии с политикой перезапуска. Имя инициализационного или обычного контейнера должно быть уникальным среди всех контейнеров. Инициализационные контейнеры не могут иметь действий Lifecycle, проверок готовности, проверок на работоспособность или проверок запуска. Требования к ресурсам инициализационного контейнера учитываются при планировании путём поиска наибольшего запроса/лимита для каждого типа ресурса, а затем использования максимума этого значения или суммы значений обычных контейнеров. Ограничения применяются к инициализационным контейнерам аналогичным образом. В настоящее время инициализационные контейнеры нельзя добавлять или удалять. Не может быть обновлён. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

  • ephemeralContainers ([]EphemeralContainer)

    Стратегия патча: слияние по ключу name

    Список временных контейнеров, запущенных в этом под. Временные контейнеры могут быть запущены в существующем под для выполнения действий, инициированных пользователем, таких как отладка. Этот список не может быть задан при создании под, и он не может быть изменён путём обновления спецификации под. Чтобы добавить временный контейнер в существующий под, используйте подресурс ephemeralcontainers под.

  • imagePullSecrets ([]LocalObjectReference)

    Стратегия патча: слияние по ключу name

    ImagePullSecrets — это необязательный список ссылок на секреты в том же пространстве имён для использования при получении любых изображений, используемых этим PodSpec. Если задано, эти секреты будут переданы отдельным реализациям получателя для их использования. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod

  • enableServiceLinks (boolean)

    EnableServiceLinks указывает, нужно ли вводить информацию о сервисах в переменные среды под, соответствующие синтаксису Docker links. Необязательно: по умолчанию true.

  • os (PodOS)

    Указывает операционную систему контейнеров в под. Некоторые поля под и контейнеров ограничены, если это установлено.

    Если поле OS установлено в linux, следующие поля должны быть сброшены: -securityContext.windowsOptions

    Если поле OS установлено в windows, следующие поля должны быть сброшены: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[].securityContext.seLinuxOptions - spec.containers[].securityContext.seccompProfile - spec.containers[].securityContext.capabilities - spec.containers[].securityContext.readOnlyRootFilesystem - spec.containers[].securityContext.privileged - spec.containers[].securityContext.allowPrivilegeEscalation - spec.containers[].securityContext.procMount - spec.containers[].securityContext.runAsUser - spec.containers[].securityContext.runAsGroup

    PodOS определяет параметры ОС под.

    • os.name (строка), обязательно

      Имя — это имя операционной системы. В настоящее время поддерживаются значения linux и windows. Дополнительные значения могут быть определены в будущем и могут быть одним из: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Клиенты должны ожидать обработки дополнительных значений и рассматривать нераспознанные значения в этом поле как os: null

Тома

  • volumes ([]Volume)

    Стратегии патчей: retainKeys, слияние по ключу name

    Список томов, которые могут быть смонтированы контейнерами, принадлежащими под. Дополнительная информация: https://kubernetes.io/docs/concepts/storage/volumes

Планирование

  • nodeSelector (map[string]string)

    NodeSelector — это селектор, который должен быть истинным для того, чтобы под мог поместиться на узле. Селектор, который должен соответствовать меткам узла для планирования под на этом узле. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

  • nodeName (string)

    NodeName — запрос на планирование этого под на конкретный узел. Если он не пустой, планировщик просто планирует этот под на этот узел, предполагая, что он соответствует требованиям ресурсов.

  • affinity (Affinity)

    Если указано, планировочные ограничения под

    Affinity — это группа правил планирования affinity.

    • affinity.nodeAffinity (NodeAffinity)

      Описывает правила планирования affinity узлов для под.

    • affinity.podAffinity (PodAffinity)

      Описывает правила планирования affinity под (например, разместить этот под на том же узле, зоне и т.д., что и некоторые другие поды).

    • affinity.podAntiAffinity (PodAntiAffinity)

      Описывает правила планирования anti-affinity под (например, избежать размещения этого под на том же узле, зоне и т.д., что и некоторые другие поды).

  • tolerations ([]Toleration)

    Если указано, толерантности под.

    Под, к которому прикреплена эта Toleration, допускает любую помету, которая соответствует тройке <ключ, значение, эффект>, используя оператор соответствия .

    • tolerations.key (string)

      Ключ — это ключ метки, к которому применяется толерантность. Пустое значение означает соответствие всем ключам меток. Если ключ пустой, оператор должен быть Exists; эта комбинация означает соответствие всем значениям и всем ключам.

    • tolerations.operator (string)

      Оператор представляет собой отношение ключа к значению. Допустимые операторы — Exists и Equal. По умолчанию используется Equal. Exists эквивалентен подстановке для значения, так что под может допускать все метки определенной категории.

    • tolerations.value (string)

      Значение — это значение метки, с которым соответствует толерантность. Если оператор — Exists, значение должно быть пустым, в противном случае — просто строка.

    • tolerations.effect (string)

      Эффект указывает эффект метки для соответствия. Пустое значение означает соответствие всем эффектам меток. При указании допустимые значения — NoSchedule, PreferNoSchedule и NoExecute.

    • tolerations.tolerationSeconds (int64)

      TolerationSeconds представляет собой период времени, в течение которого толерантность (которая должна иметь эффект NoExecute, иначе это поле игнорируется) допускает метку. По умолчанию он не установлен, что означает, что толерантность допускает метку навсегда (не выгонять). Нулевые и отрицательные значения будут обрабатываться системой как 0 (выгнать немедленно).

  • schedulerName (string)

    Если указано, под будет передан указанным планировщиком. Если не указано, под будет передан по умолчанию.

  • runtimeClassName (string)

    RuntimeClassName относится к объекту RuntimeClass в группе node.k8s.io, который должен использоваться для запуска этого под. Если ни один ресурс RuntimeClass не соответствует имени класса, под не будет запущен. Если не задано или пусто, будет использоваться «legacy» RuntimeClass, который является неявным классом с пустым определением, использующим обработчик по умолчанию. Дополнительная информация: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class

  • priorityClassName (string)

    Если указано, указывает приоритет под. «system-node-critical» и «system-cluster-critical» — два специальных ключевых слова, которые указывают на самые высокие приоритеты, причем первый — самый высокий приоритет. Любое другое имя должно быть определено путём создания объекта PriorityClass с этим именем. Если не указано, приоритет под будет по умолчанию или нулем, если нет значения по умолчанию.

  • priority (int32)

    Значение приоритета. Различные системные компоненты используют это поле для определения приоритета под. При включенном контроллере приоритета допуска, пользователи не могут установить это поле. Контроллер допуска заполняет это поле из PriorityClassName. Чем выше значение, тем выше приоритет.

  • preemptionPolicy (string)

    PreemptionPolicy — политика для переприоритетизации под с более низким приоритетом. Одно из Never, PreemptLowerPriority. По умолчанию PreemptLowerPriority, если не задано.

  • topologySpreadConstraints ([]TopologySpreadConstraint)

    Стратегия патча: объединение по ключу topologyKey

    В карте: уникальные значения по ключам topologyKey, whenUnsatisfiable будут сохранены во время слияния

    TopologySpreadConstraints описывают, как группа под должны быть распределены по топологическим областям. Планировщик будет планировать под таким образом, чтобы соблюдались ограничения. Все topologySpreadConstraints связываются операцией И.

    TopologySpreadConstraint определяет, как распределить соответствующие под по заданной топологии.

    • topologySpreadConstraints.maxSkew (int32), требуется

      MaxSkew описывает степень, в которой под могут быть неравномерно распределены. Когда whenUnsatisfiable=DoNotSchedule, это максимальное допустимое различие между количеством соответствующих под в целевой топологии и глобальным минимумом. Глобальный минимум — это минимальное количество соответствующих под в допустимой области или ноль, если количество допустимых областей меньше MinDomains. Например, в кластере с 3 зонами MaxSkew установлен в 1, и под с одинаковым labelSelector распределяются как 2/2/1: В этом случае глобальный минимум равен 1. | зона1 | зона2 | зона3 | | P P | P P | P | - если MaxSkew равен 1, входящую под можно запланировать только в зону 3, чтобы получить 2/2/2; планирование ее в зону 1 (зону 2) приведет к тому, что ActualSkew (3-1) в зоне 1 (зоне 2) нарушит MaxSkew (1). - если MaxSkew равен 2, входящую под можно запланировать в любую зону. Когда whenUnsatisfiable=ScheduleAnyway, используется для придания более высокого приоритета топологиям, которые его удовлетворяют. Это обязательное поле. Значение по умолчанию равно 1, а 0 недопустимо.

    • topologySpreadConstraints.topologyKey (string), требуется

      TopologyKey — это ключ меток узлов. Узлы, у которых есть метка с этим ключом и одинаковыми значениями, считаются принадлежащими одной топологии. Мы рассматриваем каждую пару <ключ, значение> как «ведро» и пытаемся поместить в каждое ведро сбалансированное количество под. Мы определяем область как конкретный экземпляр топологии. Кроме того, мы определяем допустимую область как область, узлы которой соответствуют требованиям nodeAffinityPolicy и nodeTaintsPolicy. Например, если TopologyKey равен «kubernetes.io/hostname», каждый узел является областью этой топологии. И, если TopologyKey равен «topology.kubernetes.io/zone», каждая зона является областью этой топологии. Это обязательное поле.

    • topologySpreadConstraints.whenUnsatisfiable (string), требуется

      WhenUnsatisfiable указывает, как обрабатывать под, если она не удовлетворяет ограничению распределения. - DoNotSchedule (по умолчанию) сообщает планировщику не планировать ее. - ScheduleAnyway сообщает планировщику планировать под в любом месте, но придает более высокий приоритет топологиям, которые помогут уменьшить разброс. Ограничение считается «неудовлетворительным» для входящей под тогда и только тогда, когда любое возможное назначение узла для этой под нарушит «MaxSkew» в какой-то топологии. Например, в кластере с 3 зонами MaxSkew установлен в 1, и под с одинаковым labelSelector распределены как 3/1/1: | зона1 | зона2 | зона3 | | P P P | P | P | Если WhenUnsatisfiable установлен в DoNotSchedule, входящую под можно запланировать только в зону 2 (зону 3), чтобы получить 3/2/1 (3/1/2), так как ActualSkew (2-1) в зоне 2 (зоне 3) удовлетворяет MaxSkew (1). Другими словами, кластер все еще может быть несбалансированным, но планировщик не сделает его *более* несбалансированным. Это обязательное поле.

    • topologySpreadConstraints.labelSelector (LabelSelector)

      LabelSelector используется для поиска соответствующих под. Под, которые соответствуют этому labelSelector, подсчитываются для определения количества под в их соответствующей топологической области.

    • topologySpreadConstraints.matchLabelKeys ([]string)

      Атомарно: будет заменено во время слияния

      MatchLabelKeys — это набор ключей меток под, которые будут выбраны для расчета распределения. Ключи используются для поиска значений из меток входящей под, эти метки ключ-значение объединяются с labelSelector для выбора группы существующих под, по которым будет рассчитываться распределение для входящей под. Ключи, которые не существуют в метках входящей под, будут игнорироваться. Нулевой или пустой список означает, что соответствие будет только по labelSelector.

    • topologySpreadConstraints.minDomains (int32)

      MinDomains указывает минимальное количество допустимых областей. Когда количество допустимых областей с соответствующими топологическими ключами меньше minDomains, Под Топологическое Распределение рассматривает «глобальный минимум» как 0, а затем выполняется вычисление Skew. И когда количество допустимых областей с соответствующими топологическими ключами равно или больше minDomains, это значение не влияет на планирование. В результате, когда количество допустимых областей меньше minDomains, планировщик не будет планировать больше maxSkew под в эти области. Если значение равно null, ограничение ведет себя так, как если бы MinDomains было равно 1. Допустимые значения — целые числа, большие 0. Когда значение не равно null, WhenUnsatisfiable должно быть DoNotSchedule.

      Например, в кластере с 3 зонами MaxSkew равен 2, MinDomains равен 5, и под с одинаковым labelSelector распределены как 2/2/2: | зона1 | зона2 | зона3 | | P P | P P | P P | Количество областей меньше 5 (MinDomains), поэтому «глобальный минимум» рассматривается как 0. В этой ситуации новая под с тем же labelSelector не может быть запланирована, потому что вычисленная разница будет 3 (3-0), если новая под запланирована в любую из трех зон, она нарушит MaxSkew.

      Это поле бета-версии и требует, чтобы признак MinDomainsInPodTopologySpread был включен (включен по умолчанию).

    • topologySpreadConstraints.nodeAffinityPolicy (string)

      NodeAffinityPolicy указывает, как мы будем обращаться с nodeAffinity/nodeSelector под при расчете разброса топологии под. Доступные варианты: - Honor: в расчетах учитываются только узлы, соответствующие nodeAffinity/nodeSelector. - Ignore: nodeAffinity/nodeSelector игнорируются. Во всех расчетах учитываются все узлы.

      Если это значение равно null, поведение эквивалентно политике Honor. Это функция уровня alpha, включенная признаком NodeInclusionPolicyInPodTopologySpread.

    • topologySpreadConstraints.nodeTaintsPolicy (string)

      NodeTaintsPolicy указывает, как мы будем обращаться с метками узлов при расчете разброса топологии под. Доступные варианты: - Honor: учитываются узлы без пометок, а также помеченные узлы, для которых у входящей под есть терпимость. - Ignore: метки узлов игнорируются. Все узлы учитываются.

      Если это значение равно null, поведение эквивалентно политике Ignore. Это функция уровня alpha, включенная признаком NodeInclusionPolicyInPodTopologySpread.

  • overhead (map[string]Quantity)

    Overhead представляет собой ресурсный накладные расходы, связанные с запуском под для заданного RuntimeClass. Это поле будет автоматически заполняться во время этапа приема запросов с помощью контроллера приема запросов RuntimeClass. Если контроллер приема запросов RuntimeClass включен, overhead не должен устанавливаться в запросах создания под. Контроллер приема запросов RuntimeClass отклонит запросы создания под, в которых overhead уже установлен. Если RuntimeClass настроен и выбран в PodSpec, Overhead будет установлен на значение, определенное в соответствующем RuntimeClass, в противном случае он останется не заданным и будет обработан как ноль. Дополнительная информация: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md

Жизненный цикл

  • restartPolicy (string)

    Политика перезапуска для всех контейнеров внутри под. Один из Always, OnFailure, Never. По умолчанию Always. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

  • terminationGracePeriodSeconds (int64)

    Необязательный период времени в секундах, необходимый для плавного завершения работы под. Может быть уменьшен в запросе удаления. Значение должно быть неотрицательным целым числом. Значение нуль указывает на немедленное прекращение работы с помощью сигнала kill (нет возможности завершить работу). Если это значение равно null, вместо него будет использоваться значение по умолчанию. Период ожидания — это время в секундах после того, как процессам, выполняющимся в под, отправлен сигнал завершения, и до момента, когда процессы насильственно останавливаются с помощью сигнала kill. Установите это значение больше, чем ожидаемое время очистки для вашего процесса. По умолчанию 30 секунд.

  • activeDeadlineSeconds (int64)

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

  • readinessGates ([]PodReadinessGate)

    Если указано, все контрольные точки готовности будут оценены для готовности под. Под считается готовым, когда все его контейнеры готовы И все условия, указанные в контрольных точках готовности, имеют статус «True» Дополнительная информация: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates

    PodReadinessGate содержит ссылку на состояние под

    • readinessGates.conditionType (string), требуется

      ConditionType относится к состоянию в списке состояний под с соответствующим типом.

Разрешение имени и имени хоста

  • hostname (строка)

    Указывает имя хоста Pod. Если не указано, имя хоста под будет установлено в значение, определённое системой.

  • setHostnameAsFQDN (логическое значение)

    Если true, имя хоста под будет настроено как FQDN под, а не имя листа (по умолчанию). В контейнерах Linux это означает установку FQDN в поле hostname ядра (поле nodename структуры utsname). В контейнерах Windows это означает установку значения реестра hostname для ключа реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters в FQDN. Если у под нет FQDN, это не оказывает никакого эффекта. По умолчанию false.

  • subdomain (строка)

    Если указано, полное имя хоста Pod будет "<hostname>.<subdomain>.<пространство имён под>.svc.<домен кластера>". Если не указано, у под не будет доменного имени.

  • hostAliases ([]HostAlias)

    Стратегия патча: слияние по ключу ip

    HostAliases — это необязательный список хостов и IP-адресов, которые будут внедрены в файл hosts под, если указаны. Это верно только для под без hostNetwork.

    HostAlias содержит отображение между IP-адресом и именами хостов, которые будут внедрены в качестве записи в файл hosts под.

    • hostAliases.hostnames ([]строка)

      Имена хостов для вышеуказанного IP-адреса.

    • hostAliases.ip (строка)

      IP-адрес записи в файле хостов.

  • dnsConfig (PodDNSConfig)

    Указывает параметры DNS под. Параметры, указанные здесь, будут объединены с генерируемой конфигурацией DNS на основе DNSPolicy.

    PodDNSConfig определяет параметры DNS под помимо тех, которые генерируются из DNSPolicy.

    • dnsConfig.nameservers ([]строка)

      Список IP-адресов DNS-серверов. Это будет добавлено к базовым DNS-серверам, сгенерированным из DNSPolicy. Повторные серверы будут удалены.

    • dnsConfig.options ([]PodDNSConfigOption)

      Список параметров DNS-резолвера. Это будет объединён с базовыми параметрами, сгенерированными из DNSPolicy. Повторные записи будут удалены. Параметры разрешения, заданные в параметрах, переопределят те, что появляются в базовом DNSPolicy.

      PodDNSConfigOption определяет параметры DNS-резолвера под.

      • dnsConfig.options.name (строка)

        Обязательно.

      • dnsConfig.options.value (строка)

    • dnsConfig.searches ([]строка)

      Список DNS-доменов поиска для поиска по имени хоста. Это будет добавлено к базовым путям поиска, сгенерированным из DNSPolicy. Повторные пути поиска будут удалены.

  • dnsPolicy (строка)

    Установите политику DNS для под. По умолчанию "ClusterFirst". Допустимые значения: 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' или 'None'. Параметры DNS, заданные в DNSConfig, будут объединены с политикой, выбранной с помощью DNSPolicy. Чтобы установить параметры DNS вместе с hostNetwork, необходимо явно указать политику DNS в 'ClusterFirstWithHostNet'.

Пространства имён хостов

  • hostNetwork (логическое значение)

    Запрошен хостовый сетевой интерфейс для данного под. Использование сетевого пространства имён хоста. Если этот параметр установлен, необходимо указать используемые порты. По умолчанию false.

  • hostPID (логическое значение)

    Использование пространства имён PID хоста. Необязательно: По умолчанию false.

  • hostIPC (логическое значение)

    Использование пространства имён IPC хоста. Необязательно: По умолчанию false.

  • shareProcessNamespace (логическое значение)

    Общий процесс пространства имён между всеми контейнерами в под. Когда это установлено, контейнеры смогут отображать и сигналить процессам из других контейнеров в том же под, и первому процессу в каждом контейнере не будет назначен PID 1. HostPID и ShareProcessNamespace не могут быть одновременно установлены. Необязательно: По умолчанию false.

Учетная запись службы

  • serviceAccountName (строка)

    ServiceAccountName — имя ServiceAccount, которое нужно использовать для запуска данного под. Более подробная информация: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

  • automountServiceAccountToken (логическое значение)

    AutomountServiceAccountToken указывает, следует ли автоматически монтировать токен учетной записи службы.

Контекст безопасности

  • securityContext (PodSecurityContext)

    SecurityContext содержит атрибуты безопасности на уровне под и общие параметры контейнера. Необязательно: по умолчанию пусто. См. описание типа для значений по умолчанию каждого поля.

    PodSecurityContext содержит атрибуты безопасности на уровне под и общие параметры контейнера. Некоторые поля также присутствуют в container.securityContext. Значения полей container.securityContext имеют приоритет над значениями полей PodSecurityContext.

    • securityContext.runAsUser (int64)

      UID для запуска точки входа процесса контейнера. По умолчанию используется пользователь, указанный в метаданных образа, если не указано иное. Также может быть задан в SecurityContext. Если задан как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет для данного контейнера. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

    • securityContext.runAsNonRoot (boolean)

      Указывает, что контейнер должен выполняться пользователем, отличным от root. Если true, Kubelet проверит образ во время выполнения, чтобы убедиться, что он не выполняется с UID 0 (root), и прекратит запуск контейнера, если это произойдет. Если не задано или false, такая проверка не выполняется. Также может быть задан в SecurityContext. Если задан как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет.

    • securityContext.runAsGroup (int64)

      GID для запуска точки входа процесса контейнера. Используется значение по умолчанию во время выполнения, если не указано. Также может быть задан в SecurityContext. Если задан как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет для данного контейнера. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

    • securityContext.supplementalGroups ([]int64)

      Список групп, применяемых к первому процессу, запущенному в каждом контейнере, помимо основной GID контейнера. Если не указано, никакие группы к контейнеру не будут добавлены. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

    • securityContext.fsGroup (int64)

      Специальная дополнительная группа, применяемая ко всем контейнерам в под. Некоторые типы томов позволяют Kubelet изменить владение этим томом, чтобы он принадлежал под:

      1. Владеющая GID будет FSGroup 2. Бит setgid установлен (новые файлы, созданные в томе, будут принадлежать FSGroup) 3. Биты разрешений объединяются с rw-rw----

      Если не задано, Kubelet не будет изменять владение и разрешения никакого тома. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

    • securityContext.fsGroupChangePolicy (string)

      fsGroupChangePolicy определяет поведение изменения владения и разрешений тома перед его экспозицией внутри Pod. Это поле будет применяться только к типам томов, которые поддерживают fsGroup-базированное владение (и разрешения). Оно не будет иметь эффекта для таких временных типов томов, как: secret, configmaps и emptydir. Допустимые значения — "OnRootMismatch" и "Always". Если не указано, используется "Always". Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

    • securityContext.seccompProfile (SeccompProfile)

      Настройки seccomp, используемые контейнерами в этом под. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

      SeccompProfile определяет настройки профиля seccomp для под/контейнера. Может быть задан только один источник профиля.

      • securityContext.seccompProfile.type (string), required

        type указывает, какой тип профиля seccomp будет применен. Допустимые варианты:

        Localhost - должен использоваться профиль, определенный в файле на узле. RuntimeDefault - должен использоваться профиля по умолчанию контейнерного времени выполнения. Unconfined - ни один профиль не должен применяться.

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile указывает, что должен использоваться профиль, определенный в файле на узле. Профиль должен быть предварительно настроен на узле, чтобы работать. Должен быть абсолютный путь, относительно настроенного местоположения профиля seccomp kubelet. Должен быть установлен только если тип равен "Localhost".

    • securityContext.seLinuxOptions (SELinuxOptions)

      SELinux контекст, который должен быть применен ко всем контейнерам. Если не указано, контейнерное время выполнения выделит случайный SELinux контекст для каждого контейнера. Также может быть задан в SecurityContext. Если задан как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет для данного контейнера. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

      SELinuxOptions — это метки, которые будут применены к контейнеру

      • securityContext.seLinuxOptions.level (string)

        Уровень — метка уровня SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.role (string)

        Роль — метка роли SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.type (string)

        Тип — метка типа SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.user (string)

        Пользователь — метка пользователя SELinux, которая применяется к контейнеру.

    • securityContext.sysctls ([]Sysctl)

      Sysctls содержат список именных sysctls, используемых для под. Поды с недопустимыми sysctls (контейнерным временем выполнения) могут не запуститься. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение windows.

      Sysctl определяет системный параметр ядра, который нужно установить

      • securityContext.sysctls.name (string), required

        Имя свойства для установки

      • securityContext.sysctls.value (string), required

        Значение свойства для установки

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      Параметры, специфичные для Windows, применяемые ко всем контейнерам. Если не указано, будут использоваться параметры внутри SecurityContext контейнера. Если заданы как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет. Обратите внимание, что это поле не может быть установлено, когда spec.os.name имеет значение linux.

      WindowsSecurityContextOptions содержат параметры и учетные данные, специфичные для Windows.

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec — место, где веб-хук GMSA (https://github.com/kubernetes-sigs/windows-gmsa) вставляет содержимое спецификации учетных данных GMSA, указанной в поле GMSACredentialSpecName.

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName — имя спецификации учетных данных GMSA для использования.

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess определяет, должен ли контейнер выполняться как контейнер «Host Process». Это поле находится на стадии alpha и будет учитываться только компонентами, которые включают флаг функции WindowsHostProcessContainers. Установка этого поля без флага функции приведет к ошибкам при проверке под. Все контейнеры под должны иметь одинаковое эффективное значение HostProcess (нельзя смешивать контейнеры HostProcess и не-HostProcess). Кроме того, если HostProcess имеет значение true, то HostNetwork также должно иметь значение true.

      • securityContext.windowsOptions.runAsUserName (string)

        Имя пользователя в Windows для запуска точки входа процесса контейнера. По умолчанию используется пользователь, указанный в метаданных образа, если не указано иное. Также может быть задан в PodSecurityContext. Если задан как в SecurityContext, так и в PodSecurityContext, значение, указанное в SecurityContext, имеет приоритет.

Уровень alpha

  • hostUsers (boolean)

    Использовать пользовательское пространство имени хоста. Необязательно: по умолчанию true. Если установлено в true или отсутствует, под будет выполняться в пользовательском пространстве имени хоста, что полезно, когда под нуждается в функции, доступной только в пользовательском пространстве имени хоста, например, загрузке модуля ядра с CAP_SYS_MODULE. Если установлено в false, для под создаётся новое userns. Установка в false полезна для снижения уязвимостей выхода из контейнера, позволяя пользователям запускать свои контейнеры как root, не имея при этом прав root на хосте. Это поле находится на стадии alpha и учитывается только серверами, которые включают функцию UserNamespacesSupport.

Устаревшее

  • serviceAccount (string)

    DeprecatedServiceAccount — устаревший псевдоним для ServiceAccountName. Устарело: используйте serviceAccountName вместо этого.

Контейнер

Один контейнер приложения, который вы хотите запустить в под.

  • name (string), required

    Имя контейнера, указанное как DNS_LABEL. Каждый контейнер в под должен иметь уникальное имя (DNS_LABEL). Не может быть обновлено.

Образ

  • image (string)

    Имя образа контейнера. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images Это поле необязательно, чтобы обеспечить более высокий уровень управления конфигурацией для установки по умолчанию или переопределения образов контейнера в контроллерах рабочей загрузки, таких как Deployments и StatefulSets.

  • imagePullPolicy (string)

    Политика получения образа. Одна из Always, Never, IfNotPresent. По умолчанию Always, если указана метка :latest, или IfNotPresent в противном случае. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images#updating-images

Точка входа

  • команда ([]string)

    Массив точек входа. Не выполняется в оболочке. Изображение контейнера использует ENTRYPOINT, если это не задано. Ссылок на переменные $(VAR_NAME) расширяются с использованием среды контейнера. Если переменную невозможно разрешить, ссылка в входной строке остается без изменений. Двойные $$ сводятся к одному $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" выведет строковый литерал "$(VAR_NAME)". Экранированные ссылки никогда не расширяются, независимо от того, существует ли переменная или нет. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • аргументы ([]string)

    Аргументы для точки входа. Изображение контейнера использует CMD, если это не задано. Ссылок на переменные $(VAR_NAME) расширяются с использованием среды контейнера. Если переменную невозможно разрешить, ссылка в входной строке остается без изменений. Двойные $$ сводятся к одному $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" выведет строковый литерал "$(VAR_NAME)". Экранированные ссылки никогда не расширяются, независимо от того, существует ли переменная или нет. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • рабочаяДиректория (string)

    Рабочая директория контейнера. Если не указано, используется значение по умолчанию среды выполнения контейнера, которое может быть настроено в изображении контейнера. Не может быть обновлено.

Порты

  • порты ([]ContainerPort)

    Стратегия исправления: слияние по ключу containerPort

    Карта: уникальные значения по ключам containerPort, protocol будут сохранены во время слияния

    Список портов для экспорта из контейнера. Отсутствие порта здесь НЕ предотвращает его экспорт. Любой порт, который прослушивает на адрес по умолчанию "0.0.0.0" внутри контейнера, будет доступен из сети. Изменение этого массива с помощью стратегического объединяющего патча может испортить данные. Более подробная информация см. в https://github.com/kubernetes/kubernetes/issues/108255. Не может быть обновлено.

    ContainerPort представляет сетевой порт в одном контейнере.

    • порты.номерПортаКонтейнера (int32), обязательно

      Номер порта для экспорта по IP-адресу под. Это должен быть действительный номер порта, 0 < x < 65536.

    • порты.хостIP (string)

      Какой IP-адрес хоста привязать к внешнему порту.

    • порты.хостПорт (int32)

      Номер порта для экспорта на хост. Если указано, это должен быть действительный номер порта, 0 < x < 65536. Если указан HostNetwork, это значение должно совпадать с ContainerPort. Большинству контейнеров это не нужно.

    • порты.имя (string)

      Если указано, это должно быть имя IANA_SVC_NAME и уникальным в рамках под. Каждый именованный порт в под должен иметь уникальное имя. Имя порта, к которому можно обратиться через службы.

    • порты.протокол (string)

      Протокол для порта. Должен быть UDP, TCP или SCTP. По умолчанию "TCP".

Переменные среды

  • env ([]EnvVar)

    Стратегия исправления: слияние по ключу name

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

    EnvVar представляет переменную среды, присутствующую в контейнере.

    • env.имя (string), обязательно

      Имя переменной среды. Должно быть C_IDENTIFIER.

    • env.значение (string)

      Ссылки на переменные $(VAR_NAME) расширяются с использованием предварительно определенных переменных среды в контейнере и любых переменных среды службы. Если переменную невозможно разрешить, ссылка в входной строке остается без изменений. Двойные $$ сводятся к одному $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" выведет строковый литерал "$(VAR_NAME)". Экранированные ссылки никогда не расширяются, независимо от того, существует ли переменная или нет. По умолчанию "".

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource представляет источник значения EnvVar.

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        Выбирает ключ из ConfigMap.

        Выбирает ключ из ConfigMap.

        • env.valueFrom.configMapKeyRef.ключ (string), обязательно

          Ключ для выбора.

        • env.valueFrom.configMapKeyRef.имя (string)

          Имя объекта-ссылки. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.необязательно (boolean)

          Указывает, должно ли быть определено ConfigMap или его ключ

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        Выбирает поле под: поддерживаются metadata.name, metadata.namespace, metadata.labels['\<KEY>'], metadata.annotations['\<KEY>'], spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        Выбирает ресурс контейнера: в настоящее время поддерживаются только ограничения и запросы ресурсов (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory и requests.ephemeral-storage).

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        Выбирает ключ секрета в пространстве имен под.

        SecretKeySelector выбирает ключ секрета.

        • env.valueFrom.secretKeyRef.ключ (string), обязательно

          Ключ секрета для выбора. Должен быть действительным ключом секрета.

        • env.valueFrom.secretKeyRef.имя (string)

          Имя объекта-ссылки. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.необязательно (boolean)

          Указывает, должен ли быть определен Secret или его ключ

  • envFrom ([]EnvFromSource)

    Список источников для заполнения переменных среды в контейнере. Ключи, определенные в источнике, должны быть C_IDENTIFIER. Все недопустимые ключи будут сообщены как событие при запуске контейнера. Когда ключ существует в нескольких источниках, значение, связанное с последним источником, будет иметь приоритет. Значения, определенные Env с дублирующимся ключом, будут иметь приоритет. Не может быть обновлено.

    EnvFromSource представляет источник набора ConfigMaps

    • envFrom.configMapRef (ConfigMapEnvSource)

      ConfigMap для выбора.

      *ConfigMapEnvSource выбирает ConfigMap для заполнения переменных среды.

      Содержимое поля Data целевого ConfigMap будет представлять пары «ключ-значение» как переменные среды.*

      • envFrom.configMapRef.имя (string)

        Имя объекта-ссылки. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • envFrom.configMapRef.необязательно (boolean)

        Указывает, должен ли быть определен ConfigMap

    • envFrom.префикс (string)

      Необязательный идентификатор для добавления префикса к каждому ключу в ConfigMap. Должен быть C_IDENTIFIER.

    • envFrom.secretRef (SecretEnvSource)

      Секрет для выбора.

      *SecretEnvSource выбирает Secret для заполнения переменных среды.

      Содержимое поля Data целевого Secret будет представлять пары «ключ-значение» как переменные среды.*

      • envFrom.secretRef.имя (string)

        Имя объекта-ссылки. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • envFrom.secretRef.необязательно (boolean)

        Указывает, должен ли быть определен Secret

Тома

  • volumeMounts ([]VolumeMount)

    Стратегия исправления: слияние по ключу mountPath

    Тома под для подключения в файловую систему контейнера. Не может быть обновлено.

    VolumeMount описывает подключение тома внутри контейнера.

    • volumeMounts.mountPath (string), обязательно

      Путь внутри контейнера, где должен быть подключен том. Не должен содержать ':'.

    • volumeMounts.имя (string), обязательно

      Должно совпадать с именем тома.

    • volumeMounts.mountPropagation (string)

      mountPropagation определяет, как монтирование распространяется с хоста в контейнер и обратно. Если не задано, используется MountPropagationNone. Это поле бета-версии в 1.10.

    • volumeMounts.толькоЧтение (boolean)

      Подключено в режиме только для чтения, если true, в режиме чтения-записи в противном случае (false или не указано). По умолчанию false.

    • volumeMounts.subPath (string)

      Путь внутри тома, из которого должен быть подключен том контейнера. По умолчанию "" (корень тома).

    • volumeMounts.subPathExpr (string)

      Расширенный путь внутри тома, из которого должен быть подключен том контейнера. Поведение аналогично SubPath, но ссылки на переменные среды $(VAR_NAME) расширяются с использованием среды контейнера. По умолчанию "" (корень тома). SubPathExpr и SubPath взаимоисключающие.

  • volumeDevices ([]VolumeDevice)

    Стратегия исправления: слияние по ключу devicePath

    volumeDevices — список блочных устройств, которые будут использоваться контейнером.

    volumeDevice описывает отображение блочного устройства в контейнере.

    • volumeDevices.devicePath (string), обязательно

      devicePath — путь внутри контейнера, к которому будет подключено устройство.

    • volumeDevices.имя (string), обязательно

      имя должно совпадать с именем persistentVolumeClaim в под.

Ресурсы

  • ресурсы (ResourceRequirements)

    Вычислительные ресурсы, необходимые для этого контейнера. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

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

    • resources.limits (map[string]Quantity)

      Limits описывает максимальное количество разрешенных вычислительных ресурсов. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests описывает минимальное количество необходимых вычислительных ресурсов. Если Requests опущено для контейнера, по умолчанию оно равно Limits, если это явно указано, в противном случае — определённое реализацией значение. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Жизненный цикл

  • жизненный цикл (Lifecycle)

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

    Lifecycle описывает действия, которые система управления должна выполнить в ответ на события жизненного цикла контейнера. Для обработчиков жизненного цикла PostStart и PreStop управление контейнером блокируется до завершения действия, если процесс контейнера не завершится неудачно, в этом случае обработчик прерывается.

    • lifecycle.postStart (LifecycleHandler)

      PostStart вызывается сразу после создания контейнера. Если обработчик завершается неудачно, контейнер завершается и перезапускается в соответствии с политикой перезапуска. Другое управление контейнером блокируется до завершения обработчика. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop вызывается непосредственно перед завершением контейнера из-за запроса API или события управления, такого как сбой зондирования готовности/запуска, вытеснение, конкуренция за ресурсы и т. д. Обработчик не вызывается, если контейнер терпит неудачу или завершается. Счётчик времени отсчёта периода завершения Pod запускается до выполнения обработчика PreStop. Независимо от результата обработчика, контейнер в конечном итоге завершится в течение периода завершения Pod (если не задерживается finalizers). Другое управление контейнером блокируется до завершения обработчика или достижения периода завершения. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

  • terminationMessagePath (строка)

    Необязательно: Путь, по которому в файловой системе контейнера монтируется файл, в который запишется сообщение о завершении контейнера. Записанное сообщение предназначено для краткого конечного статуса, такого как сообщение об ошибке проверки. Будет усечено узлом, если превышает 4096 байт. Общая длина сообщения по всем контейнерам будет ограничена 12 КБ. По умолчанию /dev/termination-log. Не может быть обновлено.

  • terminationMessagePolicy (строка)

    Указывает, как должно быть заполнено сообщение о завершении. Файл будет использовать содержимое terminationMessagePath для заполнения сообщения состояния контейнера как при успехе, так и при неудаче. FallbackToLogsOnError будет использовать последний фрагмент вывода логов контейнера, если файл сообщения о завершении пуст, а контейнер завершился с ошибкой. Вывод логов ограничен 2048 байтами или 80 строками, в зависимости от меньшего значения. По умолчанию File. Не может быть обновлено.

  • livenessProbe (Probe)

    Периодическое зондирование готовности контейнера. Контейнер будет перезапущен, если зондирование завершится неудачно. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • readinessProbe (Probe)

    Периодическое зондирование готовности контейнера к работе. Контейнер будет удалён из конечных точек сервиса, если зондирование завершится неудачно. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • startupProbe (Probe)

    StartupProbe указывает, что Pod успешно инициализирован. Если указано, никакие другие зондирования не выполняются, пока это не завершится успешно. Если это зондирование завершается неудачно, Pod будет перезапущен, как если бы завершилось неудачно livenessProbe. Это можно использовать для предоставления различных параметров зондирования в начале жизненного цикла Pod, когда может потребоваться много времени для загрузки данных или разогрева кэша, чем во время стабильной работы. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

Контекст безопасности

  • securityContext (SecurityContext)

    SecurityContext определяет параметры безопасности, с которыми должен запускаться контейнер. Если задано, поля SecurityContext переопределяют эквивалентные поля PodSecurityContext. Дополнительная информация: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

    SecurityContext содержит конфигурацию безопасности, которая будет применена к контейнеру. Некоторые поля присутствуют как в SecurityContext, так и в PodSecurityContext. При одновременной установке, значения в SecurityContext имеют приоритет.

    • securityContext.runAsUser (int64)

      UID для запуска точки входа процесса контейнера. По умолчанию используется значение, указанное в метаданных изображения, если не указано другое. Может также быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.runAsNonRoot (boolean)

      Указывает, что контейнер должен запускаться как пользователь, не являющийся root. Если true, Kubelet проверит изображение во время выполнения, чтобы убедиться, что оно не запускается с UID 0 (root), и прекратит запуск контейнера, если это произойдёт. Если не задано или false, такая проверка не будет выполнена. Может также быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет.

    • securityContext.runAsGroup (int64)

      GID для запуска точки входа процесса контейнера. Используется значение по умолчанию, если не задано. Может также быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.readOnlyRootFilesystem (boolean)

      Определяет, является ли корневой файл системы контейнера только для чтения. По умолчанию false. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.procMount (string)

      procMount определяет тип монтирования proc для контейнеров. По умолчанию используется DefaultProcMount, который использует значения по умолчанию среды выполнения контейнера для путей только для чтения и замаскированных путей. Это требует включенного флага функции ProcMountType. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.privileged (boolean)

      Запустить контейнер в привилегированном режиме. Процессы в привилегированных контейнерах по сути эквивалентны root на хосте. По умолчанию false. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation управляет тем, может ли процесс получить больше привилегий, чем у родительского процесса. Этот bool напрямую управляет, будет ли установлен флаг no_new_privs для процесса контейнера. AllowPrivilegeEscalation всегда true, когда контейнер: 1) запущен в привилегированном режиме 2) имеет CAP_SYS_ADMIN Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

    • securityContext.capabilities (Capabilities)

      Возможности для добавления/удаления при запуске контейнеров. По умолчанию используется набор возможностей, предоставляемых средой выполнения контейнера. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

      Добавляет и удаляет POSIX возможности из работающих контейнеров.

      • securityContext.capabilities.add ([]string)

        Добавленные возможности

      • securityContext.capabilities.drop ([]string)

        Удаленные возможности

    • securityContext.seccompProfile (SeccompProfile)

      Параметры seccomp для использования этим контейнером. Если параметры seccomp указаны как на уровне под, так и на уровне контейнера, параметры контейнера переопределяют параметры под. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

      SeccompProfile определяет параметры профиля seccomp для под/контейнера. Может быть установлен только один источник профиля.

      • securityContext.seccompProfile.type (string), required

        type указывает, какой тип профиля seccomp будет применён. Допустимые варианты:

        Localhost - должен использоваться профиль, определённый в файле на узле. RuntimeDefault - должен использоваться профиль по умолчанию среды выполнения контейнера. Unconfined - профиль не должен применяться.

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile указывает, что должен использоваться профиль, определённый в файле на узле. Профиль должен быть предварительно настроен на узле. Должен быть полным путём, относительным к настроенному расположению профиля seccomp kubelet. Должен быть установлен только в случае, если type равен "Localhost".

    • securityContext.seLinuxOptions (SELinuxOptions)

      Контекст SELinux, который должен быть применён к контейнеру. Если не указан, среда выполнения контейнера назначит случайный контекст SELinux для каждого контейнера. Может также быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно windows.

      SELinuxOptions — метки, которые должны быть применены к контейнеру

      • securityContext.seLinuxOptions.level (string)

        Уровень — метка уровня SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.role (string)

        Роль — метка роли SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.type (string)

        Тип — метка типа SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.user (string)

        Пользователь — метка пользователя SELinux, которая применяется к контейнеру.

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      Параметры, специфичные для Windows, применяемые ко всем контейнерам. Если не указаны, используются параметры из PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет. Обратите внимание, что это поле не может быть установлено, когда spec.os.name равно linux.

      WindowsSecurityContextOptions содержат параметры и учетные данные, специфичные для Windows.

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec — место, где веб-хук GMSA приема (https://github.com/kubernetes-sigs/windows-gmsa) встраивает содержимое спецификации учетных данных GMSA, названной полем GMSACredentialSpecName.

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName — имя спецификации учетных данных GMSA для использования.

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess определяет, должен ли контейнер запускаться как контейнер «Host Process». Это поле находится на стадии alpha и будет поддерживаться только компонентами, которые включат флаг функции WindowsHostProcessContainers. Установка этого поля без флага приведет к ошибкам при проверке Pod. Все контейнеры Pod должны иметь одинаковое эффективное значение HostProcess (нельзя смешивать контейнеры HostProcess и не-HostProcess). Кроме того, если HostProcess имеет значение true, то HostNetwork также должно быть true.

      • securityContext.windowsOptions.runAsUserName (string)

        Имя пользователя в Windows для запуска точки входа процесса контейнера. По умолчанию используется значение, указанное в метаданных изображения, если не указано другое. Может также быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение из SecurityContext имеет приоритет.

Отладка

  • stdin (boolean)

    Определяет, должен ли этот контейнер выделять буфер для stdin в среде выполнения контейнера. Если это не установлено, чтение из stdin в контейнере всегда приведет к EOF. По умолчанию false.

  • stdinOnce (boolean)

    Определяет, должна ли среда выполнения контейнера закрывать канал stdin после того, как он был открыт единственным подключением. Когда stdin равно true, поток stdin остаётся открытым при нескольких сессиях подключения. Если stdinOnce установлено в true, stdin открывается при запуске контейнера, пуст до первого подключения клиента к stdin, а затем остаётся открытым и принимает данные до отключения клиента, в этот момент stdin закрывается и остаётся закрытым до перезапуска контейнера. Если этот флаг равен false, процесс контейнера, который читает из stdin, никогда не получит EOF. По умолчанию false.

  • tty (boolean)

    Определяет, должен ли этот контейнер выделить себе TTY, также требуется, чтобы 'stdin' было true. По умолчанию false.

ВременныйКонтейнер

Временный контейнер — это временный контейнер, который можно добавить к существующему Pod для пользовательских действий, таких как отладка. Временные контейнеры не имеют гарантий ресурсов или планирования, и они не будут перезапущены при выходе из строя или при удалении или перезапуске Pod. Kubelet может выгнать Pod, если временный контейнер приведет к превышению выделенных ресурсов Pod.

Для добавления временного контейнера используйте подресурс ephemeralcontainers существующего Pod. Временные контейнеры нельзя удалить или перезапустить.

  • name (string), required

    Имя временного контейнера, указанное как DNS_LABEL. Это имя должно быть уникальным среди всех контейнеров, контейнеров инициализации и временных контейнеров.

  • targetContainerName (string)

    Если задано, имя контейнера из PodSpec, на который нацелен этот временный контейнер. Временный контейнер будет запущен в пространствах имен (IPC, PID и т. д.) этого контейнера. Если не задано, временный контейнер использует пространства имен, настроенные в спецификации Pod.

    Среда выполнения контейнера должна поддерживать эту функцию. Если среда выполнения не поддерживает нацеливание на пространства имен, результат установки этого поля не определён.

Изображение

  • image (string)

    Имя образа контейнера. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images

  • imagePullPolicy (string)

    Политика получения изображения. Один из Always, Never, IfNotPresent. По умолчанию Always, если указан тэг :latest, или IfNotPresent в противном случае. Не может быть обновлён. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images#updating-images

Точка входа

  • command ([]string)

    Массив точек входа. Не выполняется в оболочке. Если не указано, используется ENTRYPOINT изображения. Ссылки на переменные $(VAR_NAME) расширяются с использованием среды контейнера. Если переменная не может быть разрешена, ссылка в входной строке остается неизменной. Двойные $$ сокращаются до одного $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" даст строковый литерал "$(VAR_NAME)". Экранированные ссылки никогда не будут расширяться, независимо от того, существует переменная или нет. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • args ([]string)

    Аргументы для точки входа. Если не указано, используется CMD изображения. Ссылки на переменные $(VAR_NAME) расширяются с использованием среды контейнера. Если переменная не может быть разрешена, ссылка в входной строке остается неизменной. Двойные $$ сокращаются до одного $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" даст строковый литерал "$(VAR_NAME)". Экранированные ссылки никогда не будут расширяться, независимо от того, существует переменная или нет. Не может быть обновлено. Дополнительная информация: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell

  • workingDir (string)

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

Переменные окружения

  • env ([]EnvVar)

    Стратегия патчинга: слияние по ключу name

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

    EnvVar представляет переменную окружения, присутствующую в контейнере.

    • env.name (string), required

      Имя переменной окружения. Должно быть C_IDENTIFIER.

    • env.value (string)

      Ссылки на переменные $(VAR_NAME) расширяются с использованием ранее определенных переменных окружения в контейнере и любых переменных окружения сервиса. Если переменная не может быть разрешена, ссылка в входной строке остается неизменной. Двойные $$ сокращаются до одного $, что позволяет избежать синтаксиса $(VAR_NAME): например, "$$(VAR_NAME)" даст строковый литерал "$(VAR_NAME)". По умолчанию "".

    • env.valueFrom (EnvVarSource)

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

      EnvVarSource представляет источник значения EnvVar.

      • env.valueFrom.configMapKeyRef (ConfigMapKeySelector)

        Выбирает ключ из ConfigMap.

        Выбирает ключ из ConfigMap.

        • env.valueFrom.configMapKeyRef.key (string), required

          Ключ для выбора.

        • env.valueFrom.configMapKeyRef.name (string)

          Имя объекта. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.configMapKeyRef.optional (boolean)

          Указывает, должен ли быть определен ConfigMap или его ключ

      • env.valueFrom.fieldRef (ObjectFieldSelector)

        Выбирает поле под: поддерживаются metadata.name, metadata.namespace, metadata.labels['\<KEY>'], metadata.annotations['\<KEY>'], spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.

      • env.valueFrom.resourceFieldRef (ResourceFieldSelector)

        Выбирает ресурс контейнера: в настоящее время поддерживаются только ресурсы limits и requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory и requests.ephemeral-storage).

      • env.valueFrom.secretKeyRef (SecretKeySelector)

        Выбирает ключ секрета в пространстве имен под.

        SecretKeySelector выбирает ключ секрета.

        • env.valueFrom.secretKeyRef.key (string), required

          Ключ секрета для выбора. Должен быть допустимым ключом секрета.

        • env.valueFrom.secretKeyRef.name (string)

          Имя объекта. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

        • env.valueFrom.secretKeyRef.optional (boolean)

          Указывает, должен ли быть определен секрет или его ключ

  • envFrom ([]EnvFromSource)

    Список источников для заполнения переменных окружения в контейнере. Ключи, определенные в источнике, должны быть C_IDENTIFIER. Все недопустимые ключи будут сообщены как событие при запуске контейнера. Если ключ существует в нескольких источниках, значение, связанное с последним источником, будет иметь приоритет. Значения, определенные в Env с дублирующим ключом, будут иметь приоритет. Не может быть обновлено.

    EnvFromSource представляет источник набора ConfigMaps

    • envFrom.configMapRef (ConfigMapEnvSource)

      Выбираемый ConfigMap

      *ConfigMapEnvSource выбирает ConfigMap для заполнения переменных окружения.

      Содержимое поля Data целевого ConfigMap будет представлять пары ключ-значение как переменные окружения.*

      • envFrom.configMapRef.name (string)

        Имя объекта. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • envFrom.configMapRef.optional (boolean)

        Указывает, должен ли быть определен ConfigMap

    • envFrom.prefix (string)

      Необязательный идентификатор для добавления к каждому ключу в ConfigMap. Должен быть C_IDENTIFIER.

    • envFrom.secretRef (SecretEnvSource)

      Выбираемый Secret

      *SecretEnvSource выбирает Secret для заполнения переменных окружения.

      Содержимое поля Data целевого Secret будет представлять пары ключ-значение как переменные окружения.*

      • envFrom.secretRef.name (string)

        Имя объекта. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • envFrom.secretRef.optional (boolean)

        Указывает, должен ли быть определен Secret

Тома

  • volumeMounts ([]VolumeMount)

    Стратегия патчинга: слияние по ключу mountPath

    Тома под для монтирования в файловую систему контейнера. Монтирование подпутей не допускается для временных контейнеров. Не может быть обновлено.

    VolumeMount описывает монтирование тома внутри контейнера.

    • volumeMounts.mountPath (string), required

      Путь внутри контейнера, в котором должен быть смонтирован том. Не должен содержать ':'.

    • volumeMounts.name (string), required

      Должно совпадать с именем тома.

    • volumeMounts.mountPropagation (string)

      mountPropagation определяет, как монтирования распространяются от хоста к контейнеру и наоборот. Если не указано, используется MountPropagationNone. Это поле находится в стадии бета-тестирования в 1.10.

    • volumeMounts.readOnly (boolean)

      Монтируется только для чтения, если true, для чтения-записи в противном случае (false или не указано). По умолчанию false.

    • volumeMounts.subPath (string)

      Путь внутри тома, из которого должен быть смонтирован том контейнера. По умолчанию "" (корень тома).

    • volumeMounts.subPathExpr (string)

      Расширенный путь внутри тома, из которого должен быть смонтирован том контейнера. Ведёт себя аналогично SubPath, но ссылки на переменные окружения $(VAR_NAME) расширяются с использованием среды контейнера. По умолчанию "" (корень тома). SubPathExpr и SubPath взаимно исключают друг друга.

  • volumeDevices ([]VolumeDevice)

    Стратегия патчинга: слияние по ключу devicePath

    volumeDevices — список блочных устройств, которые будут использоваться контейнером.

    volumeDevice описывает отображение блочного устройства в контейнере.

    • volumeDevices.devicePath (string), required

      devicePath — путь внутри контейнера, к которому будет подключено устройство.

    • volumeDevices.name (string), required

      name должно совпадать с именем persistentVolumeClaim в pod

Жизненный цикл

  • terminationMessagePath (string)

    Необязательно: Путь, в котором будет смонтирован файл с сообщением завершения контейнера в файловую систему контейнера. Записанное сообщение предназначено для краткого окончательного статуса, например, сообщения об ошибке утверждения. Будет усечено узлом, если превысит 4096 байт. Общий размер сообщения во всех контейнерах будет ограничен 12 КБ. По умолчанию /dev/termination-log. Не может быть обновлено.

  • terminationMessagePolicy (string)

    Указывает, как должно быть заполнено сообщение завершения. Файл будет использовать содержимое terminationMessagePath для заполнения сообщения состояния контейнера при успешном и неудачном завершении. FallbackToLogsOnError будет использовать последний фрагмент вывода журнала контейнера, если файл сообщения завершения пуст, а контейнер завершился с ошибкой. Вывод журнала ограничен 2048 байтами или 80 строками, в зависимости от меньшего значения. По умолчанию File. Не может быть обновлено.

Отладка

  • stdin (boolean)

    Указывает, должен ли этот контейнер выделять буфер для stdin в среде выполнения контейнера. Если это не задано, чтение из stdin в контейнере всегда будет возвращать EOF. По умолчанию значение false.

  • stdinOnce (boolean)

    Указывает, должна ли среда выполнения контейнера закрывать канал stdin после его открытия одним подключением. Если stdin равно true, поток stdin останется открытым для нескольких сессий подключения. Если stdinOnce имеет значение true, stdin открывается при запуске контейнера, пуст до первого подключения клиента к stdin, а затем остается открытым и принимает данные до отключения клиента, после чего stdin закрывается и остается закрытым до перезапуска контейнера. Если этот флаг имеет значение false, процесс контейнера, который читает из stdin, никогда не получит EOF. По умолчанию значение false.

  • tty (boolean)

    Указывает, должен ли этот контейнер выделять для себя TTY, также требуется, чтобы 'stdin' было true. По умолчанию значение false.

Контекст безопасности

  • securityContext (SecurityContext)

    Необязательно: SecurityContext определяет параметры безопасности, с которыми должен запускаться временный контейнер. Если задано, поля SecurityContext переопределяют эквивалентные поля PodSecurityContext.

    SecurityContext хранит конфигурацию безопасности, которая будет применена к контейнеру. Некоторые поля присутствуют как в SecurityContext, так и в PodSecurityContext. Когда оба установлены, значения в SecurityContext имеют приоритет.

    • securityContext.runAsUser (int64)

      UID для запуска точки входа процесса контейнера. По умолчанию используется пользователь, указанный в метаданных образа, если не указано иное. Также может быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.runAsNonRoot (boolean)

      Указывает, что контейнер должен запускаться не как root-пользователь. Если true, Kubelet проверит образ во время выполнения, чтобы убедиться, что он не запущен как UID 0 (root), и не запустит контейнер, если это так. Если не указано или false, такая проверка не будет выполнена. Также может быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет.

    • securityContext.runAsGroup (int64)

      GID для запуска точки входа процесса контейнера. Используется значение по умолчанию среды выполнения, если не указано. Также может быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.readOnlyRootFilesystem (boolean)

      Указывает, имеет ли этот контейнер доступ в режиме только для чтения к корневой файловой системе. По умолчанию значение false. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.procMount (string)

      procMount определяет тип монтирования proc для контейнеров. По умолчанию используется DefaultProcMount, который использует значения по умолчанию среды выполнения для путей readonly и masked paths. Требуется, чтобы флаг ProcMountType был включен. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.privileged (boolean)

      Запустить контейнер в режиме с привилегиями. Процессы в привилегированных контейнерах по сути эквивалентны root в хосте. По умолчанию значение false. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.allowPrivilegeEscalation (boolean)

      AllowPrivilegeEscalation определяет, может ли процесс получить больше привилегий, чем у родительского процесса. Этот булевый параметр напрямую контролирует, будет ли установлен флаг no_new_privs для процесса контейнера. AllowPrivilegeEscalation всегда равен true, когда контейнер: 1) запущен с привилегиями 2) имеет CAP_SYS_ADMIN Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

    • securityContext.capabilities (Capabilities)

      Свойства, которые необходимо добавить/удалить при запуске контейнеров. По умолчанию используется набор свойств, предоставляемых средой выполнения контейнера. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

      Добавляет и удаляет POSIX свойства от запущенных контейнеров.

      • securityContext.capabilities.add ([]string)

        Добавленные свойства

      • securityContext.capabilities.drop ([]string)

        Удаленные свойства

    • securityContext.seccompProfile (SeccompProfile)

      Параметры seccomp для использования этим контейнером. Если параметры seccomp предоставлены как на уровне под, так и на уровне контейнера, параметры контейнера переопределяют параметры под. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

      SeccompProfile определяет настройки профиля seccomp под/контейнера. Может быть установлен только один источник профиля.

      • securityContext.seccompProfile.type (string), required

        type указывает, какой вид профиля seccomp будет применен. Допустимые значения:

        Localhost - должен использоваться профиль, определенный в файле на узле. RuntimeDefault - должен использоваться профиль по умолчанию среды выполнения контейнера. Unconfined - профиль применять не нужно.

      • securityContext.seccompProfile.localhostProfile (string)

        localhostProfile указывает, что должен использоваться профиль, определенный в файле на узле. Профиль должен быть предварительно настроен на узле для работы. Должен быть нисходящим путем, относительным к настроенному местоположению профиля seccomp kubelet. Должен быть установлен только в том случае, если type равен "Localhost".

    • securityContext.seLinuxOptions (SELinuxOptions)

      Контекст SELinux, который должен быть применен к контейнеру. Если не указано, среда выполнения контейнера выделит случайный контекст SELinux для каждого контейнера. Также может быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение windows.

      SELinuxOptions — это метки, которые нужно применить к контейнеру

      • securityContext.seLinuxOptions.level (string)

        Уровень - метка уровня SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.role (string)

        Роль - метка роли SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.type (string)

        Тип - метка типа SELinux, которая применяется к контейнеру.

      • securityContext.seLinuxOptions.user (string)

        Пользователь - метка пользователя SELinux, которая применяется к контейнеру.

    • securityContext.windowsOptions (WindowsSecurityContextOptions)

      Настройки, специфичные для Windows, применяемые ко всем контейнерам. Если не указано, будут использоваться параметры из PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет. Обратите внимание, что это поле нельзя задать, когда spec.os.name имеет значение linux.

      WindowsSecurityContextOptions содержат параметры и учетные данные, специфичные для Windows.

      • securityContext.windowsOptions.gmsaCredentialSpec (string)

        GMSACredentialSpec - место, где веб-хук GMSA приема (https://github.com/kubernetes-sigs/windows-gmsa) вставляет содержимое спецификации учетных данных GMSA, указанное в поле GMSACredentialSpecName.

      • securityContext.windowsOptions.gmsaCredentialSpecName (string)

        GMSACredentialSpecName - имя спецификации учетных данных GMSA для использования.

      • securityContext.windowsOptions.hostProcess (boolean)

        HostProcess определяет, должен ли контейнер запускаться как контейнер «Процесс хоста». Это поле находится на стадии альфа-версии и будет поддерживаться только компонентами, которые включают флаг WindowsHostProcessContainers. Установка этого поля без флага приведет к ошибкам при проверке под. Все контейнеры в под должны иметь одинаковое эффективное значение HostProcess (смесь контейнеров HostProcess и не HostProcess недопустима). Кроме того, если HostProcess равен true, то HostNetwork также должен быть равен true.

      • securityContext.windowsOptions.runAsUserName (string)

        Имя пользователя в Windows для запуска точки входа процесса контейнера. По умолчанию используется пользователь, указанный в метаданных образа, если не указано иное. Также может быть задано в PodSecurityContext. Если задано как в SecurityContext, так и в PodSecurityContext, значение, заданное в SecurityContext, имеет приоритет.

Недопустимые значения

  • порты ([]ContainerPort)

    Стратегия изменения: слияние по ключу containerPort

    Карта: уникальные значения по ключам containerPort, protocol будут сохранены при слиянии

    Порты запрещены для контейнеров без состояния.

    ContainerPort представляет сетевой порт в отдельном контейнере.

    • ports.containerPort (int32), необходимо

      Номер порта для экспонирования на IP-адресе под. Это должен быть действительный номер порта, 0 < x < 65536.

    • ports.hostIP (строка)

      IP-адрес хоста, к которому следует привязать внешний порт.

    • ports.hostPort (int32)

      Номер порта для экспонирования на хосте. Если указано, это должен быть действительный номер порта, 0 < x < 65536. Если указан HostNetwork, это значение должно совпадать с ContainerPort. Большинству контейнеров это не нужно.

    • ports.name (строка)

      Если указано, это должно быть имя IANA_SVC_NAME и уникальным внутри под. Каждый именованный порт в под должен иметь уникальное имя. Имя порта, к которому можно обратиться через сервисы.

    • ports.protocol (строка)

      Протокол для порта. Должен быть UDP, TCP или SCTP. По умолчанию "TCP".

  • resources (ResourceRequirements)

    Ресурсы запрещены для контейнеров без состояния. Контейнеры без состояния используют свободные ресурсы, уже выделенные под.

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

    • resources.limits (map[string]Quantity)

      Limits описывает максимальное количество вычислительных ресурсов, разрешенных для использования. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

    • resources.requests (map[string]Quantity)

      Requests описывает минимальное количество вычислительных ресурсов, необходимых для использования. Если Requests опущено для контейнера, он по умолчанию равен Limits, если это явно указано, в противном случае - определенное реализацией значение. Дополнительная информация: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

  • lifecycle (Lifecycle)

    Lifecycle запрещено для контейнеров без состояния.

    Lifecycle описывает действия, которые система управления должна предпринять в ответ на события жизненного цикла контейнера. Для обработчиков жизненного цикла PostStart и PreStop управление контейнером блокируется до завершения действия, если процесс контейнера завершается неудачно, обработчик прерывается.

    • lifecycle.postStart (LifecycleHandler)

      PostStart вызывается сразу после создания контейнера. Если обработчик завершается неудачно, контейнер завершается и перезапускается в соответствии с политикой перезапуска. Другое управление контейнером блокируется до завершения обработчика. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

    • lifecycle.preStop (LifecycleHandler)

      PreStop вызывается сразу перед завершением контейнера из-за запроса API или события управления, такого как сбой зондирования работоспособности/запуска, вытеснение, конфликт ресурсов и т. д. Обработчик не вызывается, если контейнер терпит неудачу или завершается. Отсчёт таймера периода завершения под начинается до выполнения обработчика PreStop. Независимо от результата обработчика, контейнер в конечном итоге завершится в рамках периода завершения под (если не задерживается finalizers). Другое управление контейнером блокируется до завершения обработчика или до истечения периода завершения. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks

  • livenessProbe (Probe)

    Зондирование работоспособности запрещено для контейнеров без состояния.

  • readinessProbe (Probe)

    Зондирование готовности запрещено для контейнеров без состояния.

  • startupProbe (Probe)

    Зондирование запуска запрещено для контейнеров без состояния.

LifecycleHandler

LifecycleHandler определяет конкретное действие, которое должно быть выполнено при работе с жизненным циклом. Должен быть указан только один из полей, за исключением TCPSocket.

  • exec (ExecAction)

    Exec определяет действие, которое нужно выполнить.

    ExecAction описывает действие «выполнение в контейнере».

    • exec.command ([]string)

      Command — это командная строка для выполнения внутри контейнера, рабочая директория для команды — корень ('/') в файловой системе контейнера. Команда просто выполняется, она не выполняется внутри оболочки, поэтому традиционные оболочковые инструкции ('|', и т. д.) не будут работать. Чтобы использовать оболочку, нужно явно вызвать эту оболочку. Код выхода 0 обрабатывается как активный/здоровый, а ненулевой — как нездоровый.

  • httpGet (HTTPGetAction)

    HTTPGet определяет HTTP-запрос для выполнения.

    HTTPGetAction описывает действие, основанное на HTTP-запросах GET.

    • httpGet.port (IntOrString), необходимо

      Имя или номер порта для доступа к контейнеру. Номер должен быть в диапазоне от 1 до 65535. Имя должно быть именем IANA_SVC_NAME.

      IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML-маршировании и -размаршировании он производит или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.

    • httpGet.host (строка)

      Имя хоста для подключения, по умолчанию IP-адрес под. Вероятно, вы хотите установить «Host» в httpHeaders вместо этого.

    • httpGet.httpHeaders ([]HTTPHeader)

      Настраиваемые заголовки для установки в запросе. HTTP допускает повторяющиеся заголовки.

      HTTPHeader описывает настраиваемый заголовок, используемый в HTTP-зондировании.

      • httpGet.httpHeaders.name (строка), необходимо

        Имя поля заголовка

      • httpGet.httpHeaders.value (строка), необходимо

        Значение поля заголовка

    • httpGet.path (строка)

      Путь для доступа к HTTP-серверу.

    • httpGet.scheme (строка)

      Схема для подключения к хосту. По умолчанию HTTP.

  • tcpSocket (TCPSocketAction)

    Устарело. TCPSocket НЕ поддерживается как LifecycleHandler и сохраняется для обратной совместимости. Нет проверки этого поля, и обработчики жизненного цикла завершатся с ошибкой во время выполнения, когда указан обработчик tcp.

    TCPSocketAction описывает действие, основанное на открытии сокета

    • tcpSocket.port (IntOrString), необходимо

      Номер или имя порта для доступа к контейнеру. Номер должен быть в диапазоне от 1 до 65535. Имя должно быть именем IANA_SVC_NAME.

      IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML-маршировании и -размаршировании он производит или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.

    • tcpSocket.host (строка)

      Необязательно: Имя хоста для подключения, по умолчанию IP-адрес под.

NodeAffinity

Node affinity — это группа правил планирования affinity узла.

  • preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)

    Планировщик отдаст предпочтение планированию под контейнеров на узлы, которые удовлетворяют выражениям сродства, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т. е. для каждого узла, удовлетворяющего всем требованиям планирования (запрос ресурсов, выражения сродства requiredDuringScheduling и т. д.), вычислите сумму, перебирая элементы этого поля и добавляя «вес» к сумме, если узел соответствует соответствующим matchExpressions; узел(ы) с наибольшей суммой являются наиболее предпочтительными.

    Пустое выражение предпочтительного планирования соответствует всем объектам с неявным весом 0 (т. е. это нетдействие). Нулевое выражение предпочтительного планирования не соответствует ни одному объекту (т. е. также является нетдействием).

    • preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), required

      Термин селектора узла, связанный с соответствующим весом.

      Нулевой или пустой термин селектора узла не соответствует ни одному объекту. Требования к ним соединены оператором AND. Тип TopologySelectorTerm реализует подмножество NodeSelectorTerm.

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)

        Список требований селектора узлов по меткам узла.

      • preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)

        Список требований селектора узлов по полям узла.

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

      Вес, связанный с соответствием соответствующему NodeSelectorTerm, в диапазоне от 1 до 100.

  • requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)

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

    Селектор узла представляет собой объединение результатов одного или нескольких запросов меток по набору узлов; то есть он представляет собой операцию OR над селекторами, представленными терминами селектора узлов.

    • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm), required

      Обязательно. Список терминов селектора узлов. Термины соединены оператором OR.

      Нулевой или пустой термин селектора узла не соответствует ни одному объекту. Требования к ним соединены оператором AND. Тип TopologySelectorTerm реализует подмножество NodeSelectorTerm.

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)

        Список требований селектора узлов по меткам узла.

      • requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)

        Список требований селектора узлов по полям узла.

PodAffinity

Pod affinity — это группа правил планирования межпод-сродства.

  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    Планировщик отдаст предпочтение планированию под контейнеров на узлы, которые удовлетворяют выражениям сродства, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т. е. для каждого узла, удовлетворяющего всем требованиям планирования (запрос ресурсов, выражения сродства requiredDuringScheduling и т. д.), вычислите сумму, перебирая элементы этого поля и добавляя «вес» к сумме, если узел имеет под контейнеры, которые соответствуют соответствующему podAffinityTerm; узел(ы) с наибольшей суммой являются наиболее предпочтительными.

    Веса всех сопоставленных полей WeightedPodAffinityTerm складываются по узлу, чтобы найти наиболее предпочтительный узел(ы)

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), required

      Обязательно. Термин сродства под контейнеров, связанный с соответствующим весом.

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

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), required

        Этот под контейнер должен быть сосредоточен (сродство) или не сосредоточен (противосродство) с под контейнерами, соответствующими labelSelector в указанных пространствах имен, где сосредоточение определяется как выполнение на узле, значение метки с ключом topologyKey которого совпадает с любым узлом, на котором выполняется любой из выбранных под контейнеров. Пустой topologyKey недопустим.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        Запрос метки по набору ресурсов, в данном случае под контейнеров.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        Запрос метки по набору пространств имен, к которым относится термин. Термин применяется к объединению пространств имен, выбранных этим полем, и к тем, которые перечислены в поле namespaces. Нулевой селектор и нулевой или пустой список пространств имен означают «пространство имен этого под контейнера». Пустой селектор ({}) соответствует всем пространствам имен.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        namespaces указывает статический список имен пространств имен, к которым относится термин. Термин применяется к объединению пространств имен, перечисленных в этом поле, и к тем, которые выбраны namespaceSelector. Нулевой или пустой список пространств имен и нулевой namespaceSelector означают «пространство имен этого под контейнера».

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

      вес, связанный с соответствием соответствующему podAffinityTerm, в диапазоне от 1 до 100.

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    Если требования сродства, указанные в этом поле, не выполнены во время планирования, под контейнер не будет размещен на узле. Если требования сродства, указанные в этом поле, перестают выполняться в какой-то момент во время выполнения под контейнера (например, из-за обновления метки под контейнера), система может или не может попытаться в конечном итоге изгнать под контейнер с его узла. При наличии нескольких элементов списки узлов, соответствующие каждому podAffinityTerm, пересекаются, т. е. все термины должны быть выполнены.

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

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), required

      Этот под контейнер должен быть сосредоточен (сродство) или не сосредоточен (противосродство) с под контейнерами, соответствующими labelSelector в указанных пространствах имен, где сосредоточение определяется как выполнение на узле, значение метки с ключом topologyKey которого совпадает с любым узлом, на котором выполняется любой из выбранных под контейнеров. Пустой topologyKey недопустим.

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      Запрос метки по набору ресурсов, в данном случае под контейнеров.

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      Запрос метки по набору пространств имен, к которым относится термин. Термин применяется к объединению пространств имен, выбранных этим полем, и к тем, которые перечислены в поле namespaces. Нулевой селектор и нулевой или пустой список пространств имен означают «пространство имен этого под контейнера». Пустой селектор ({}) соответствует всем пространствам имен.

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      namespaces указывает статический список имен пространств имен, к которым относится термин. Термин применяется к объединению пространств имен, перечисленных в этом поле, и к тем, которые выбраны namespaceSelector. Нулевой или пустой список пространств имен и нулевой namespaceSelector означают «пространство имен этого под контейнера».

PodAntiAffinity

Pod anti affinity — это группа правил планирования противосродства межпод.

  • preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)

    Планировщик предпочтительнее разместит под контейнеры на узлах, которые удовлетворяют выражениям антисродства, указанным в этом поле, но может выбрать узел, который нарушает одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т. е. для каждого узла, который удовлетворяет всем требованиям планирования (запросы ресурсов, выражения антисродства requiredDuringScheduling и т. д.), вычислите сумму, проходя по элементам этого поля и добавляя «вес» к сумме, если узел имеет под, который соответствует соответствующему podAffinityTerm; узлы(ы) с наибольшей суммой являются наиболее предпочтительными.

    Веса всех сопоставленных полей WeightedPodAffinityTerm суммируются на узел для определения наиболее предпочтительных узлов(ов)

    • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), required

      Обязательно. Термин под-сродства, связанный с соответствующим весом.

      Определяет набор под контейнеров (а именно, тех, которые соответствуют labelSelector относительно заданного(ых) пространства(ов) имен), с которыми этот под контейнер должен быть расположен вместе (сродство) или не расположен вместе (антисродство), где расположение вместе определяется как запуск на узле, значение метки с ключом которого соответствует значению любого узла, на котором запущен под контейнер из набора под контейнеров

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), required

        Этот под контейнер должен быть расположен вместе (сродство) или не расположен вместе (антисродство) с под контейнерами, соответствующими labelSelector в указанных пространствах имён, где расположение вместе определяется как запуск на узле, значение метки с ключом topologyKey которого соответствует значению любого узла, на котором запущен любой из выбранных под контейнеров. Пустой topologyKey не допускается.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)

        Запрос меток над набором ресурсов, в данном случае под контейнеров.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)

        Запрос меток над набором пространств имен, к которым относится термин. Термин применяется к объединению пространств имён, выбранных в этом поле, и тех, которые перечислены в поле namespaces. Нулевой селектор и нулевой или пустой список namespaces означает "пространство имён этого под контейнера". Пустой селектор ({}) соответствует всем пространствам имён.

      • preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)

        namespaces указывает статический список имён пространств имён, к которым относится термин. Термин применяется к объединению пространств имён, перечисленных в этом поле, и тех, которые выбраны с помощью namespaceSelector. Нулевой или пустой список namespaces и null namespaceSelector означает "пространство имён этого под контейнера".

    • preferredDuringSchedulingIgnoredDuringExecution.weight (int32), required

      Вес, связанный с соответствием соответствующему podAffinityTerm, в диапазоне от 1 до 100.

  • requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)

    Если требования антисродства, указанные в этом поле, не выполняются во время планирования, под контейнер не будет размещён на узле. Если требования антисродства, указанные в этом поле, перестанут выполняться в какой-то момент во время выполнения под контейнера (например, из-за обновления метки под контейнера), система может или не может попытаться в конечном итоге выгнать под контейнер с его узла. При наличии нескольких элементов списки узлов, соответствующие каждому podAffinityTerm, пересекаются, т. е. должны быть выполнены все условия.

    Определяет набор под контейнеров (а именно, тех, которые соответствуют labelSelector относительно заданного(ых) пространства(ов) имен), с которыми этот под контейнер должен быть расположен вместе (сродство) или не расположен вместе (антисродство), где расположение вместе определяется как запуск на узле, значение метки с ключом которого соответствует значению любого узла, на котором запущен под контейнер из набора под контейнеров

    • requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), required

      Этот под контейнер должен быть расположен вместе (сродство) или не расположен вместе (антисродство) с под контейнерами, соответствующими labelSelector в указанных пространствах имён, где расположение вместе определяется как запуск на узле, значение метки с ключом topologyKey которого соответствует значению любого узла, на котором запущен любой из выбранных под контейнеров. Пустой topologyKey не допускается.

    • requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)

      Запрос меток над набором ресурсов, в данном случае под контейнеров.

    • requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)

      Запрос меток над набором пространств имён, к которым относится термин. Термин применяется к объединению пространств имён, выбранных в этом поле, и тех, которые перечислены в поле namespaces. Нулевой селектор и нулевой или пустой список namespaces означает "пространство имён этого под контейнера". Пустой селектор ({}) соответствует всем пространствам имён.

    • requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)

      namespaces указывает статический список имён пространств имён, к которым относится термин. Термин применяется к объединению пространств имён, перечисленных в этом поле, и тех, которые выбраны с помощью namespaceSelector. Нулевой или пустой список namespaces и null namespaceSelector означает "пространство имён этого под контейнера".

Probe

Probe описывает проверку работоспособности, выполняемую для контейнера, чтобы определить, жив ли он или готов принимать трафик.

  • exec (ExecAction)

    Exec указывает действие, которое необходимо выполнить.

    ExecAction описывает действие «запуск в контейнере».

    • exec.command ([]string)

      Command — это команда командной строки, которая должна быть выполнена внутри контейнера; рабочая директория для команды — корень ('/') в файловой системе контейнера. Команда просто выполняется с помощью exec, она не выполняется внутри оболочки, поэтому традиционные оболочковые инструкции ('|', и т.д.) не сработают. Чтобы использовать оболочку, необходимо явно указать эту оболочку. Код завершения 0 обрабатывается как работающий/здоровый, а ненулевой — как нездоровый.

  • httpGet (HTTPGetAction)

    HTTPGet указывает HTTP-запрос, который необходимо выполнить.

    HTTPGetAction описывает действие, основанное на HTTP-GET-запросах.

    • httpGet.port (IntOrString), обязательный параметр

      Имя или номер порта для доступа к контейнеру. Номер должен быть в диапазоне от 1 до 65535. Имя должно быть именем IANA_SVC_NAME.

      IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML маршалинге и анмаршалинге он производит или потребляет внутренний тип. Это позволяет, например, иметь JSON-поле, которое может принимать имя или число.

    • httpGet.host (string)

      Имя хоста для подключения, по умолчанию — IP-адрес под. Возможно, вы захотите установить «Host» в httpHeaders вместо этого.

    • httpGet.httpHeaders ([]HTTPHeader)

      Настраиваемые заголовки для установки в запросе. HTTP позволяет повторять заголовки.

      HTTPHeader описывает настраиваемый заголовок, который будет использоваться в HTTP-зондах

      • httpGet.httpHeaders.name (string), обязательный параметр

        Имя поля заголовка

      • httpGet.httpHeaders.value (string), обязательный параметр

        Значение поля заголовка

    • httpGet.path (string)

      Путь для доступа к HTTP-серверу.

    • httpGet.scheme (string)

      Схема для подключения к хосту. По умолчанию — HTTP.

  • tcpSocket (TCPSocketAction)

    TCPSocket указывает действие, связанное с TCP-портом.

    TCPSocketAction описывает действие, основанное на открытии сокета

    • tcpSocket.port (IntOrString), обязательный параметр

      Номер или имя порта для доступа к контейнеру. Номер должен быть в диапазоне от 1 до 65535. Имя должно быть именем IANA_SVC_NAME.

      IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML маршалинге и анмаршалинге он производит или потребляет внутренний тип. Это позволяет, например, иметь JSON-поле, которое может принимать имя или число.

    • tcpSocket.host (string)

      Необязательно: Имя хоста для подключения, по умолчанию — IP-адрес под.

  • initialDelaySeconds (int32)

    Количество секунд после запуска контейнера, прежде чем будут инициированы зонды готовности. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • terminationGracePeriodSeconds (int64)

    Необязательный период в секундах, в течение которого pod должен корректно завершиться после сбоя зонда. Период — это количество секунд после того, как процессам в pod отправлено сигнала завершения и до момента, когда процессы насильственно остановлены с помощью сигнала kill. Установите это значение больше ожидаемого времени очистки вашего процесса. Если это значение равно null, будет использоваться terminationGracePeriodSeconds pod. В противном случае это значение переопределяет значение, предоставленное в спецификации pod. Значение должно быть неотрицательным целым числом. Значение ноль указывает на немедленное остановку через сигнал kill (без возможности выключения). Это поле находится на стадии бета-тестирования и требует включения функции ProbeTerminationGracePeriod. Минимальное значение равно 1. spec.terminationGracePeriodSeconds используется, если не указано.

  • periodSeconds (int32)

    Частота выполнения зонда (в секундах). По умолчанию 10 секунд. Минимальное значение 1.

  • timeoutSeconds (int32)

    Количество секунд, по истечении которых зонд истекает. По умолчанию 1 секунда. Минимальное значение 1. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes

  • failureThreshold (int32)

    Минимальное количество последовательных сбоев зонда для признания его неисправным после успеха. По умолчанию 3. Минимальное значение 1.

  • successThreshold (int32)

    Минимальное количество последовательных успехов зонда для признания его успешным после сбоя. По умолчанию 1. Должно быть 1 для зондов готовности и запуска. Минимальное значение 1.

  • grpc (GRPCAction)

    GRPC указывает действие, связанное с gRPC-портом. Это поле находится на стадии бета-тестирования и требует включения функции GRPCContainerProbe.

    **

    • grpc.port (int32), обязательный параметр

      Номер порта gRPC-сервиса. Номер должен быть в диапазоне от 1 до 65535.

    • grpc.service (string)

      Service — это имя сервиса, которое следует разместить в запросе проверки gRPC HealthCheckRequest (см. https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

      Если это не указано, то поведение по умолчанию определяется gRPC.

СтатусPod

PodStatus представляет информацию о состоянии под.

  • имяНоминируемогоУзла (строка)

    имяНоминируемогоУзла устанавливается только тогда, когда этот Pod вытесняет другие Pods на узле, но он не может быть запланирован сразу, так как жертвы вытеснения получают свои периоды плавного завершения. Это поле не гарантирует, что Pod будет запланирован на этом узле. Планировщик может принять решение разместить Pod в другом месте, если другие узлы станут доступными раньше. Планировщик также может принять решение предоставить ресурсы на этом узле Pod с более высоким приоритетом, который создан после вытеснения. В результате это поле может отличаться от PodSpec.nodeName, когда Pod запланирован.

  • адресХоста (строка)

    IP-адрес узла, на который назначен Pod. Пусто, если ещё не запланирован.

  • времяНачала (Время)

    Дата и время RFC 3339, в которое объект был подтвержден Kubelet. Это до того, как Kubelet извлек образ(ы) контейнера для Pod.

    Время — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

  • состояние (строка)

    Состояние Pod — это простое, высокоуровневое резюме, описывающее, на каком этапе жизненного цикла находится Pod. Массив условий, поля reason и message, а также индивидуальные массивы состояния контейнеров содержат более подробную информацию о состоянии Pod. Существует пять возможных значений состояния:

    Pending: Pod был принят системой Kubernetes, но один или несколько образов контейнеров ещё не созданы. Это включает время до планирования, а также время, потраченное на загрузку образов по сети, что может занять некоторое время. Running: Pod привязан к узлу, и все контейнеры были созданы. По крайней мере, один контейнер всё ещё работает или находится в процессе запуска или перезапуска. Succeeded: Все контейнеры в Pod завершились успешно и не будут перезапускаться. Failed: Все контейнеры в Pod завершились, и по крайней мере один контейнер завершился с ошибкой. Контейнер либо завершился с ненулевым кодом состояния, либо был завершен системой. Unknown: По какой-то причине состояние Pod не может быть получено, как правило, из-за ошибки при общении с узлом Pod.

    Подробнее: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

  • сообщение (строка)

    Читаемое человеком сообщение, указывающее подробности о причине, по которой Pod находится в этом состоянии.

  • причина (строка)

    Краткое сообщение в формате CamelCase, указывающее подробности о причине, по которой Pod находится в этом состоянии. Например, 'Evicted'

  • IPPod (строка)

    IP-адрес, выделенный Pod. Маршрутизируемый, по крайней мере, внутри кластера. Пусто, если ещё не выделен.

  • podIPs ([]PodIP)

    Стратегия патча: слияние по ключу ip

    podIPs содержит IP-адреса, выделенные Pod. Если это поле указано, 0-й элемент должен соответствовать полю podIP. Pods может быть выделено не более 1 значения для каждого из IPv4 и IPv6. Этот список пуст, если ещё не были выделены никакие IP-адреса.

    *Информация об IP-адресах для элементов поля (множественного числа) PodIPs. Каждый элемент включает:*

    IP: IP-адрес, выделенный Pod. Маршрутизируемый, по крайней мере, внутри кластера.*

    • podIPs.ip (строка)

      ip — IP-адрес (IPv4 или IPv6), назначенный Pod

  • conditions ([]PodCondition)

    Стратегия патча: слияние по ключу type

    Текущее состояние службы Pod. Подробнее: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    PodCondition содержит подробности о текущем состоянии этого Pod.

    • conditions.status (строка), обязательно

      Состояние — состояние условия. Может быть True, False, Unknown. Подробнее: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.type (строка), обязательно

      Тип — тип условия. Подробнее: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

    • conditions.lastProbeTime (Время)

      Последнее время зондирования состояния.

      Время — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

    • conditions.lastTransitionTime (Время)

      Последнее время перехода состояния из одного состояния в другое.

      Время — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

    • conditions.message (строка)

      Читаемое человеком сообщение, указывающее подробности о последнем переходе.

    • conditions.reason (строка)

      Уникальная, однословное, CamelCase причина последнего перехода состояния.

  • классQos (строка)

    Классификация качества обслуживания (QOS), назначенная Pod на основе требований к ресурсам. См. тип PodQOSClass для доступных классов QOS. Подробнее: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md

  • initContainerStatuses ([]ContainerStatus)

    Список содержит по одной записи на каждый контейнер инициализации в манифесте. Самый последний успешно завершенный контейнер инициализации будет иметь ready = true, а у последнего запущенного контейнера будет установлено значение startTime. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

    ContainerStatus содержит данные о текущем состоянии этого контейнера.

    • initContainerStatuses.name (string), required

      Это должно быть значение DNS_LABEL. Каждый контейнер в под должен иметь уникальное имя. Не может быть обновлено.

    • initContainerStatuses.image (string), required

      Изображение, которое выполняется в контейнере. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images.

    • initContainerStatuses.imageID (string), required

      ImageID изображения контейнера.

    • initContainerStatuses.containerID (string)

      Идентификатор контейнера в формате '<type>://<container_id>'.

    • initContainerStatuses.state (ContainerState)

      Подробности о текущем состоянии контейнера.

      ContainerState содержит возможное состояние контейнера. Может быть указано только одно из его членов. Если ни один из них не указан, по умолчанию используется ContainerStateWaiting.

      • initContainerStatuses.state.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние выполнения контейнера.

        • initContainerStatuses.state.running.startedAt (Time)

          Время, когда контейнер был последний раз (пере-)запущен

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

      • initContainerStatuses.state.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • initContainerStatuses.state.terminated.containerID (string)

          Идентификатор контейнера в формате '<type>://<container_id>'

        • initContainerStatuses.state.terminated.exitCode (int32), required

          Код выхода из последнего завершения контейнера

        • initContainerStatuses.state.terminated.startedAt (Time)

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

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

        • initContainerStatuses.state.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

        • initContainerStatuses.state.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • initContainerStatuses.state.terminated.reason (string)

          (краткое) объяснение последнего завершения контейнера

        • initContainerStatuses.state.terminated.signal (int32)

          Сигнал последнего завершения контейнера

      • initContainerStatuses.state.waiting (ContainerStateWaiting)

        Подробности о контейнере в ожидании

        ContainerStateWaiting — это состояние ожидания контейнера.

        • initContainerStatuses.state.waiting.message (string)

          Сообщение о причине, по которой контейнер еще не запущен.

        • initContainerStatuses.state.waiting.reason (string)

          (краткое) объяснение, почему контейнер еще не запущен.

    • initContainerStatuses.lastState (ContainerState)

      Подробности о последнем состоянии завершения контейнера.

      ContainerState содержит возможное состояние контейнера. Может быть указано только одно из его членов. Если ни один из них не указан, по умолчанию используется ContainerStateWaiting.

      • initContainerStatuses.lastState.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние выполнения контейнера.

        • initContainerStatuses.lastState.running.startedAt (Time)

          Время, когда контейнер был последний раз (пере-)запущен

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

      • initContainerStatuses.lastState.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • initContainerStatuses.lastState.terminated.containerID (string)

          Идентификатор контейнера в формате '<type>://<container_id>'

        • initContainerStatuses.lastState.terminated.exitCode (int32), required

          Код выхода из последнего завершения контейнера

        • initContainerStatuses.lastState.terminated.startedAt (Time)

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

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

        • initContainerStatuses.lastState.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих фабричных методов пакета time предоставлены оболочки.

        • initContainerStatuses.lastState.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • initContainerStatuses.lastState.terminated.reason (string)

          (краткое) объяснение последнего завершения контейнера

        • initContainerStatuses.lastState.terminated.signal (int32)

          Сигнал последнего завершения контейнера

      • initContainerStatuses.lastState.waiting (ContainerStateWaiting)

        Подробности о контейнере в ожидании

        ContainerStateWaiting — это состояние ожидания контейнера.

        • initContainerStatuses.lastState.waiting.message (string)

          Сообщение о причине, по которой контейнер еще не запущен.

        • initContainerStatuses.lastState.waiting.reason (string)

          (краткое) объяснение, почему контейнер еще не запущен.

    • initContainerStatuses.ready (boolean), required

      Указывает, пройден ли контейнер проверку готовности.

    • initContainerStatuses.restartCount (int32), required

      Количество раз, когда контейнер был перезапущен.

    • initContainerStatuses.started (boolean)

      Указывает, пройден ли контейнер проверку запуска. Инициализируется как false, становится true после успешной проверки запуска. Сбрасывается до false при перезапуске контейнера или если kubelet временно теряет состояние. Всегда равно true, если проверка запуска не определена.

  • containerStatuses ([]ContainerStatus)

    Список, содержащий по одной записи на каждый контейнер в манифесте. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

    ContainerStatus содержит подробную информацию о текущем состоянии контейнера.

    • containerStatuses.name (string), required

      Должно быть меткой DNS. Каждый контейнер в под должен иметь уникальное имя. Не может быть обновлён.

    • containerStatuses.image (string), required

      Изображение, используемое контейнером. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images.

    • containerStatuses.imageID (string), required

      Идентификатор изображения контейнера.

    • containerStatuses.containerID (string)

      Идентификатор контейнера в формате '<type>://<container_id>'.

    • containerStatuses.state (ContainerState)

      Подробности о текущем состоянии контейнера.

      ContainerState содержит возможные состояния контейнера. Может быть указано только одно из них. Если ни одно не указано, используется значение ContainerStateWaiting по умолчанию.

      • containerStatuses.state.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние работы контейнера.

        • containerStatuses.state.running.startedAt (Time)

          Время последнего (пере)запуска контейнера

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

      • containerStatuses.state.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • containerStatuses.state.terminated.containerID (string)

          Идентификатор контейнера в формате '<type>://<container_id>'

        • containerStatuses.state.terminated.exitCode (int32), required

          Код выхода после последнего завершения контейнера

        • containerStatuses.state.terminated.startedAt (Time)

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

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

        • containerStatuses.state.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

        • containerStatuses.state.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • containerStatuses.state.terminated.reason (string)

          (краткое) объяснение последнего завершения контейнера

        • containerStatuses.state.terminated.signal (int32)

          Сигнал при последнем завершении контейнера

      • containerStatuses.state.waiting (ContainerStateWaiting)

        Подробности о контейнере в ожидании

        ContainerStateWaiting — это состояние ожидания контейнера.

        • containerStatuses.state.waiting.message (string)

          Сообщение о причине, по которой контейнер ещё не запущен.

        • containerStatuses.state.waiting.reason (string)

          (краткое) объяснение, почему контейнер ещё не запущен.

    • containerStatuses.lastState (ContainerState)

      Подробности о последнем состоянии завершения контейнера.

      ContainerState содержит возможные состояния контейнера. Может быть указано только одно из них. Если ни одно не указано, используется значение ContainerStateWaiting по умолчанию.

      • containerStatuses.lastState.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние работы контейнера.

        • containerStatuses.lastState.running.startedAt (Time)

          Время последнего (пере)запуска контейнера

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

      • containerStatuses.lastState.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • containerStatuses.lastState.terminated.containerID (string)

          Идентификатор контейнера в формате '<type>://<container_id>'

        • containerStatuses.lastState.terminated.exitCode (int32), required

          Код выхода после последнего завершения контейнера

        • containerStatuses.lastState.terminated.startedAt (Time)

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

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

        • containerStatuses.lastState.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это обёртка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих фабричных методов, предлагаемых пакетом time.

        • containerStatuses.lastState.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • containerStatuses.lastState.terminated.reason (string)

          (краткое) объяснение последнего завершения контейнера

        • containerStatuses.lastState.terminated.signal (int32)

          Сигнал при последнем завершении контейнера

      • containerStatuses.lastState.waiting (ContainerStateWaiting)

        Подробности о контейнере в ожидании

        ContainerStateWaiting — это состояние ожидания контейнера.

        • containerStatuses.lastState.waiting.message (string)

          Сообщение о причине, по которой контейнер ещё не запущен.

        • containerStatuses.lastState.waiting.reason (string)

          (краткое) объяснение, почему контейнер ещё не запущен.

    • containerStatuses.ready (boolean), required

      Указывает, прошёл ли контейнер проверку готовности.

    • containerStatuses.restartCount (int32), required

      Количество перезапусков контейнера.

    • containerStatuses.started (boolean)

      Указывает, прошёл ли контейнер проверку запуска. Инициализируется как false, становится true после успешной проверки startupProbe. Сбрасывается до false при перезапуске контейнера или если kubelet временно теряет состояние. Всегда true, если startupProbe не определён.

  • ephemeralContainerStatuses ([]ContainerStatus)

    Статус любых кратковременных контейнеров, которые работали в этом под.

    ContainerStatus содержит подробности о текущем состоянии этого контейнера.

    • ephemeralContainerStatuses.name (string), required

      Это должно быть DNS_LABEL. Каждый контейнер в под должен иметь уникальное имя. Не может быть обновлён.

    • ephemeralContainerStatuses.image (string), required

      Изображение, на котором работает контейнер. Дополнительная информация: https://kubernetes.io/docs/concepts/containers/images.

    • ephemeralContainerStatuses.imageID (string), required

      ImageID изображения контейнера.

    • ephemeralContainerStatuses.containerID (string)

      ID контейнера в формате '<тип>://<id_контейнера>'.

    • ephemeralContainerStatuses.state (ContainerState)

      Подробности о текущем состоянии контейнера.

      ContainerState содержит возможное состояние контейнера. Может быть указано только одно из его членов. Если ни одно из них не указано, используется значение по умолчанию ContainerStateWaiting.

      • ephemeralContainerStatuses.state.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние работы контейнера.

        • ephemeralContainerStatuses.state.running.startedAt (Time)

          Время последнего (повторного) запуска контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

      • ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • ephemeralContainerStatuses.state.terminated.containerID (string)

          ID контейнера в формате '<тип>://<id_контейнера>'

        • ephemeralContainerStatuses.state.terminated.exitCode (int32), required

          Код выхода из последнего завершения контейнера

        • ephemeralContainerStatuses.state.terminated.startedAt (Time)

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

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

        • ephemeralContainerStatuses.state.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

        • ephemeralContainerStatuses.state.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • ephemeralContainerStatuses.state.terminated.reason (string)

          (краткое) описание причины последнего завершения контейнера

        • ephemeralContainerStatuses.state.terminated.signal (int32)

          Сигнал последнего завершения контейнера

      • ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)

        Подробности о ждущем контейнере

        ContainerStateWaiting — это состояние ожидания контейнера.

        • ephemeralContainerStatuses.state.waiting.message (string)

          Сообщение о причинах, по которым контейнер еще не запущен.

        • ephemeralContainerStatuses.state.waiting.reason (string)

          (краткое) описание причины, по которой контейнер еще не запущен.

    • ephemeralContainerStatuses.lastState (ContainerState)

      Подробности о последнем состоянии завершения контейнера.

      ContainerState содержит возможное состояние контейнера. Может быть указано только одно из его членов. Если ни одно из них не указано, используется значение по умолчанию ContainerStateWaiting.

      • ephemeralContainerStatuses.lastState.running (ContainerStateRunning)

        Подробности о работающем контейнере

        ContainerStateRunning — это состояние работы контейнера.

        • ephemeralContainerStatuses.lastState.running.startedAt (Time)

          Время последнего (повторного) запуска контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

      • ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)

        Подробности о завершенном контейнере

        ContainerStateTerminated — это состояние завершения контейнера.

        • ephemeralContainerStatuses.lastState.terminated.containerID (string)

          ID контейнера в формате '<тип>://<id_контейнера>'

        • ephemeralContainerStatuses.lastState.terminated.exitCode (int32), required

          Код выхода из последнего завершения контейнера

        • ephemeralContainerStatuses.lastState.terminated.startedAt (Time)

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

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

        • ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)

          Время последнего завершения контейнера

          Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих методов фабрики пакета time предоставляются оболочки.

        • ephemeralContainerStatuses.lastState.terminated.message (string)

          Сообщение о последнем завершении контейнера

        • ephemeralContainerStatuses.lastState.terminated.reason (string)

          (краткое) описание причины последнего завершения контейнера

        • ephemeralContainerStatuses.lastState.terminated.signal (int32)

          Сигнал последнего завершения контейнера

      • ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)

        Подробности о ждущем контейнере

        ContainerStateWaiting — это состояние ожидания контейнера.

        • ephemeralContainerStatuses.lastState.waiting.message (string)

          Сообщение о причинах, по которым контейнер еще не запущен.

        • ephemeralContainerStatuses.lastState.waiting.reason (string)

          (краткое) описание причины, по которой контейнер еще не запущен.

    • ephemeralContainerStatuses.ready (boolean), required

      Указывает, прошел ли контейнер проверку готовности.

    • ephemeralContainerStatuses.restartCount (int32), required

      Количество раз, когда был перезапущен контейнер.

    • ephemeralContainerStatuses.started (boolean)

      Указывает, прошел ли контейнер проверку запуска. Инициализируется как false, становится true после успешной проверки запуска. Сбрасывается до false при перезапуске контейнера или при временной потере состояния kubelet. Всегда равно true, если проверка запуска не определена.

PodList

PodList — это список Pods.

  • items ([]Pod), required

    Список pods. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md

  • apiVersion (string)

    APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  • kind (string)

    Kind — это строковое значение, представляющее REST-ресурс, который представляет этот объект. Серверы могут вывести это из конечной точки, к которой клиент отправляет запросы. Не может быть обновлено. В CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  • metadata (ListMeta)

    Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-25.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API