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 命名空間有助於應用程序開發,並使開發人員的日常任務易於完成。

以上就是Kubernetes中創建命名空間實現方法的詳細內容,更多關於Kubernetes 創建命名空間的資料請關註WalkonNet其它相關文章!

推薦閱讀: