Kubernetes:无法删除命名空间

Sno*_*ash 0 kubernetes

我刚刚创建了一个命名空间,没有对它执行任何操作,现在将其删除。然而,当我列出上下文时,我仍然可以在那里看到它。好像已经被删除了,无法再删除了。为什么当我获取上下文时仍然可以看到它列出?

kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
*         dev        minikube   minikube   dev
          minikube   minikube   minikube

kubectl delete namespace dev
namespace "dev" deleted

kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
*         dev        minikube   minikube   dev
          minikube   minikube   minikube
Run Code Online (Sandbox Code Playgroud)

我切换了上下文以防万一,但仍然遇到同样的问题。例如

kubectl delete namespace dev
Error from server (NotFound): namespaces "dev" not found

kubectl config get-contexts
CURRENT   NAME       CLUSTER    AUTHINFO   NAMESPACE
          dev        minikube   minikube   dev
*         minikube   minikube   minikube
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我列出名称空间时,我没有看到它。例如

kubectl get namespaces
Run Code Online (Sandbox Code Playgroud)

Ash*_*uri 5

in只是一个本地配置,包含有关特定集群或命名空间的详细信息(元数据)contextkubectl这是使用客户端进行集群/命名空间管理所需的配置kubectl

因此,当您键入 时kubectl config <any_command>,它只是在计算机本地存储的文件中进行查找。运行以下命令以了解有关此命令以及如何控制配置文件位置的更多信息:

kubectl config --help
Run Code Online (Sandbox Code Playgroud)

删除集群或命名空间不会删除关联的上下文。原因是删除集群或命名空间是在集群上运行的异步操作。此操作实际完成可能需要几秒钟以上的时间。因此,kubectl在向集群主机发出删除命令后,无法立即从配置文件中删除上下文。

要回答您的问题,您必须使用以下命令手动删除上下文:

kubectl config delete-context dev
Run Code Online (Sandbox Code Playgroud)