12

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

  1. 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
  1. 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
  1. 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.

A. Gardner
  • 571
  • 2
  • 7
  • 17

6 Answers6

3

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.

A. Gardner
  • 571
  • 2
  • 7
  • 17
3

In my case, I was missing to have executed before:

kubectl create namespace n3
david.perez
  • 6,090
  • 4
  • 34
  • 57
  • 1
    While this works, better approach is to update yaml file responsible for namespace creation. That way it is much more reproducible and ready for production use. – Fusion Aug 18 '23 at 19:31
2

Add namespace: n3 to deployment spec

P Ekambaram
  • 15,499
  • 7
  • 34
  • 59
1

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
rafalkasa
  • 1,743
  • 20
  • 20
0

I think you can use kubens and kubectx to verify on which namespace and context you are after that verify your kubernetes manifest files

rassakra
  • 1,062
  • 5
  • 9
0

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
  ------
  -------
sujith s
  • 864
  • 11
  • 20