问题描述
在部署 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
命令来确认命名空间是否已创建。
希望这些解决方案能够帮助您解决问题。如果您有任何其他问题,请随时提问。