k8s之namespace

linux內核具有6種不同的命名空間屬性,分別提供了6種系統資源的隔離能力。被隔離的資源可以具備其中的一種或多種命名空間屬性。

  • UTS Namespace 提供基於主機名的隔離能力

主機名隔離是指每個獨立容器空間中的程序可以有各自不同的主機名稱信息

  • PID Namespace  提供基於進程的隔離能力

進程隔離是的容器中的首個進程成爲所在命名空間中PID 值爲1 的進程

  • IPC Namespace  提供基於system V 進程信道的隔離能力

IPC全程 Inter-Process Communication ,是Linux 中的一種標準的進程間通信方式, 包括共享內存、信號量、消息隊列等具體方法。

IPC隔離使得只有在同一命名空間下的進程才能相互通信。這一特性對於消除不同容器空間中進程的相互影響具有十分重要的作用。

  • MNT Namespace  提供基於磁盤掛在點和文件系統的隔離能力

這種隔離的效果與 chroot 系統調用十分相似,但從實際原理來看,MNT Namespace 會爲隔離空間創建獨立的Mount節點樹,而chroot 僅僅是改變了當前上下文的根mount 節點位置,從而影響文件系統查找文件和目錄的結果。

在文件系統隔離的作用下,容器中的進程將無法訪問到容器以外的任何文件。在必要情況下,可以通過掛在額外目錄的方式和主機共享文件系統。

  • User Namespace  提供基於系統用戶的隔離能力

系統用戶隔離是指用一個系統用戶在不同的命名空間中可以擁有不同的UID和GID ,它們之間存在一定的映射關係。因此,在特定的命名空間中UID值爲0的用戶,並不一定是整個系統的root管理員用戶。這一特性控制了容器用戶的權限,有利於保護主機系統的安全。

  • Net Namespace  提供基於網絡棧的隔離能力

網絡棧的隔離允許使用者將特定的網卡與特定容器中的進程運行上下文關聯起來,使得同一網卡在主機和容器中呈現不同的名稱。

Net Namespace 的一個重要作用,是讓每個容器通過命名空間來隔離和管理自己的網卡配置。因此可以創建一個普通的虛擬網卡,並將它作爲特定容器運行環境的默認網卡eth0使用。

這些虛擬網絡網卡最終可以通過某些方式(NAT、VxLan、SDN等)連接到實際的物理網卡上,從而實現像普通主機一樣的網絡通信。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章