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

当多个团队使用同一个集群时,命名空间很有帮助,在名称冲突时使用,它可以是多个集群之间的虚拟墙。例如,我们不能在 Kubernetes 集群中拥有同名的 pod,但使用命名空间我们可以虚拟地划分集群并拥有同名的 pod。

命名空间的一些重要功能如下。

  1. 有助于使用相同的命名空间进行 pod 到 pod 的通信。
  2. 充当一个虚拟集群,可以位于同一物理集群之上。
  3. 提供了团队及其环境之间的逻辑分离。

在本文中,我们将创建一个命名空间,并在新创建的命名空间中创建一个 pod,我们还将看到如何将命名空间设置为默认命名空间。

先决条件

  1. 具有至少 1 个工作节点的 Kubernetes 集群。

本文将帮助您在 AWS Ubuntu 18.04 EC2 实例上创建具有 1 个主节点和 2 个节点的 Kubernetes 集群。

我们将要做什么

  1. 创建命名空间

创建命名空间

要列出 Kubernetes 集群中所有可用的命名空间,请执行以下命令。您可以拥有多个命名空间,并且命名空间可以具有命名空间元数据。

kubectl get namespace #获取集群中的所有命名空间
图片[1]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

现在让我们尝试在不存在的特定命名空间中创建一个 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 #获取命名空间列表
图片[2]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

现在我们有了一个命名空间,我们想在其中创建一个 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列表
图片[3]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

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

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

kubectl get pods #从默认命名空间中获取 pod 列表 
图片[4]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl config set-context --current --namespace=default #检查命名空间为默认值
kubectl get pods #获取pod列表
图片[5]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

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:
图片[6]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl api-resources --namespaced=<strong>true</strong> #获取可以在命名空间中的Kubernetes对象
图片[7]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl api-resources --namespaced=<strong>false</strong> #获取永远不能在命名空间中的Kubernetes对象列表
图片[8]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl get namespaces #获取命名空间列表。
kubectl describe namespace test-env #获取命名空间的详细信息。
图片[9]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

vim namespace-using-file.yml #创建命名空间定义文件
图片[10]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl create -f namespace-using-file.yml #使用.yml文件创建命名空间
kubectl get namespaces #获取命名空间列表
图片[11]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

kubectl get namespaces #获取命名空间列表
kubectl delete namespaces env-prod test-env #删除一个命名空间
kubectl get namespaces #获取命名空间列表
图片[12]-如何在Kubernetes中创建命名空间?-不念博客
Kubernetes

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

结论

在本文中,我们了解了命名空间、创建命名空间、更改默认命名空间、检查命名空间中和不在命名空间中的 Kubernetes 资源,我们还看到了如何在我们选择的命名空间中创建 Kubernetes 对象(此处为 pod)。

© 版权声明
THE END