我是按照官方说明安装kubectl的,但是尝试kubectl apply -f
时遇到“ Error from server (NotFound): the server could not find the requested resource
”错误。
Internet表示这是因为kubectl的客户端和服务器版本不同。
我将检查kubectl的准确性:
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-01-18T23:30:10Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.4", GitCommit:"d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae", GitTreeState:"dirty", BuildDate:"2017-06-22T04:31:09Z", GoVersion:"go1.7.5", Compiler:"gc", Platform:"linux/amd64"}
如果是官方安装,为什么版本如此不同?真的是这个错误的问题吗?
我也有docker,docker-compose和minikube。
OS Linux Mint
答案 0 :(得分:2)
降级您的kubectl版本。并且请提及您最初安装时遵循的官方文档。
sudo apt-get install -qy kubectl=1.16.3-00
第二点,我认为戴维是正确的。也许您的清单文件和k8s版本中的api不匹配。
答案 1 :(得分:2)
@David Maze提到将社区Wiki发布为根本原因
正如评论中指出的那样,您的版本非常不同。
Kubernetes 1.7是在 2017年7月时实现的,当Kubernetes 1.17在2020年1月发布时(相差将近2.5年)。另一件事是Docker
的版本,而Minikube
必须支持kubernetes
的版本。
例如,如果您想在最新的Minikube
版本上运行Kubernetes 1.6.3,则会发生错误。
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之间发生了巨大变化。可以在here中找到更多详细信息。
在this Stackoverflow thread中解释了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官方文档中申请this config时,它将显示与您相同的错误。
minikube:~$ kubectl apply -f network.yaml
Error from server (NotFound): the server could not find the requested resource.
最推荐的方法是基于Docker docs和Kubernetes kubectl docs和Minikube安装docker,kubernetes和minikube的最新版本(安全性和最新功能)。
另一个选择是降级所有组件。