- Kubernetes進階實戰
- 馬永亮
- 1124字
- 2019-03-13 14:20:39
3.4 管理名稱空間資源
名稱空間(Namespace)是Kubernetes集群級別的資源,用于將集群分隔為多個隔離的邏輯分區以配置給不同的用戶、租戶、環境或項目使用,例如,可以為development、qa和production應用環境分別創建各自的名稱空間。
Kubernetes的絕大多數資源都隸屬于名稱空間級別(另一個是全局級別或集群級別),名稱空間資源為這類的資源名稱提供了隔離的作用域,同一名稱空間內的同一類型資源名必須是唯一的,但跨名稱空間時并無此限制。不過,Kubernetes還是有一些資源隸屬于集群級別的,如Node、Namespace和PersistentVolume等資源,它們不屬于任何名稱空間,因此資源對象的名稱必須全局唯一。
注意
Kubernetes的名稱空間資源不同于Linux系統的名稱空間,它們是各自獨立的概念。另外,Kubernetes名稱空間并不能實現Pod間的通信隔離,它僅用于限制資源對象名稱的作用域。
3.4.1 查看名稱空間及其資源對象
Kubernetes集群默認提供了幾個名稱空間用于特定的目的,例如,kube-system主要用于運行系統級資源,而default則為那些未指定名稱空間的資源操作提供一個默認值,前面章節中的絕大多數資源管理操作都在default名稱空間中進行。“kubectl get namespaces”命令則可以查看namespaces資源:
~]$ kubectl get namespaces NAME STATUS AGE default Active 6d kube-public Active 6d kube-system Active 6d
也可以使用“kubectl describe namespaces”命令查看特定名稱空間的詳細信息,例如:
~]$ kubectl describe namespaces default
kubectl的資源查看命令在多數情況下應該針對特定的名稱空間來進行,為其使用“-n”或“--namespace”選項即可,例如,查看kube-system下的所有Pod資源:
~]$ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE etcd-master.ikubernetes.io 1/1 Running 1 6d kube-apiserver-master.ikubernetes.io 1/1 Running 1 6d ……
命令結果顯示出kube-system與default名稱空間的Pod資源對象并不相同,這正是Namespace資源的名稱隔離功能的體現。有了Namespace對象,用戶再也不必精心安排資源名稱,也不用擔心誤操作了其他用戶的資源。
3.4.2 管理Namespace資源
Namespace是Kubernetes API的標準資源類型之一,如3.2.1節中所述,它的配置主要有kind、apiVersion、metadata和spec等一級字段組成。將3.2.1節中的名稱空間配置清單保存于配置文件中,使用陳述式對象配置命令create或聲明式對象配置命令apply便能完成創建:
~]$ kubectl apply -f namespace-example.yaml namespace/dev created
名稱空間資源屬性較少(通常只需要指定名稱即可),簡單起見,kubectl為其提供了一個封裝的專用陳述式命令“kubectl create namespace”。Namespace資源的名稱僅能由字母、數字、連接線、下劃線等字符組成。例如,下面的命令可用于創建名為qa的Namespace對象:
~]$ kubectl create namespace qa namespace/qa created
注意
namespace資源的名稱僅能由字母、數字、連接線、下劃線等字符組成。
實踐中,不建議混用不同類別的管理方式。考慮到聲明式對象配置管理機制的強大功能,強烈推薦用戶使用apply和patch等命令進行資源創建及修改一類的管理操作。
使用kubectl管理資源時,如果一并提供了名稱空間選項,就表示此管理操作僅針對指定名稱空間進行,而刪除Namespace資源會級聯刪除其包含的所有其他資源對象。表3-3給出了幾個常用的命令格式。
表3-3 結合名稱空間使用的刪除命令

需要再次指出的是,Namespace對象僅用于資源對象名稱的隔離,它自身并不能隔絕跨名稱空間的Pod間通信,那是網絡策略(network policy)資源的功能。
- ASP.NET MVC4框架揭秘
- Building a RESTful Web Service with Spring
- Learning Flask Framework
- Mastering Python Scripting for System Administrators
- jQuery從入門到精通 (軟件開發視頻大講堂)
- 青少年信息學競賽
- Android系統原理及開發要點詳解
- 一本書講透Java線程:原理與實踐
- Python:Deeper Insights into Machine Learning
- Java并發編程:核心方法與框架
- 大學計算機基礎實驗指導
- Mastering Embedded Linux Programming
- 一覽眾山小:ASP.NET Web開發修行實錄
- Mastering PostgreSQL 11(Second Edition)
- Illustrator CS6中文版應用教程(第二版)