無法建立 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 已損壞,但那是因為堆疊溢位引用演算法吃了一些換行符。我修復了這個問題,現在發布的 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
  • 再次運行命令
  • 查看哪些行導致了問題
  • 更正行並再次運行命令

相關內容