
ローカル 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
それが役に立ったかどうか教えてください。
編集:
しかし、有効だからといってyaml
Kubernetesにとって有効な入力があるというわけではありません。さらに調査するには、kubectl
バージョンをアップグレードする。
バージョン 1.15 にアップグレードすると、次のようなメッセージではなく、検証の問題が発生している正確な行を示す詳細なエラー メッセージが表示されるようになります。the server could not find the requested resource;
要するに:
kubectl
1.15にアップグレード- コマンドを再度実行します
- どの行が問題を引き起こしているか確認する
- 行を修正してコマンドを再度実行してください