如何解决Kubernetes:PersistentVolume验证错误和spec.persistentvolumesource:禁止:创建后不可变
我正在尝试在本地计算机上部署ping devops,但在尝试设置服务器配置文件时收到以下错误消息:
验证“ lab05-local-profile-deploy.yaml”时出错:验证数据时出错:ValidationError(PersistentVolume):io.k8s.api.core.v1.PersistentVolume中的未知字段“ nodeAffinity”;如果您选择忽略这些错误,请使用--validate = false关闭验证 来自服务器的错误(无效):应用补丁时出错:
{“元数据”:{“注释”:{“ kubectl.kubernetes.io/last-applied-configuration":"{"apiVersion":"v1”,“种类”:“ PersistentVolume”,“元数据”: {“ annotations”:{},“ name”:“ pd-profile-volume”},“ spec”:{“ accessModes”:[“ ReadOnlyMany”],“ capacity”:{“ storage”:“ 10Gi”}, “ local”:{“ path”:“ / home / alice / projects / devops / lab05 / pingidentity-server-profiles / getting-started / pingdirectory”},“ nodeAffinity”:{“ required”:{“ nodeSelectorTerms”:[ {“ matchExpressions”:[{“ key”:“ kubernetes.io/hostname","operator":"In","values":["docker-desktop"]}}}}}},"storageClassName”:“ pd-local-in-storage“,” volumeMode“:”文件系统“}} \ n”}},“ spec”:{“ local”:{“ path”:“ / home / alice / projects / devops / lab05 / pingidentity-server-profiles / getting-started / pingdirectory“}}}
至: 资源:“ / v1,资源=持久卷”,GroupVersionKind:“ / v1,类型= PersistentVolume” 名称:“ pd-profile-volume”,命名空间:“” 对于:“ lab05-local-profile-deploy.yaml”:PersistentVolume“ pd-profile-volume”无效:spec.persistentvolumesource:禁止:创建后不可变
有人知道如何解决此问题吗?
yaml文件如下:
apiVersion: v1
data:
PING_IDENTITY_ACCEPT_EULA: "YES"
kind: ConfigMap
metadata:
labels:
role: pingdirectory
name: pingdirectory-environment-variables
---
apiVersion: v1
data:
PING_IDENTITY_ACCEPT_EULA: "YES"
kind: ConfigMap
metadata:
labels:
role: pingfederate
name: pingfederate-environment-variables
---
apiVersion: v1
kind: Service
metadata:
labels:
role: pingdataconsole
name: pingdataconsole
spec:
ports:
- name: https
port: 8443
selector:
role: pingdataconsole
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
role: pingdirectory
name: pingdirectory
spec:
ports:
- name: ldaps
port: 636
- name: ssl
port: 443
- name: ldap
port: 389
selector:
role: pingdirectory
type: NodePort
---
apiVersion: v1
kind: Service
metadata:
labels:
role: pingfederate
name: pingfederate
spec:
ports:
- name: pf-console
port: 9999
- name: pf-runtime
port: 9031
selector:
role: pingfederate
type: NodePort
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pd-profile-volume
spec:
accessModes:
- ReadOnlyMany
capacity:
storage: 10Gi
local:
path: /home/alice/projects/devops/lab05/pingidentity-server-profiles/getting-started/pingdirectory
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
storageClassName: pd-local-in-storage
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pf-profile-volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
spec:
accessModes:
- ReadOnlyMany
capacity:
storage: 10Gi
local:
path: /home/alice/projects/devops/lab05/pingidentity-server-profiles/getting-started/pingfederate
storageClassName: pf-local-in-storage
volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pd-profile-claim
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 10Gi
storageClassName: pd-local-in-storage
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pf-profile-claim
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 10Gi
storageClassName: pf-local-in-storage
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
role: pingdataconsole
name: pingdataconsole
spec:
replicas: 1
selector:
matchLabels:
role: pingdataconsole
template:
metadata:
labels:
role: pingdataconsole
name: pingdataconsole
spec:
containers:
- image: pingidentity/pingdataconsole:edge
name: pingdataconsole
ports:
- containerPort: 8443
resources:
limits:
cpu: 200m
memory: 1.5Gi
requests:
cpu: 200m
memory: 1.5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
role: pingfederate
name: pingfederate
spec:
replicas: 1
selector:
matchLabels:
role: pingfederate
template:
metadata:
labels:
role: pingfederate
name: pingfederate
spec:
containers:
- envFrom:
- configMapRef:
name: pingfederate-environment-variables
- secretRef:
name: devops-secret
optional: true
image: pingidentity/pingfederate:edge
imagePullPolicy: Always
livenessProbe:
failureThreshold: 1
httpGet:
path: /pingfederate/app
port: 9999
scheme: HTTPS
initialDelaySeconds: 100
periodSeconds: 1
name: pingfederate
ports:
- containerPort: 9999
- containerPort: 9031
readinessProbe:
httpGet:
path: /pingfederate/app
port: 9999
scheme: HTTPS
periodSeconds: 10
resources:
limits:
cpu: "1"
memory: 1.5Gi
requests:
cpu: "1"
memory: 1.5Gi
volumeMounts:
- mountPath: /opt/in
name: pf-profile-storage
volumes:
- name: pf-profile-storage
persistentVolumeClaim:
claimName: pf-profile-claim
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
role: pingdirectory
name: pingdirectory
spec:
replicas: 1
selector:
matchLabels:
role: pingdirectory
serviceName: pingdirectory
template:
metadata:
labels:
role: pingdirectory
name: pingdirectory
spec:
containers:
- envFrom:
- configMapRef:
name: pingdirectory-environment-variables
- secretRef:
name: devops-secret
optional: true
image: pingidentity/pingdirectory:edge
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- /preStop.sh
livenessProbe:
exec:
command:
- /bin/sh
- -c
- /opt/liveness.sh
initialDelaySeconds: 300
periodSeconds: 30
name: pingdirectory
ports:
- containerPort: 636
- containerPort: 443
- containerPort: 389
readinessProbe:
exec:
command:
- /bin/sh
- -c
- /opt/liveness.sh
resources:
limits:
cpu: "2"
memory: 2Gi
requests:
cpu: "2"
memory: 2Gi
volumeMounts:
- mountPath: /opt/in
name: pd-profile-storage
terminationGracePeriodSeconds: 300
volumes:
- name: pd-profile-storage
persistentVolumeClaim:
claimName: pd-profile-claim
解决方法
您可能需要检查以前部署的内容。执行kubectl获取pv和pvc,并检查是否存在任何具有相同名称的资源。如果是这样,请从您的命名空间中删除它们,然后尝试再次部署。
,根据k8s api reference,nodeAffinity
部分必须在spec
字段下。
apiVersion: v1
kind: PersistentVolume
metadata:
name: pf-profile-volume
spec:
nodeAffinity: # <<< LOOK HERE >>>
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
accessModes:
- ReadOnlyMany
capacity:
storage: 10Gi
local:
path: /home/alice/projects/devops/lab05/pingidentity-server-profiles/getting-started/pingfederate
storageClassName: pf-local-in-storage
volumeMode: Filesystem
您还可以运行:
kubectl explain pv.spec.nodeAffinity
获取字段说明。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。