
Wenn ich versuche, ein NFS-basiertes persistentes Volume in unserem lokalen Kubernetes-Cluster zu erstellen, erhalte ich die folgende Fehlermeldung:
# 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
Das nfs.yaml
hat folgenden Inhalt:
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/"
Der Kubernetes-Cluster läuft auf drei virtuellen Maschinen, die in unserer lokalen OpenStack-Cloud erstellt wurden (installiert mit Kubespray). Die NFS-Freigabe befindet sich auf dem ersten Knoten und kann manuell auf allen Knoten gemountet werden.
Wie kann ich dieses Problem beheben? Liegt das Problem in der YAML-Datei? Wie kann ich das Problem diagnostizieren? Es wäre sehr hilfreich zu wissen, wo genau der Fehler liegt: Gibt es einen Debug-Modus für kubectl?
Update: Das ursprüngliche YAML, das ich gepostet habe, war beschädigt, aber das lag daran, dass der Stack Overflow-Quote-Algorithmus einige Zeilenumbrüche gefressen hat. Ich habe das behoben, jetzt scheint das gepostete YAML zu validierenhttps://kubeyaml.com/, also scheint das YAML in Ordnung zu sein (zumindest von der Syntax her).
Update 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"}
Antwort1
Dieser Fehler bedeutet, dass Ihre yaml
Datei einen Fehler enthält. Am einfachsten finden Sie ihn, indem Sie einfach eines der Online-Validierungstools verwenden. In Ihrem Beispiel gibt es einen Fehler in Zeile 1. Ihre Datei sollte folgendermaßen aussehen:
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
Bitte lassen Sie mich wissen, ob das geholfen hat.
BEARBEITEN:
Ein gültiger Wert yaml
bedeutet jedoch nicht, dass es einen gültigen Input für Kubernetes gibt. Um dies weiter zu untersuchen, müssen SieUpgrade Ihrer kubectl
Version.
Nach dem Upgrade auf Version 1.15 können Sie eine detaillierte Fehlermeldung erhalten, die Ihnen die genaue(n) Zeile(n) mit dem Validierungsproblem anzeigt, statt nur:the server could not find the requested resource;
Zusamenfassend:
- Upgrade
kubectl
auf 1.15 - Führen Sie den Befehl erneut aus
- sehen, welche Zeilen das Problem verursachen
- Korrigieren Sie die Zeilen und führen Sie den Befehl erneut aus