Как исправить ошибку kubectl с сервера (NotFound): серверу не удалось найти запрошенный ресурс - PullRequest
1 голос
/ 19 февраля 2020

Я был установлен kubectl по официальной инструкции, но когда я попробовал kubectl apply -f я получил сообщение «Ошибка от сервера (NotFound): сервер не смог найти запрошенный ресурс».

Inte rnet говорит, что это потому, что версия клиента и сервера kubectl отличается.

Я проверю версию kubectl:

Версия клиента: version.Info {Major: " 1 ", Minor:" 17 ", GitVersion: " v1.17.2 ", GitCommit:" 59603c6e503c87169aea6106f57b9f242f64df89 ", GitTreeState:" clean ", BuildDate:" 2020-01-18T23: 30: 10Z ", 30: 10Z : "go1.13.5", компилятор: "g c", платформа: "linux / amd64"}

Версия сервера: version.Info {Major: "1", Minor: "6", GitVersion : "v1.6.4" , GitCommit: "d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState: "dirty", BuildDate: "2017-06-22T04: 31: 09Z", GoVersion: компилятор go1.7.5 ", g c ", Платформа:" linux / amd64 "}

Если это официальная установка, почему версия так отличается? И действительно ли это проблема этой ошибки?

У меня также есть docker, docker -compose и minikube.

OS linux mint

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Публикация вики сообщества как root причина была упомянута @David Maze

Как отмечалось в комментариях, ваши версии очень разные. Kubernetes 1.7 было повторно выпущено ~ Июль 2017 , когда Kubernetes 1.17 было выпущено в Янв 2020 (разница почти в 2,5 года). Другое дело, что версия Docker и Minikube должны поддерживать kubernetes версию.

Например, если вы хотите запустить Kubernetes 1.6.3 в последней версии Minikube, возникает ошибка.

minikube v1.7.3 on Ubuntu 16.04
✨  Using the none driver based on user configuration
⚠️  Specified Kubernetes version 1.6.4 is less than the oldest supported version: v1.11.10
?  Sorry, Kubernetes 1.6.4 is not supported by this release of minikube

Кроме того, в apiVersions произошли огромные изменения между версиями 1.15 и 1.16. Более подробную информацию можно найти здесь .

В этом потоке Stackoverflow объяснено, что показано в kubectl version.

Вторая строка («Версия сервера») содержит версию apiserver.

Как, например, Network Policy API было введено в Kubernetes 1.7, так что если вы хотите используйте его в 1.6, вы получите ошибку, поскольку API не сможет ее распознать.

Я воспроизвел вашу проблему.

minikube:~$ kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3", GitCommit:"06ad960bfd03b39c8310aaf92d1e7c12ce618213", GitTreeState:"clean", BuildDate:"2020-02-11T18:14:22Z", GoVersion:"go1.13.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.3", GitCommit:"0480917b552be33e2dba47386e51decb1a211df6", GitTreeState:"dirty", BuildDate:"2017-05-12T10:50:10Z", GoVersion:"go1.7", Compiler:"gc", Platform:"linux/amd64"}
minikube:~$ kubectl get pods
Error from server (NotAcceptable): the server was unable to respond with a content type that the client supports (get pods)
minikube:~$ kubectl get nodes
Error from server (NotAcceptable): the server was unable to respond with a content type that the client supports (get nodes)
minikube:~$ kubectl run nginx --image=nginx
WARNING: New generator "deployment/apps.v1" specified, but it isn't available. Falling back to "deployment/apps.v1beta1".
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
error: no matches for kind "Deployment" in version "apps/v1"

Как я упоминал ранее, Network Policy была введена в 1.7. Когда вы попытаетесь применить этот конфиг из официальных документов Kubernetes, он покажет ту же ошибку, что и у вас.

minikube:~$ kubectl apply -f network.yaml 
Error from server (NotFound): the server could not find the requested resource.

Наиболее рекомендуемый способ - установить новейшие версии docker, kubernetes. и minikube (безопасность и новейшие функции) на основе Docker документов и Kubernetes kubectl docs и Minikube .

Другой вариант - понизить версию всех компонентов.

2 голосов
/ 19 февраля 2020

Понизьте вашу версию kubectl. И, пожалуйста, упомяните официальную версию c, которую вы выполнили для начальной установки.

sudo apt-get install -qy kubectl=1.16.3-00

На второй ноте я думаю, что Дэвид прав. Возможно, у вас есть несоответствие в API в вашем манифесте и версии k8s.

...