k8s名稱空間資源


namespace是k8s集群級別的資源,用於將集群分隔為多個隔離的邏輯分區以配置給不同的用戶、租戶、環境或項目使用,例如,可以為development、qa、和production應用環境分別創建各自的名稱空間。

k8s的絕大多數資源都隸屬於名稱空間級別(另一個是全局級別或集群級別),namespace為這類資源提供了隔離的作用域,同一名稱空間內的同一類資源名必須是唯一的,但跨名稱空間時並無此限制。k8s還有一些資源隸屬於集群級別的,如node、namespace、PersistentVolume等資源,它們不屬於任何名稱空間,因此資源對象的名稱必須全局唯一。

k8s的名稱空間資源不同於linux系統的名稱空間,它們是各自獨立的概念,另外,k8s的名稱空間並不能實現pod間的通信隔離,它僅用於限制資源對象名稱的作用域。

1、查看名稱空間及其資源對象

k8s集群默認提供了幾個名稱空間用於特定目的,例如,kube-system主要用於運行系統級資源,而default則為那些未指定名稱空間的資源操作提供一個默認值。

使用kubectl get namespace可以查看namespace資源,使用kubectl describe namespace $NAME可以查看特定的名稱空間的詳細信息。

2、管理namespace資源

namespace是k8sapi的標准資源類型之一,namespace資源屬性較少,通常只需要指定名稱即可創建,如“kubectl create namespace qa”。namespace資源的名稱僅能由字母、數字、下划線、連接線等字符組成。然而考慮到聲明式對象配置管理機制的強大功能,推薦使用apply和patch等命令進行資源創建及修改等一類的管理操作。而刪除namespace資源會級聯刪除其包含的所有其他資源對象:

命令格式  功能
kubectl delete TYPE RESOURCE -n NS 刪除指定名稱空間內的指定資源
kubectl delete TYPE --all -n NS    刪除指定名稱空間內的指定類型的所有資源
kubectl delete all -n -NS 刪除指定名稱空間內的所有資源
kubectl delete all --all 刪除所有名稱空間中的所有資源

PS:namespace對象僅用於資源對象名稱的隔離,它自身並不能隔絕跨名稱空間的pod間通信,那是網絡策略資源的功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM