StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet представляет собой набор поддосов с согласованными идентификаторами. Идентификаторы определяются как:
- Сеть: Единственный стабильный 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 определяет желаемые идентификаторы поддосов в этом наборе.
-
status (StatefulSetStatus)
Status — текущее состояние поддосов в этом StatefulSet. Эти данные могут быть устаревшими на некоторый промежуток времени.
StatefulSetSpec
StatefulSetSpec — спецификация StatefulSet.
-
serviceName (строка), обязательно
serviceName — имя сервиса, управляющего этим StatefulSet. Этот сервис должен существовать до StatefulSet и отвечает за сетевой идентификатор набора. Поддосы получают DNS/имена хостов, которые следуют шаблону: pod-specific-string.serviceName.default.svc.cluster.local, где «pod-specific-string» управляется контроллером StatefulSet.
-
selector (LabelSelector), обязательно
selector — запрос меток над поддосами, который должен соответствовать количеству реплик. Он должен соответствовать меткам шаблона поддоса. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
-
template (PodTemplateSpec), обязательно
template — объект, описывающий поддос, который будет создан, если обнаружено недостаточное количество реплик. Каждый поддос, созданный StatefulSet, будет соответствовать этому шаблону, но будет иметь уникальный идентификатор от остальной части StatefulSet. Каждый поддос будет именоваться в формате <имя-statefulset>-<номер-поддоса>. Например, поддос в StatefulSet с именем «web» и номером индекса «3» будет именоваться «web-3». Единственное допустимое значение template.spec.restartPolicy — «Always».
-
replicas (int32)
replicas — желаемое количество реплик данного шаблона. Это реплики в том смысле, что они являются экземплярами одного и того же шаблона, но отдельные реплики также имеют согласованный идентификатор. Если не указано, по умолчанию равно 1.
-
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy указывает StatefulSetUpdateStrategy, который будет использован для обновления поддосов в StatefulSet при внесении изменений в шаблон.
StatefulSetUpdateStrategy указывает стратегию, которую контроллер StatefulSet будет использовать для выполнения обновлений. Она включает все дополнительные параметры, необходимые для выполнения обновления для указанной стратегии.
-
updateStrategy.type (строка)
Type указывает тип StatefulSetUpdateStrategy. По умолчанию RollingUpdate.
-
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
RollingUpdate используется для передачи параметров, когда Type — RollingUpdateStatefulSetStrategyType.
RollingUpdateStatefulSetStrategy используется для передачи параметров для RollingUpdateStatefulSetStrategyType.
-
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
Максимальное количество поддосов, которые могут быть недоступны во время обновления. Значение может быть абсолютным числом (например, 5) или процентом желаемых поддосов (например, 10%). Абсолютное число рассчитывается из процента путем округления вверх. Это не может быть 0. По умолчанию 1. Это поле находится на стадии бета-тестирования и учитывается только серверами, которые поддерживают функцию MaxUnavailableStatefulSet. Поле применяется ко всем поддосам в диапазоне от 0 до Replicas-1. Это означает, что если в диапазоне от 0 до Replicas-1 есть недоступный поддос, он будет учтен в MaxUnavailable.
IntOrString — тип, который может содержать int32 или строку. При использовании в JSON или YAML маршалинге и унмаршалинге он производит или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.
-
updateStrategy.rollingUpdate.partition (int32)
Partition указывает порядковый номер, на котором StatefulSet должен быть разделен для обновлений. Во время развертывания с роллинг-обновлением все поддосы с порядковым номером от Replicas-1 до Partition обновляются. Все поддосы с порядковым номером от Partition-1 до 0 остаются неизменными. Это полезно для проведения развертывания типа «кани». Значение по умолчанию — 0.
-
-
-
podManagementPolicy (строка)
podManagementPolicy управляет тем, как поддосы создаются во время начального увеличения масштаба, при замене поддосов на узлах или при уменьшении масштаба. Политика по умолчанию —
OrderedReady, где поддосы создаются в порядке возрастания (pod-0, затем pod-1 и т. д.), и контроллер будет ждать, пока каждый поддос не будет готов, прежде чем продолжить. При уменьшении масштаба поддосы удаляются в обратном порядке. Альтернативная политика —Parallel, которая будет создавать поддосы параллельно, чтобы соответствовать желаемому масштабу, без ожидания, а при уменьшении масштаба будет удалять все поддосы сразу. -
revisionHistoryLimit (int32)
revisionHistoryLimit — максимальное количество ревизий, которые будут храниться в истории ревизий StatefulSet. История ревизий состоит из всех ревизий, которые не представлены текущей версией StatefulSetSpec. Значение по умолчанию — 10.
-
volumeClaimTemplates ([]PersistentVolumeClaim)
Атомарно: будет заменено во время слияния
volumeClaimTemplates — список заявок, к которым поддосы могут получить доступ. Контроллер StatefulSet отвечает за отображение сетевых идентификаторов на заявки таким образом, чтобы поддерживать идентификатор поддоса. Каждая заявка в этом списке должна иметь по крайней мере одну соответствующую (по имени) volumeMount в одном контейнере в шаблоне. Заявка в этом списке имеет приоритет над любыми томами в шаблоне с тем же именем.
-
minReadySeconds (int32)
Минимальное количество секунд, в течение которых новый созданный поддос должен быть готов без сбоя любого из его контейнеров, чтобы считаться доступным. По умолчанию 0 (поддос будет считаться доступным, как только он будет готов).
-
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy описывает жизненный цикл томов хранения, созданных из volumeClaimTemplates. По умолчанию все тома хранения создаются по мере необходимости и хранятся до их удаления вручную. Эта политика позволяет изменить жизненный цикл, например, удалив тома хранения при удалении stateful set или при уменьшении масштаба поддоса. Для этого необходимо включить функцию StatefulSetAutoDeletePVC, которая находится на стадии бета-тестирования.
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 для любых дополнительных поддосов, превышающих количество реплик.
-
-
ordinals (StatefulSetOrdinals)
ordinals управляет нумерацией индексов реплик в StatefulSet. По умолчанию ordinals присваивает индекс «0» первой реплике и увеличивает индекс на единицу для каждой дополнительной запрошенной реплики.
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Карта: уникальные значения по ключу 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
StatefulSetList — это коллекция StatefulSets.
apiVersion: apps/v1
kind: StatefulSetList
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]StatefulSet), требуется
Items — список stateful set.
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/stateful-set-v1/