Могу ли я рассчитывать на соглашение об именовании volumeClaimTemplates?
Я хочу настроить предопределенный кластер PostgreSQL в голом метакубернете 1.7 с локальным включением PV. У меня есть три рабочих узла. Я создаю локальный PV на каждом узле и успешно разворачиваю набор состояний (с некоторым сложным сценарием для настройки репликации Postgres).
Однако я заметил, что между томом VolumeClaimTemplates и PersistentVolumeClaim существует своего рода соглашение об именах. Например
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: postgres
volumeClaimTemplates:
- metadata:
name: pgvolume
Созданные ПВХ являются pgvolume-postgres-0
, pgvolume-postgres-1
, pgvolume-postgres-2
,
С некоторыми сложностями я вручную создаю PVC и привязываюсь к целевому PV с помощью селектора. Я снова проверяю набор состояний. Похоже, набор состояния очень рад использовать эти ПВХ.
Я успешно завершил свой тест, но у меня все еще есть этот вопрос. Могу ли я рассчитывать на соглашение об именовании volumeClaimTemplates? Это недокументированная функция?
1 ответ
На основе ссылки API Statefulset
volumeClaimTemplates - это список утверждений, на которые могут ссылаться модули. Контроллер StatefulSet отвечает за сопоставление сетевых идентификаторов с заявками способом, который поддерживает идентичность модуля. Каждая заявка в этом списке должна иметь хотя бы одну совпадающую (по имени) volumeMount в одном контейнере в шаблоне. Заявка в этом списке имеет приоритет над любыми томами в шаблоне с тем же именем.
Так что, думаю, вы можете на это положиться.
Кроме того, вы можете определить класс хранения, чтобы использовать динамическое предоставление постоянных томов, поэтому вам не придется создавать их вручную.
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: my-storage-class
resources:
requests:
storage: 1Gi
Пожалуйста, обратитесь к Динамическим классам обеспечения и хранения в Kubernetes для получения дополнительной информации.