写点什么

如何在 Kubernetes 中创建命名空间?

作者:wljslmz
  • 2022-11-13
    中国台湾
  • 本文字数:1930 字

    阅读完需:约 6 分钟

如何在 Kubernetes 中创建命名空间?

命名空间系统对计算来说并不陌生,我们大多数人可能在几乎所有编程语言中都见过命名空间,无论您在哪里遇到命名空间,其基本目的都是相同的:用于逻辑分组


同样,在 Linux 内核中,也有命名空间的概念,比如存储和网络命名空间。每个容器也有自己的存储命名空间和网络命名空间,用于资源的隔离和分配。


Kubernetes 命名空间是指由同一物理集群支持的虚拟集群,此选项专为在多个用户分布在多个工作团队或项目的环境中使用而设计。


本文将介绍如何创建 Kubernetes 命名空间。

命名空间类型

Kubernetes 中有三种命名空间。


  • Default:默认命名空间用于没有其他命名空间的对象。

  • Kube-system:Kubernetes 系统起源对象的命名空间。

  • Kube-public:用于需要对所有用户公开可用的资源的命名空间。

查看命名空间

可以使用以下命令查看当前的命名空间:


kubectl get namespaces
复制代码


它将列出现有的命名空间、状态等。


如果想知道特定命名空间的概要,可以使用以下命令:


Kubectl get namespaces <name>
复制代码


还可以使用以下命令获取特定命名空间的详细描述:


Kubectl describe namespace <name>
复制代码


描述显示资源配额(如果指定)和资源范围,其中资源配额显示命名空间可以使用的资源总量,资源范围显示可以消耗的最小或最大资源。


还显示名称空间是活动的还是终止的,这是任何命名空间的两种状态,活动命名空间是当前使用的命名空间,而终止命名空间是正在删除且无法进一步使用的命名空间。

创建命名空间

尝试在不存在的特定命名空间中创建一个 pod。


要在“test-env”命名空间中创建一个 pod,请执行以下命令。


kubectl run nginx --image=nginx --namespace=test-env #尝试在不存在的命名空间中创建一个pod。
复制代码


Pod 不会在不存在的命名空间中创建,因此我们首先需要创建一个命名空间。


要创建命名空间“test-env”,请执行以下命令(k8s create namespace)。


kubectl create namespace test-env #创建命名空间kubectl get namespace #获取命名空间列表
复制代码



现在我们有了一个命名空间,我们想在其中创建一个 pod。


要在我们创建的命名空间中创建一个 pod,请将 --namespace=test-env 选项传递给命令。


kubectl run nginx --image=nginx --namespace=test-env #在命名空间中创建一个pod。
复制代码


如果您尝试在不指定命名空间的情况下获取 pod,您将无法获取 pod 的详细信息。


kubectl get pods #获取pod列表
复制代码


要获取属于“test-env”命名空间的 pod 的详细信息,请使用以下命令。


kubectl get pods --namespace=test-env #获取指定命名空间中的pod列表
复制代码



如果要将命名空间设置为默认命名空间,则不需要在命令中指定命名空间选项,请使用以下命令。


kubectl config set-context --current --namespace=test-env #设置默认命名空间
复制代码


现在无需在命令中指定命名空间即可获取 pod 的详细信息。


kubectl get pods #从默认命名空间中获取 pod 列表 
复制代码



要切换到默认命名空间,请使用以下命令。


kubectl config set-context --current --namespace=default #检查命名空间为默认值kubectl get pods #获取pod列表
复制代码



要检查哪个是默认命名空间,请使用以下命令。


kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.kubectl config view --minify | grep namespace:
复制代码



检查哪些 Kubernetes 资源是命名空间,执行以下命令。


kubectl api-resources --namespaced=true #获取可以在命名空间中的Kubernetes对象
复制代码



要查看哪些 Kubernetes 资源不在命名空间中,请使用以下命令。


kubectl api-resources --namespaced=false #获取永远不能在命名空间中的Kubernetes对象列表
复制代码



您可以使用下面提到的命令获取命名空间的详细信息。


kubectl get namespaces #获取命名空间列表。kubectl describe namespace test-env #获取命名空间的详细信息。
复制代码



命名空间也可以使用 .yml 文件创建。


vim namespace-using-file.yml #创建命名空间定义文件
复制代码



执行以下命令以创建对象定义文件中指定的命名空间。


kubectl create -f namespace-using-file.yml #使用.yml文件创建命名空间kubectl get namespaces #获取命名空间列表
复制代码



当您不再需要命名空间时,可以使用以下命令将其删除。


kubectl get namespaces #获取命名空间列表kubectl delete namespaces env-prod test-env #删除一个命名空间kubectl get namespaces #获取命名空间列表
复制代码



使用命令“kubectl change namespace”切换到不同的命名空间。

结论

Kubernetes 使得用户可以自由地在自己的空间中使用分配的资源进行工作,以最佳方式利用他们的时间和资源,而不会在团队之间造成混乱,Kubernetes 命名空间有助于应用程序开发,并使开发人员的日常任务易于完成。

发布于: 刚刚阅读数: 3
用户头像

wljslmz

关注

极致主义者,追求技术的路上,勇往直前! 2021-05-24 加入

公众号:网络技术联盟站 👍InfoQ签约作者 👍阿里云社区签约作者 👍华为云 云享专家 👍BOSS直聘 创作王者 👍腾讯课堂创作领航员 博客+论坛:https://www.wljslmz.cn 工程师导航:https://www.wljslmz.com

评论

发布
暂无评论
如何在 Kubernetes 中创建命名空间?_Kubernetes_wljslmz_InfoQ写作社区