Error while creating deployment in vote namespace

controlplane ~ ➜ cat vote-app-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: vote-deployment
namespace: vote
labels:
name: vote-deployment
app: vote-demo
spec:
replicas: 1
selector:
matchLabels:
name: vote-app-pod
app: demo-app
template:
metadata:
name: vote-app-pod
labels:
name: vote-app-pod
app: demo-app
spec:
containers:
- name: vote-app
image: kodekloud/examplevotingapp_vote:before

controlplane ~ ➜ kubectl config view --minify | grep namespace:
namespace: vote

controlplane ~ ➜ kubectl create -f vote-app-deployment.yml
Error from server (NotFound): error when creating “vote-app-deployment.yml”: namespaces “vote” not found

controlplane ~ :heavy_multiplication_x:

I think you should be checking for namespace by typing: kubectl get ns and not kubectl config view (the config view command is used to view your --kubeconfig file).

Please see below:

controlplane ~ ✖ kubectl get namespaces 
NAME              STATUS   AGE
default           Active   25m
kube-node-lease   Active   25m
kube-public       Active   25m
kube-system       Active   25m

controlplane ~ ➜  kubectl config view 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://controlplane:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: DATA+OMITTED
    client-key-data: DATA+OMITTED

so what I think you should do is to actually create the namespace “vote” before running your deployment. Like so:

controlplane ~ ✖ kubectl create namespace vote
namespace/vote created

I hope that helps.

Ola