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 ~ 
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