
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.yaml
tem 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 yaml
arquivo 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 yaml
não significa que tenha uma entrada válida para Kubernetes. Para investigar melhor você precisaatualize sua kubectl
versã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
kubectl
para 1.15 - execute o comando novamente
- veja quais linhas causam o problema
- corrija as linhas e execute o comando novamente