Unknown field "setHostnameAsFQDN" despite using latest kubectl client

3/11/2021

I have a deployment yaml file that looks like this:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      setHostnameAsFQDN: true
      hostname: hello
      subdomain: world
      containers:
      - name: hello-kubernetes
        image: redis 

However, I am getting this error:

$ kubectl apply -f dep.yaml  

error: error validating "dep.yaml": error validating data: ValidationError(Deployment.spec.template.spec): unknown field "setHostnameAsFQDN" in io.k8s.api.core.v1.PodSpec; if you choose to ignore these errors, turn validation off with --validate=false

My kubectl version:

$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}

After specifying --validate=falsee, hostname and hostname -f still return different values.

I believe I missunderstood something. Doc says that setHostnameAsFQDN will be available from kubernetes v1.20

-- NurlashKO
deployment
kubectl
kubernetes
podspec

1 Answer

3/11/2021

You showed kubectl version. Your kubernetes version also need to be v1.20. Make sure you are using kubernetes version v1.20.

Use kubectl version for seeing both client and server version. Where client version refers to kubectl version and server version refers to kubernetes version.

As far the k8s v1.20 release note doc: Previously introduced in 1.19 behind a feature gate, SetHostnameAsFQDN is now enabled by default. More details on this behavior is available in documentation for DNS for Services and Pods

-- Sahadat Hossain
Source: StackOverflow