Persistentes Kubernetes-Volume kann nicht erstellt werden. „Der Server konnte die angeforderte Ressource nicht finden.“

Persistentes Kubernetes-Volume kann nicht erstellt werden. „Der Server konnte die angeforderte Ressource nicht finden.“

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.yamlhat 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 yamlDatei 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 yamlbedeutet jedoch nicht, dass es einen gültigen Input für Kubernetes gibt. Um dies weiter zu untersuchen, müssen SieUpgrade Ihrer kubectlVersion.

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 kubectlauf 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

verwandte Informationen