Назад | Перейти на главную страницу

Постоянный том kubernetes не может быть создан «сервер не может найти запрошенный ресурс»

Когда я пытаюсь создать постоянный том на основе nfs в нашем локальном кластере kubernetes, я получаю следующую ошибку:

# 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"}

Эта ошибка означает, что ваш 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
  • запустите команду еще раз
  • посмотрите, какие строки вызывают проблему
  • исправьте строки и снова запустите команду