StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet представляет набор Pods с согласованными идентификаторами. Идентификаторы определяются как:
- Сеть: Единственный стабильный DNS и имя хоста.
- Хранилище: Столько VolumeClaims, сколько запрошено.
StatefulSet гарантирует, что заданный сетевой идентификатор всегда будет соответствовать тому же идентификатору хранилища.
-
apiVersion: apps/v1
-
kind: StatefulSet
-
metadata (ObjectMeta)
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
spec (StatefulSetSpec)
Spec определяет желаемые идентификаторы Pods в этом наборе.
-
status (StatefulSetStatus)
Status — текущее состояние Pods в этом StatefulSet. Данные могут быть устаревшими.
StatefulSetSpec
StatefulSetSpec — это спецификация StatefulSet.
-
serviceName (строка), обязательно
serviceName — имя сервиса, управляющего этим StatefulSet. Этот сервис должен существовать до StatefulSet и отвечает за сетевой идентификатор набора. Pods получают DNS/имена хостов, которые следуют шаблону: pod-specific-string.serviceName.default.svc.cluster.local, где "pod-specific-string" управляется контроллером StatefulSet.
-
selector (LabelSelector), обязательно
selector — запрос меток для Pods, которые должны соответствовать количеству реплик. Он должен соответствовать меткам шаблона Pod. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
-
template (PodTemplateSpec), обязательно
template — объект, описывающий Pod, который будет создан, если обнаружено недостаточное количество реплик. Каждый Pod, созданный StatefulSet, будет соответствовать этому шаблону, но иметь уникальный идентификатор по отношению к остальным Pods в StatefulSet. Каждый Pod будет именоваться в формате <имя_StatefulSet>-<индекс_Pod>. Например, Pod в StatefulSet с именем "web" и номером индекса "3" будет иметь имя "web-3". Единственное допустимое значение template.spec.restartPolicy — "Always".
-
replicas (int32)
replicas — желаемое количество реплик данного шаблона. Это реплики в том смысле, что они являются экземплярами одного и того же шаблона, но индивидуальные реплики также имеют согласованный идентификатор. Если не указано, по умолчанию равно 1.
-
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy указывает StatefulSetUpdateStrategy, которая будет использована для обновления Pods в StatefulSet при внесении изменений в шаблон.
StatefulSetUpdateStrategy указывает стратегию, которую контроллер StatefulSet будет использовать для выполнения обновлений. Она включает все дополнительные параметры, необходимые для выполнения обновления по указанной стратегии.
-
updateStrategy.type (строка)
Type указывает тип StatefulSetUpdateStrategy. По умолчанию RollingUpdate.
-
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
RollingUpdate используется для передачи параметров при Type RollingUpdateStatefulSetStrategyType.
RollingUpdateStatefulSetStrategy используется для передачи параметров для RollingUpdateStatefulSetStrategyType.
-
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
Максимальное количество Pods, которые могут быть недоступны во время обновления. Значение может быть абсолютным числом (например: 5) или процентом от желаемого количества Pods (например: 10%). Абсолютное число рассчитывается из процента с округлением вверх. Не может быть равно 0. По умолчанию 1. Это поле находится на стадии альфа-тестирования и учитывается только серверами, включившими функцию MaxUnavailableStatefulSet. Поле применяется ко всем Pods в диапазоне от 0 до Replicas-1. Это означает, что любой недоступный Pod в диапазоне от 0 до Replicas-1 будет засчитан в MaxUnavailable.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML-маршаллировании и размаршаллировании он производит или потребляет внутренний тип. Это позволяет, например, иметь JSON-поле, которое может принимать имя или число.
-
updateStrategy.rollingUpdate.partition (int32)
Partition указывает порядковый номер, на котором StatefulSet должен быть разделен для обновлений. Во время обновления по принципу "rolling update" все Pods с порядковым номером от Replicas-1 до Partition обновляются. Все Pods с порядковым номером от Partition-1 до 0 остаются без изменений. Это полезно для выполнения развертывания типа "кани". Значение по умолчанию равно 0.
-
-
-
podManagementPolicy (строка)
podManagementPolicy управляет тем, как создаются Pods во время начального увеличения масштаба, при замене Pods на узлах или при уменьшении масштаба. Политика по умолчанию —
OrderedReady, где Pods создаются в порядке возрастания (pod-0, затем pod-1 и т. д.), и контроллер будет ждать, пока каждый Pod будет готов, прежде чем продолжить. При уменьшении масштаба Pods удаляются в обратном порядке. Альтернативная политика —Parallel, которая создаст Pods параллельно, чтобы соответствовать желаемому масштабу, без ожидания, а при уменьшении масштаба удалит все Pods сразу. -
revisionHistoryLimit (int32)
revisionHistoryLimit — максимальное количество версий, которое будет сохранено в истории версий StatefulSet. История версий состоит из всех версий, не представленных текущей применённой версией StatefulSetSpec. Значение по умолчанию равно 10.
-
volumeClaimTemplates ([]PersistentVolumeClaim)
volumeClaimTemplates — список заявок, на которые Pods имеют право ссылаться. Контроллер StatefulSet отвечает за сопоставление сетевых идентификаторов с заявками таким образом, чтобы сохранялся идентификатор Pod. Каждая заявка в этом списке должна иметь по крайней мере одну соответствующую (по имени) volumeMount в одном контейнере в шаблоне. Заявка в этом списке имеет приоритет над любыми томами в шаблоне с тем же именем.
-
minReadySeconds (int32)
Минимальное количество секунд, в течение которых новый Pod должен быть готов, без сбоя ни одного из его контейнеров, чтобы считаться доступным. По умолчанию 0 (Pod будет считаться доступным, как только он будет готов).
-
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy описывает жизненный цикл Persistent Volume Claims, созданных из volumeClaimTemplates. По умолчанию все Persistent Volume Claims создаются по мере необходимости и сохраняются до их удаления вручную. Эта политика позволяет изменить жизненный цикл, например, удалив Persistent Volume Claims при удалении StatefulSet или уменьшении масштаба Pod. Для этого требуется включение feature gate StatefulSetAutoDeletePVC, которая находится на стадии альфа-тестирования. +optional
StatefulSetPersistentVolumeClaimRetentionPolicy описывает политику, используемую для PVC, созданных из StatefulSet VolumeClaimTemplates.
-
persistentVolumeClaimRetentionPolicy.whenDeleted (строка)
WhenDeleted указывает, что происходит с PVC, созданными из StatefulSet VolumeClaimTemplates, когда StatefulSet удаляется. Политика по умолчанию —
Retain— не приводит к изменению состояния PVC. ПолитикаDeleteприводит к удалению этих PVC. -
persistentVolumeClaimRetentionPolicy.whenScaled (строка)
WhenScaled указывает, что происходит с PVC, созданными из StatefulSet VolumeClaimTemplates, когда StatefulSet уменьшается в масштабе. Политика по умолчанию —
Retain— не приводит к изменению состояния PVC. ПолитикаDeleteприводит к удалению соответствующих PVC для любых избыточных Pods, превышающих количество реплик.
-
-
ordinals (StatefulSetOrdinals)
ordinals управляет нумерацией индексов реплик в StatefulSet. Поведение ordinals по умолчанию назначает индекс "0" первой реплике и увеличивает индекс на единицу для каждой дополнительной запрошенной реплики. Использование поля ordinals требует включения feature gate StatefulSetStartOrdinal, которая находится на стадии бета-тестирования.
StatefulSetOrdinals описывает политику, используемую для назначения порядкового номера реплик в этом StatefulSet.
-
ordinals.start (int32)
start — число, представляющее индекс первой реплики. Может использоваться для нумерации реплик с альтернативного индекса (например, 1-индексированного) по сравнению со стандартным 0-индексированным именованием, или для организации постепенного перемещения реплик из одного StatefulSet в другой. Если задано, индексы реплик будут в диапазоне: [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas). Если не задано, по умолчанию равно 0. Индексы реплик будут в диапазоне: [0, .spec.replicas).
-
StatefulSetStatus
StatefulSetStatus представляет текущее состояние StatefulSet.
-
replicas (int32), требуется
replicas — количество Pods, созданных контроллером StatefulSet.
-
readyReplicas (int32)
readyReplicas — количество Pods, созданных для этого StatefulSet с состоянием Ready.
-
currentReplicas (int32)
currentReplicas — количество Pods, созданных контроллером StatefulSet из версии StatefulSet, указанной в currentRevision.
-
updatedReplicas (int32)
updatedReplicas — количество Pods, созданных контроллером StatefulSet из версии StatefulSet, указанной в updateRevision.
-
availableReplicas (int32)
Общее количество доступных Pods (готовых как минимум на minReadySeconds), нацеленных на этот StatefulSet.
-
collisionCount (int32)
collisionCount — количество коллизий хэшей для StatefulSet. Контроллер StatefulSet использует это поле как механизм предотвращения коллизий при необходимости создания имени для последнего ControllerRevision.
-
conditions ([]StatefulSetCondition)
Стратегия патча: слияние по ключу
typeПредставляет последние доступные наблюдения за текущим состоянием StatefulSet.
StatefulSetCondition описывает состояние StatefulSet в определенный момент.
-
conditions.status (string), требуется
Статус условия, один из True, False, Unknown.
-
conditions.type (string), требуется
Тип условия StatefulSet.
-
conditions.lastTransitionTime (Time)
Последнее время перехода условия из одного статуса в другой.
Time — обертка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Обёртки предоставляются для многих методов фабрики, которые предлагает пакет time.
-
conditions.message (string)
Читаемое человеком сообщение, указывающее детали перехода.
-
conditions.reason (string)
Причина последнего перехода состояния.
-
-
currentRevision (string)
currentRevision, если не пусто, указывает версию StatefulSet, используемую для создания Pods в последовательности [0,currentReplicas).
-
updateRevision (string)
updateRevision, если не пусто, указывает версию StatefulSet, используемую для создания Pods в последовательности [replicas-updatedReplicas,replicas)
-
observedGeneration (int64)
observedGeneration — самая последняя наблюдаемая генерация для этого StatefulSet. Она соответствует генерации StatefulSet, которая обновляется при изменении API-сервером.
Список StatefulSet
СписокStatefulSet — коллекция StatefulSet.
-
apiVersion: apps/v1
-
kind: СписокStatefulSet
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]StatefulSet), требуется
Items — список StatefulSet.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-27.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/stateful-set-v1/