楠木軒

如何在Kubernetes中創建命名空間?

由 司馬盼香 發佈於 科技

  【51CTO.com快譯】

  多個團隊使用同一個集羣時,命名空間很有用。有可能發生名稱衝突時使用命名空間。它可能是多個集羣之間的虛擬牆。比如説,我們在Kubernetes集羣中不可能有名稱一樣的pod,但使用命名空間,我們實際上可以劃分集羣,擁有名稱一樣的pod。

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

  •它使用同一個命名空間幫助pod到pod的通信。

  •它充當駐留在同一個理集羣上的虛擬集羣。

  •它在團隊及其環境之間提供了邏輯隔離。

  我們在本文中將創建一個命名空間,並在剛創建的命名空間中創建一個pod。我們還將看到如何將命名空間設置為默認命名空間。

  前提條件

  有至少1個worker節點的Kubernetes集羣

  如果您想學習創建Kubernetes集羣,請點擊此處(https://www.howtoforge.com/setup-a-kubernetes-cluster-on-aws-ec2-instance-ubuntu-using-kubeadm/)。本指南將幫助您在AWS Ubuntu 18.04 EC2實例上創建有1個Master和2個節點的Kubernetes集羣。

  我們要做什麼?

  創建命名空間

  創建命名空間

  想列出Kubernetes集羣中所有可用的命名空間,請執行以下命令。

  kubectl get namespace #Get all namespace in the cluster

  圖1

  現在,不妨在並不存在的特定命名空間中創建pod。

  想在“test-env”命名空間中創建一個pod,執行以下命令。

  kubectl run nginx --image=nginx --namespace=test-env #Try to create a pod in the namespace that does not exist.

  pod不會在不存在的命名空間中創建,因此我們先要創建一個命名空間。

  想創建命名空間“test-env”,執行以下命令。

  kubectl create namespace test-env #Create a namespace

  kubectl get namespace #Get a list of namespaces

  圖2

  現在,我們有了想在其中創建pod的命名空間。

  想在我們創建的這個空間中創建pod,將--namespace = test-env選項傳遞給命令。

  kubectl run nginx --image=nginx --namespace=test-env #Create a pod in the namespace.

  如果您試圖在未指定命名空間的情況下創建pod,就無法獲得pod的詳細信息。

  kubectl get pods #Get a list of pods

  想獲得屬於“test-env”命名空間的pod的詳細信息,使用以下命令。

  kubectl get pods --namespace=test-env #Get a list of pods in the specified namespace

  圖3

  如果您想把命名空間設置為默認命名空間,從而不需要在命令中指定命名空間選項,請使用以下命令。

  kubectl config set-context --current --namespace=test-env #Set default namespace

  現在,無需在命令中指定命名空間即可獲得pod的詳細信息。

  kubectl get pods #Get a list of pods from the default namespace

  圖4

  想切換到默認命名空間,請使用以下命令。

  kubectl config set-context --current --namespace=default #Check the namespace to default

  kubectl get pods #Get a list of pods

  圖5

  想檢查哪個是默認命名空間,請使用以下命令。

  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資源是命名空間,執行以下命令。

  kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

  圖7

  想查看哪些Kubernetes資源不在命名空間中,請使用以下命令。

  kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

  圖8

  您可以使用下述命令獲得命名空間的詳細信息。

  kubectl get namespaces #Get a list of namespaces.

  kubectl describe namespace test-env #Get details of a namespace.

  圖9

  還可以使用.yml文件創建命名空間。

  vim namespace-using-file.yml #Create a namespace definition file

  圖10

  執行以下命令以創建對象定義文件中指定的命名空間。

  kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file

  kubectl get namespaces #Get a list of namespaces

  圖11

  您不再需要命名空間時,只需使用以下命令即可刪除它。

  kubectl get namespaces #Get a list of namespaces

  kubectl delete namespaces env-prod test-env #Delete a namespace

  kubectl get namespaces #Get a list of namespaces

  圖12

  結論

  我們在本文中瞭解了命名空間、創建命名空間、更改默認命名空間,以及檢查命名空間中存在和不存在的Kubernetes資源。我們還看到了如何在我們選擇的命名空間中創建Kubernetes對象(這裏是pod)。

  原文標題:How to create Namespaces in Kubernetes

  【51CTO譯稿,合作站點轉載請註明原文譯者和出處為51CTO.com】