Я пытаюсь создать новый PersistentVolume
в Kubernets (версия 1.14), но он возвращает мне следующую ошибку:
The PersistentVolume "postgres-pv-volume" is invalid:
* spec.persistentvolumesource: Forbidden: is immutable after creation
* nodeAffinity: Invalid value: "null": field is immutable
Вот мой YAML:
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv-volume
namespace: is-app
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /vols/is-app
server: storage-server
readOnly: false
Я не могу найти ничего об этих ошибочных значениях в документации. Что не так с моей конфигурацией?
Пример конфигурации для постоянного тома с использованием NFS
apiVersion: v1
kind: Service
metadata:
name: nfs-server
spec:
# clusterIP: 10.3.240.20
ports:
- name: nfs
port: 2049
- name: mountd
port: 20048
- name: rpcbind
port: 111
selector:
role: nfs-server
The PersistentVolume "postgres-pv-volume" is invalid: * spec.persistentvolumesource: Forbidden: is immutable after creation * nodeAffinity: Invalid value: "null": field is immutable
Похоже по какой-то причине nodeAffinity:
поле обязательно для заполнения spec:
раздел вашего PersistentVolume
определение, и оно автоматически добавляется генератором и присваивается значение null
. Значение этого поля является неизменным, т.е. не может быть изменено после создания. Вы можете проверить, каков точный результат, создав только yaml-манифест вашего PV
ресурс. Вы можете сделать это, добавив --dry-run -o yaml
параметры.
У тебя есть NFS server
позади DNS
название storage-server
доступны в пространстве имен по умолчанию вашего кластера k8s? Нам нужна дополнительная информация о настройке вашей среды, чтобы мы могли вам помочь. Вы используете локальный кластер k8s или какое-либо облачное решение? Как вы можете прочитать здесь (документы для v1.16) (но выглядит точно так же в v1.14 что вы используете):
Примечание: Для большинства типов томов устанавливать это поле не нужно. Он автоматически заполняется для типов блоков томов AWS EBS, GCE PD и Azure Disk. Вам нужно явно установить это для локальных томов.
PV может указывать сродство узла, чтобы определить ограничения, ограничивающие, с каких узлов можно получить доступ к этому тому. Поды, использующие PV, будут запланированы только для узлов, выбранных по привязке узла.
Что касается вашего комментария:
В другом пространстве имен я получил очень похожий том NFS, также без службы nfs-server, но созданный в Kubernetes 1.11. Почему до сих пор работает? Что-то изменилось с требованиями? - Djent 1 час назад
Вам нужно описать его более точно, чтобы его можно было сравнить, но имейте в виду, что 1.11 на данный момент является устаревшей версией, которая больше не поддерживается, и я почти уверен, что с тех пор могли быть внесены некоторые значительные изменения. Это даже невозможно проверить на kubernetes.io веб-сайт, поскольку он больше не поддерживается (самая старая поддерживаемая версия документации k8s в настоящее время - 1.12). Если такая конфигурация работает для вас в кластере 1.11, это, вероятно, означает, что в 1.14 она работает по-другому, если вы не можете реализовать ее таким же образом.