No se puede crear el volumen persistente de Kubernetes "el servidor no pudo encontrar el recurso solicitado"

No se puede crear el volumen persistente de Kubernetes "el servidor no pudo encontrar el recurso solicitado"

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.yamltiene 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 yamlarchivo 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 yamlno significa que tenga una entrada válida para Kubernetes. Para poder investigar más a fondo es necesarioactualiza tu kubectlversió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 kubectla 1.15
  • ejecutar el comando nuevamente
  • ver qué líneas causan el problema
  • corrija las líneas y ejecute el comando nuevamente

información relacionada