亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

k8s網絡模型介紹

2023-09-22 08:00:03
12
0

1、基本概念

容器:Container(容器)是一種便攜式、輕量級的操作系統級虛擬化技術。它使用 NameSpace 隔離不同的軟件運行環境,并通過鏡像自包含軟件的運行環境,從而使得容器可以很方便的在任何地方運行。

Pod:Kubernetes 使用 Pod 來管理容器,每個 Pod 可以包含一個或多個緊密關聯的容器,一對多的關系。

Service:Service 是應用服務的抽象,通過 labels 為應用提供負載均衡和服務發現。匹配 labels 的 Pod IP 和端口列表組成 endpoints,由 kube-proxy 負責將服務 IP 負載均衡到這些 endpoints 上。

Namespace:Namespace是Linux提供的一種對于系統全局資源的隔離機制;從進程的視角來看,同一個namespace中的進程看到的是該namespace自己獨立的一份全局資源,這些資源的變化只在本namespace中可見,對其他namespace沒有影響。容器就是采用namespace機制實現了對網絡,進程空間等的隔離。不同的Container(在K8S中是以Pod為單位)屬于不同namespace,實現了Container或Pod之間的資源互相隔離,互不影響。
Network namespace允許你在Linux中創建相互隔離的網絡視圖,每個網絡名字空間都有自己獨立的網絡配置,包括:網卡、回環設備、網絡棧;網絡設備、路由表、IPTables規則。

2、k8s網絡模型

kubernetes網絡模型設計的目的是給pod、service等提供一個簡單、一致的網絡視圖和使用體驗,對他們屏蔽了宿主機環境的網絡拓撲的同時,也屏蔽了網絡模型上實現的細節;

同時要求每個Pod都擁有一個獨立的IP地址,而且假定所有Pod都在一個可以直接連通的、扁平的網絡空間中;

如何對扁平的網絡進行理解:

  • 所有的 Pod 可以與任何其他 Pod 直接通信,無需使用 NAT 映射(network address translation);
  • 所有節點可以與所有 Pod 直接通信,無需使用 NAT 映射;
  • Pod 內部獲取到的 IP 地址與其他 Pod 或節點與其通信時的 IP 地址是同一個;

k8s的網絡組成有:

  • 集群內:同一個pod上不同容器的通信、pod間通信,pod和服務(service)之間的通信,
  • 集群外:外部和service服務間的通信

接下來具體分析k8s對集群內網絡模型的解決方案

同一個pod上不同容器的通信

Kubernetes創建Pod時,首先會創建一個infra容器,為Pod指派一個唯一的IP地址。然后,以infra的網絡命名空間為基礎,創建同一個Pod內的其它容器;因此,同一個Pod內的所有容器就會共享同一個網絡命名空間,在同一個Pod之間的容器可以直接使用localhost進行通信。

pod間通信

使用兩個虛擬接口組成的veth對可以使不同的網絡命名空間連接起來,這些虛擬接口分布在多個網絡命名空間上,這里通過veth對讓pod1的eth0和veth0、pod2的eth0和veth1關聯起來;

再通過網橋把veth0和veth1組成為一個以太網,從而讓pod1和pod2相互通信。

0條評論
0 / 1000
朱****媚
1文章數
0粉絲數
朱****媚
1 文章 | 0 粉絲
朱****媚
1文章數
0粉絲數
朱****媚
1 文章 | 0 粉絲
原創

k8s網絡模型介紹

2023-09-22 08:00:03
12
0

1、基本概念

容器:Container(容器)是一種便攜式、輕量級的操作系統級虛擬化技術。它使用 NameSpace 隔離不同的軟件運行環境,并通過鏡像自包含軟件的運行環境,從而使得容器可以很方便的在任何地方運行。

Pod:Kubernetes 使用 Pod 來管理容器,每個 Pod 可以包含一個或多個緊密關聯的容器,一對多的關系。

Service:Service 是應用服務的抽象,通過 labels 為應用提供負載均衡和服務發現。匹配 labels 的 Pod IP 和端口列表組成 endpoints,由 kube-proxy 負責將服務 IP 負載均衡到這些 endpoints 上。

Namespace:Namespace是Linux提供的一種對于系統全局資源的隔離機制;從進程的視角來看,同一個namespace中的進程看到的是該namespace自己獨立的一份全局資源,這些資源的變化只在本namespace中可見,對其他namespace沒有影響。容器就是采用namespace機制實現了對網絡,進程空間等的隔離。不同的Container(在K8S中是以Pod為單位)屬于不同namespace,實現了Container或Pod之間的資源互相隔離,互不影響。
Network namespace允許你在Linux中創建相互隔離的網絡視圖,每個網絡名字空間都有自己獨立的網絡配置,包括:網卡、回環設備、網絡棧;網絡設備、路由表、IPTables規則。

2、k8s網絡模型

kubernetes網絡模型設計的目的是給pod、service等提供一個簡單、一致的網絡視圖和使用體驗,對他們屏蔽了宿主機環境的網絡拓撲的同時,也屏蔽了網絡模型上實現的細節;

同時要求每個Pod都擁有一個獨立的IP地址,而且假定所有Pod都在一個可以直接連通的、扁平的網絡空間中;

如何對扁平的網絡進行理解:

  • 所有的 Pod 可以與任何其他 Pod 直接通信,無需使用 NAT 映射(network address translation);
  • 所有節點可以與所有 Pod 直接通信,無需使用 NAT 映射;
  • Pod 內部獲取到的 IP 地址與其他 Pod 或節點與其通信時的 IP 地址是同一個;

k8s的網絡組成有:

  • 集群內:同一個pod上不同容器的通信、pod間通信,pod和服務(service)之間的通信,
  • 集群外:外部和service服務間的通信

接下來具體分析k8s對集群內網絡模型的解決方案

同一個pod上不同容器的通信

Kubernetes創建Pod時,首先會創建一個infra容器,為Pod指派一個唯一的IP地址。然后,以infra的網絡命名空間為基礎,創建同一個Pod內的其它容器;因此,同一個Pod內的所有容器就會共享同一個網絡命名空間,在同一個Pod之間的容器可以直接使用localhost進行通信。

pod間通信

使用兩個虛擬接口組成的veth對可以使不同的網絡命名空間連接起來,這些虛擬接口分布在多個網絡命名空間上,這里通過veth對讓pod1的eth0和veth0、pod2的eth0和veth1關聯起來;

再通過網橋把veth0和veth1組成為一個以太網,從而讓pod1和pod2相互通信。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0