'Namespaces not found
I see the following error when I run my deployment:
Error from server (NotFound): error when creating "n3deployment.yaml": namespaces "n2" not found
My n3deployment.yaml has no reference to n2?
Step By Step
- Ensure everything is empty
c:\temp\k8s>kubectl get pods
No resources found.
c:\temp\k8s>kubectl get svc
No resources found.
c:\temp\k8s>kubectl get deployments
No resources found.
c:\temp\k8s>kubectl get namespaces
NAME STATUS AGE
default Active 20h
docker Active 20h
kube-public Active 20h
kube-system Active 20h
- Create files
n3namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: n3
n3service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-n3
namespace: n3
labels:
app: my-app-n3
spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: http
protocol: TCP
selector:
app: my-app-n3
n3deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-n3
labels:
app: my-app-n3
spec:
replicas: 1
selector:
matchLabels:
app: my-app-n3
template:
metadata:
labels:
app: my-app-n3
spec:
containers:
- name: waiter
image: waiter:v1
ports:
- containerPort: 80
- Apply configuration
c:\temp\k8s>kubectl apply -f n3namespace.yaml
namespace "n3" created
c:\temp\k8s>kubectl apply -f n3service.yaml
service "my-app-n3" created
c:\temp\k8s>kubectl apply -f n3deployment.yaml
Error from server (NotFound): error when creating "n3deployment.yaml": namespaces "n2" not found
I used to have a namespace called n2 but, as you can see, it no longer exists.
Solution 1:[1]
I had previously created two contexts and my minikube cluster was set to still be in the n2 context. I deleted the context, re-ran the command and it worked.
Solution 2:[2]
Add namespace: n3 to deployment spec
Solution 3:[3]
In my case I created context and set --namespace to not existing one, the solution was switch namespace only using the kubectl commands:
kubectl config set-context --current --namespace=<namespace>
You can check if in your situation is the same problem using:
kubectl get svc -o wide
kubectl describe sa default | grep Namespace
Solution 4:[4]
I think you can use kubens and kubectx to verify on which namespace and context you are after that verify your kubernetes manifest files
Solution 5:[5]
In your n3deployment.yaml file add namespace as well under metadata section like below
n3deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-n3
namespace: n3
labels:
app: my-app-n3
------
-------
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | A. Gardner |
| Solution 2 | P Ekambaram |
| Solution 3 | rafalkasa |
| Solution 4 | rassakra |
| Solution 5 | sujith s |
