当我尝试在本地 kubernetes 集群中创建基于 nfs 的持久卷时,我收到以下错误:
# 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
有以下nfs.yaml
内容:
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/"
kubernetes 集群在我们本地的 openstack 云中创建的三个虚拟机上运行(安装了 kubespray)。nfs 共享位于第一个节点上,可以手动挂载到所有节点上。
我该如何解决这个问题?是yaml文件的问题吗?如何诊断问题?知道错误的确切位置会非常有帮助:kubectl 是否有调试模式?
更新:我发布的原始 yaml 已损坏,但那是因为堆栈溢出引用算法吃了一些换行符。我解决了这个问题,现在发布的 yaml 似乎在https://kubeyaml.com/上验证,所以 yaml 似乎没问题(至少在语法方面)。
更新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"}
此错误表示您的
yaml
文件有错误。找到它的最简单方法是使用其中一种在线验证工具。在您的示例中,第 1 行有一个错误。您的文件应如下所示:请让我知道这是否有帮助。
编辑:
但是,有效
yaml
并不意味着它具有 Kubernetes 的有效输入。为了进一步调查,您需要升级您的kubectl
版本。升级到 1.15 版后,您将能够收到详细的错误消息,显示验证问题的确切行,而不仅仅是:
the server could not find the requested resource;
简而言之:
kubectl
到 1.15