Kubernetes中创建命名空间实现方法

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Kubernetes中创建命名空间实现方法

wljslmz   2022-11-16 我要评论

正文

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

同样,在 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 命名空间有助于应用程序开发,并使开发人员的日常任务易于完成。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们