我正在关注该教程(https://www.baeldung.com/spring-boot-minikube) 我想在yaml文件(simple-crud-dpl.yaml)中创建Kubernetes部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-crud
spec:
selector:
matchLabels:
app: simple-crud
replicas: 3
template:
metadata:
labels:
app: simple-crud
spec:
containers:
- name: simple-crud
image: simple-crud:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
但是当我运行kubectl create -f simple-crud-dpl.yaml
时,我得到了:
error: SchemaError(io.k8s.api.autoscaling.v2beta2.MetricTarget): invalid object doesn't have additional properties
我正在使用kubectl的最新版本:
kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
我也在本地使用minikube,如教程中所述。一切正常,直到部署和服务。我做不到。
答案 0 :(得分:45)
在用brew安装kubectl之后,您应该运行:
rm /usr/local/bin/kubectl
brew link --overwrite kubernetes-cli
以及可选地:
brew link --overwrite --dry-run kubernetes-cli
。
答案 1 :(得分:14)
我第二次回答@rennekon。我发现我的机器上运行了docker,该机器还安装了kubectl
。安装kubectl导致显示此问题。
我采取了以下步骤:
brew uninstall kubectl
brew install kubectl
brew link --overwrite kubernetes-cli
创建符号链接然后,我能够成功运行我的kubectl apply
命令。
答案 2 :(得分:12)
安装Docker后,我在minikube / Windows 10上遇到了相同的问题。
这是由于该线程中已经多次提及kubectl的版本不匹配引起的。 Docker安装了1.10版本的kubectl。
您有两种选择:
1)确保k8s bin的路径在docker中的路径上方
2)用正确的
答案 3 :(得分:5)
您的客户端版本太旧。在我的环境中,该版本随Docker一起提供。我必须从https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/windows/amd64/kubectl.exe下载新客户端,现在可以正常工作:
kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
答案 4 :(得分:5)
我也有同样的问题。在我的系统中, kubectl 是从安装了Docker时预安装的docker运行的。您可以使用以下命令进行检查
ls -l $(which kubectl)
返回为
/ usr / local / bin / kubectl-> /Applications/Docker.app/Contents/Resources/bin/kubectlcode。
现在我们必须用使用brew安装的kubectl覆盖符号链接
rm /usr/local/bin/kubectl
brew link --overwrite kubernetes-cli
(最佳)
brew unlink kubernetes-cli && brew link kubernetes-cli
要验证
ls -l $(which kubectl)
答案 5 :(得分:4)
您使用了错误的kubectl版本。
Kubectl与in the official docs所述的向上和向下兼容的版本1。
该错误令人困惑,但这仅表示您的版本1.10并未将所有必需的参数发送到1.14 API。
答案 6 :(得分:2)
我在Windows 10上同时安装了Docker Client和Minikube。我收到下面的错误;
错误:SchemaError(io.k8s.api.core.v1.Node):无效的对象没有其他属性
我通过将kubectl.exe的版本更新为minikube所使用的版本来解决了该问题。步骤如下:
注意:Minikube倾向于使用最新版本的Kubernetes,因此建议抓住最新的Kubectl。
导航到您的kubectl所在的Docker路径,例如
C:\Program Files\Docker\Docker\resources\bin
将下载的kubectl.exe放在此处。如果它要求您更换它,请这样做。
现在在Powershell中输入refreshenv
。
检查新版本是否已放置在此处; kubectl version
。
现在您很好,请重试您正在执行的所有任务。
答案 7 :(得分:1)
今天在我的Mac上安装kubectl之后遇到了相同的问题。 [通过brew uninstall kubectl
卸载kubectl,然后重新安装[brew install kubectl
]为我解决了这个问题。
答案 8 :(得分:1)
Mac用户!!!这适用于那些首先安装了docker桌面的用户。使用apply命令时将显示错误。正如某些人在此处所说的那样,错误是由于版本不匹配而引起的。我没有使用自制软件安装kubectl。当您为Mac安装Docker桌面时,宁可kubectl自动获取安装。
要解决此问题,请执行以下操作: 删除kubectl可执行文件
rm /usr/local/bin/kubectl
下载kubectl: curl -LO https://storage.googleapis.com/kubernetes-release/release/ $(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
更改权限:
chmod +x ./kubectl
移动可执行文件:
sudo mv ./kubectl /usr/local/bin/kubectl
就是这样! 只是为了证明它在这里工作是输出:
kubectl apply -f ./deployment.yaml
deployment.apps/tomcat-deployment created
确保yml文件正确。我从这里下载了一个有效的文件进行测试: https://github.com/LevelUpEducation/kubernetes-demo/tree/master/Introduction%20to%20Kubernetes/Your%20First%20k8s%20App
答案 9 :(得分:1)
对我来说,安装Docker是个问题。由于Docker现在具有Kubernetes支持,因此它会同时安装kubectl和自己的安装程序。我在不知道的情况下下载了kubectl和minikube,然后我的minikube被Docker的kubectl安装所使用。
请确保您也没有发生这种情况。
第二个原因是您的.yaml文件中的apiVersion不推荐使用。
答案 10 :(得分:1)
我也遇到了类似的错误
错误:SchemaError(io.k8s.api.storage.v1beta1.CSIDriverList):无效的对象没有其他属性
我的问题是我的Mac正在使用随gcp工具安装的Google的kubectl。我的路径先进入那里,然后进入/ usr / local / bin /
一旦我从/ usr / local / bin运行kubectl,我的问题就消失了。
答案 11 :(得分:1)
就我而言,kubectl始终使用Google的gcloud kubectl工具,或者安装的Homebrew和安装Gcloud的kubectl之间很可能存在冲突。我卸载了Homebrew kubectl并将gcloud工具升级到最新版本,最终在此过程中也升级了kubectl。它解决了我的问题。
答案 12 :(得分:0)
我知道已经回答了这个问题,但是我应该发布我的答复,因为上面的答复很有帮助,但是花了一些时间才将其与Azure Dev Ops相关。
当我尝试从Azure Devops将应用程序部署到AKS群集时遇到此错误。如上所述,此错误可能出现的问题之一是由于版本不匹配,这是我的原因。我通过将我的AKS版本更新到kubectl高级配置部分中进行了修复,如下图所示
答案 13 :(得分:0)
从表面上看,您在空格中存在不一致之处。缩进使用2个空格。 我对部署here有完整的解释。我认为当您固定空间时应该可以使用。
希望有帮助
答案 14 :(得分:0)
在Windows 10上运行kubectl explain pod
时出现错误消息
error: SchemaError(io.k8s.api.core.v1.NodeCondition): invalid object doesn't have additional properties
我同时安装了Minikube和Docker Desktop。如先前的答案中所述,此错误的原因是服务器(主要1次要15)和客户端版本(主要1次要10)之间不匹配。客户端版本来自Docker Desktop。 要修复,我已按照here
中的说明将kubectl客户端版本升级到v1.15.1。curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.1/bin/windows/amd64/kubectl.exe
答案 15 :(得分:0)
在Windows 10.0上,卸载Docker帮助我解决了这个问题。使用kubectl和minikube。
答案 16 :(得分:0)
您可以在命令中使用“ --validate = false”。例如:
kubectl create -f simple-crud-dpl.yaml --validate=false
答案 17 :(得分:0)
根据kubectl docs,
您所使用的kubectl版本必须在集群的一个较小版本差异之内。
kubectl v1.10客户端显然向kubectl v1.14服务器发出请求,而没有一些新的必需参数(在4个次要版本中)。
对于brew
用户,请重新安装kubernetes-cli
。值得检查什么安装了不兼容的版本。对于brew
用户,请检查命令符号链接ls -l $(which kubectl)
。
答案 18 :(得分:0)
除非您没有本地图像,否则我认为问题imagePullPolicy
不会出问题。该错误与autoscaling
有关,这意味着它无法创建容器的副本。
您可以设置replicas: 1
并尝试一下吗?