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 でインストール) に作成された 3 つの仮想マシン上で実行されます。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 つを使用することです。この例では、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

それが役に立ったかどうか教えてください。

編集:

しかし、有効だからといってyamlKubernetesにとって有効な入力があるというわけではありません。さらに調査するには、kubectlバージョンをアップグレードする

バージョン 1.15 にアップグレードすると、次のようなメッセージではなく、検証の問題が発生している正確な行を示す詳細なエラー メッセージが表示されるようになります。the server could not find the requested resource;

要するに:

  • kubectl1.15にアップグレード
  • コマンドを再度実行します
  • どの行が問題を引き起こしているか確認する
  • 行を修正してコマンドを再度実行してください

関連情報