【问题标题】:Namespaces not found未找到命名空间
【发布时间】:2019-11-20 15:31:12
【问题描述】:

我在运行部署时看到以下错误:

Error from server (NotFound): error when creating "n3deployment.yaml": namespaces "n2" not found

我的 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 的命名空间,但如您所见,它不再存在。

【问题讨论】:

    标签: kubernetes namespaces minikube


    【解决方案1】:

    我之前创建了两个上下文,我的 minikube 集群设置为仍位于 n2 上下文中。我删除了上下文,重新运行了命令,它起作用了。

    【讨论】:

      【解决方案2】:

      将命名空间:n3 添加到部署规范

      【讨论】:

        【解决方案3】:

        在我的情况下,我创建了上下文并将 --namespace 设置为不存在的上下文,解决方案是仅使用 kubectl 命令切换命名空间:

        kubectl config set-context --current --namespace=<namespace>
        

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

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

        【讨论】:

          【解决方案4】:

          我认为您可以使用 kubens 和 kubectx 来验证您在哪个命名空间和上下文上,然后验证您的 kubernetes 清单文件

          【讨论】:

            【解决方案5】:

            在您的 n3deployment.yaml 文件中添加命名空间以及元数据部分,如下所示

            n3deployment.yaml
            apiVersion: apps/v1
            kind: Deployment
            metadata:
              name: my-app-n3
              namespace: n3
              labels:
              app: my-app-n3
              ------
              -------
            

            【讨论】:

              猜你喜欢
              • 2015-02-16
              • 1970-01-01
              • 1970-01-01
              • 2019-03-03
              • 1970-01-01
              • 2012-03-31
              相关资源
              最近更新 更多