O volume persistente do Kubernetes não pode ser criado "o servidor não conseguiu encontrar o recurso solicitado"

O volume persistente do Kubernetes não pode ser criado "o servidor não conseguiu encontrar o recurso solicitado"

Quando tento criar um volume persistente baseado em NFS em nosso cluster Kubernetes local, recebo o seguinte erro:

# 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

O nfs.yamltem o seguinte conteúdo:

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/"

O cluster kubernetes é executado em três máquinas virtuais criadas em nossa nuvem openstack local (instalada com kubespray). O compartilhamento nfs está no primeiro nó e pode ser montado manualmente em todos os nós.

Como posso resolver este problema? O problema está no arquivo yaml? Como posso diagnosticar o problema? Seria muito útil saber exatamente onde está o erro: existe um modo de depuração para o kubectl?

Atualização: o yaml original que postei estava corrompido, mas isso ocorreu porque o algoritmo de cotação de estouro de pilha comeu algumas novas linhas. Eu consertei isso, agora o yaml postado parece validar emhttps://kubeyaml.com/, então o yaml parece estar correto (pelo menos em termos de sintaxe).

Atualização2:

# 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"}

Responder1

Este erro significa que seu yamlarquivo contém um erro. A maneira mais fácil de encontrá-lo seria usar apenas uma das ferramentas de validação online. No seu exemplo há um erro na linha 1. Seu arquivo deve ficar assim:

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, deixe-me saber se isso ajudou.

EDITAR:

No entanto, válido yamlnão significa que tenha uma entrada válida para Kubernetes. Para investigar melhor você precisaatualize sua kubectlversão.

Após atualizar para a versão 1.15, você poderá receber uma mensagem de erro detalhada mostrando as linhas exatas com o problema de validação, em vez de apenas:the server could not find the requested resource;

Resumidamente:

  • atualize kubectlpara 1.15
  • execute o comando novamente
  • veja quais linhas causam o problema
  • corrija as linhas e execute o comando novamente

informação relacionada