kubernetes持久卷无法创建“服务器找不到请求的资源”

kubernetes持久卷无法创建“服务器找不到请求的资源”

当我尝试在我们的本地 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 已损坏,但这是因为 stack overflow 引用算法吃掉了一些换行符。我修复了这个问题,现在发布的 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"}

答案1

此错误表示您的yaml文件有错误。找到它的最简单方法是使用其中一个在线验证工具。在您的示例中,第 1 行有一个错误。您的文件应如下所示:

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

如果有帮助的话请告诉我。

编辑:

但是,有效yaml并不意味着它对 Kubernetes 具有有效的输入。为了进一步调查,您需要升级你的kubectl版本

升级到 1.15 版本后,您将能够获得详细的错误消息,显示验证问题的确切行,而不仅仅是:the server could not find the requested resource;

简而言之:

  • 升级kubectl到 1.15
  • 再次运行命令
  • 查看哪些行导致了问题
  • 更正这些行并再次运行命令

相关内容