1. The purpose of this post

Sometimes, when you operate on a resource with kubectl in kubernetes, you would get this error.

error: SchemaError(io.k8s.api.core.v1.ServiceSpec): invalid object doesn't have additional properties

2. Environments

  • docker 19
  • kubernetes 1.17

3. The solution

This is caused by the version of your kubectl, check your kubectl’s version like this:

➜  k8s git:(master) 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:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:12:17Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}

You can see that the version of the client is 1.10,but the server’s version is 1.17, so the solution is upgrade the kubectl client version like this:

If you are using mac:

brew install kubernetes-cli

If you are using linux:

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl

Now everything works fine.