解决 Kubernetes 出现 “the server could not find the requested resource” 错误

127次阅读
没有评论

问题描述

在部署 Kubernetes 到 Ubuntu 16.04 后,无法创建一个 Kubernetes Pod。他在运行 kubectl create -f a.yml 命令时,遇到了以下错误信息:

Error from server (NotFound): the server could not find the requested resource

用户期望上述命令能够创建一个 Pod。

用户还运行了 kubectl cluster-info dump 命令,并得到了一些输出信息。此外,用户还运行了 kubectl get ns 命令,但得到了以下错误信息:

the server doesn't have a resource type "namespaces"

用户提供的问题补充信息如下:
1. 运行 kubectl get ns 命令会发生什么?
2. 您使用的 Kubernetes 版本是什么?
3. Images 字段为 null,而您正在请求一个名为 ‘nginx’ 的镜像,这看起来不像是一个注册表镜像名称,因此我猜测 Kubernetes 不知道该怎么处理。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据 Kubernetes 官方文档的说明,您需要使用与集群版本相差一个次要版本的 kubectl 版本。例如,v1.2 的 kubectl 客户端应该可以与 v1.1、v1.2 和 v1.3 的主节点一起使用。使用最新版本的 kubectl 可以避免出现意外问题。

所以,您需要降级您的 kubectl 版本或升级您的集群版本。

方案2

根据您提供的信息,您的 Kubernetes 集群可能没有正确部署。我已经验证了使用您在问题中提供的模板部署 nginx 是可行的。

与您的集群相比,我使用的集群有几个用于托管仪表板等的 k8s 镜像。

此外,为了部署镜像,至少需要返回一些命名空间。

您可以运行以下命令来检查是否存在命名空间:

kubectl get ns

如果没有返回任何命名空间,请尝试创建默认命名空间:

kubectl create namespace default

然后再次运行 kubectl get ns 命令来确认命名空间是否已创建。

希望这些解决方案能够帮助您解决问题。如果您有任何其他问题,请随时提问。

正文完