
Cuando intento crear un volumen persistente basado en nfs en nuestro clúster de Kubernetes local, aparece el siguiente error:
# kubectl create -f nfs.yaml
error: error validating "nfs.yaml": error validating data: the server could not find the requested resource; if you choose to ignore these errors, turn validation off with --validate=false
El nfs.yaml
tiene el siguiente contenido:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-pv1
labels:
type: nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
server: 192.168.1.3
path: "/srv/kubedata/"
El clúster de Kubernetes se ejecuta en tres máquinas virtuales creadas en nuestra nube local de OpenStack (instalada con Kubespray). El recurso compartido nfs está en el primer nodo y se puede montar manualmente en todos los nodos.
¿Como puedo solucionar este problema? ¿El problema está en el archivo yaml? ¿Cómo puedo diagnosticar el problema? Sería muy útil saber dónde está exactamente el error: ¿existe un modo de depuración para kubectl?
Actualización: el yaml original que publiqué estaba corrupto, pero eso se debió a que el algoritmo de cotización de desbordamiento de pila se comió algunas líneas nuevas. Lo arreglé, ahora el yaml publicado parece validarse enhttps://kubeyaml.com/, por lo que el yaml parece estar bien (al menos en cuanto a sintaxis).
Actualización 2:
# kubectl version
Client Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"fff5156092b56e6bd60fff75aad4dc9de6b6ef37", GitTreeState:"clean", BuildDate:"2017-03-28T16:36:33Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:05:50Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Respuesta1
Este error significa que su yaml
archivo tiene un error. La forma más sencilla de encontrarlo sería utilizar una de las herramientas de validación en línea. En su ejemplo hay un error en la línea 1. Su archivo debería verse así:
apiVersion: v1
kind: PersistentVolume
metadata:
labels:
type: nfs
name: pv-nfs-pv1
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
nfs:
path: /srv/kubedata
server: 192.168.1.3
Por favor, avíseme si eso ayudó.
EDITAR:
Sin embargo, ser válido yaml
no significa que tenga una entrada válida para Kubernetes. Para poder investigar más a fondo es necesarioactualiza tu kubectl
versión.
Después de actualizar a la versión 1.15, podrá recibir un mensaje de error detallado que le mostrará la(s) línea(s) exacta(s) con el problema de validación en lugar de solo:the server could not find the requested resource;
En breve:
- actualizar
kubectl
a 1.15 - ejecutar el comando nuevamente
- ver qué líneas causan el problema
- corrija las líneas y ejecute el comando nuevamente