命名空间未找到。

12
我运行部署时看到以下错误:
服务器返回错误(NotFound):创建“n3deployment.yaml”时出错:未找到命名空间“n2”。
但是我的n3deployment.yaml没有涉及到n2?
步骤如下:
1. 确保一切都为空。
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. 创建文件
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. 应用配置
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

我曾经有一个名为n2的命名空间,但是,正如你所看到的,它已经不存在了。

6个回答

3
在我的情况下,我之前没有执行过:
kubectl create namespace n3

1
虽然这样做可以实现目标,但更好的方法是更新负责命名空间创建的yaml文件。这样做更具可复制性,并且适合生产环境使用。 - Fusion

3

我之前创建了两个上下文,而我的minikube集群仍然设置为处于n2上下文中。我删除了该上下文,重新运行命令,它就可以正常工作了。


2
在部署规范中添加命名空间n3。原始回答:Original Answer。

1
在我的情况下,我创建了上下文并将 --namespace 设置为不存在的一个,解决方案是仅使用 kubectl 命令切换命名空间:
kubectl config set-context --current --namespace=<namespace>

您可以使用以下方法检查是否存在与您情况相同的问题:

kubectl get svc -o wide
kubectl describe sa default | grep Namespace

0
在您的n3deployment.yaml文件中,在元数据部分下面添加命名空间,如下所示。
n3deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-n3
  namespace: n3
  labels:
  app: my-app-n3
  ------
  -------

0

我认为你可以使用kubens和kubectx来验证当前所在的命名空间和上下文,然后再验证你的Kubernetes清单文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接