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 em https://kubeyaml.com/ , então o yaml parece estar bem (sintaxe, pelo menos).
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"}
Este erro significa que seu
yaml
arquivo tem 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:Por favor, deixe-me saber se isso ajudou.
EDITAR:
No entanto, um válido
yaml
não significa que ele tenha uma entrada válida para o Kubernetes. Para investigar melhor, você precisa atualizar suakubectl
versão .Após atualizar para a versão 1.15, você poderá obter uma mensagem de erro detalhada mostrando a(s) linha(s) exata(s) com o problema de validação em vez de apenas:
the server could not find the requested resource;
Resumidamente:
kubectl
para 1.15