Kubernetes網絡模型概念


Kubernetes網絡模型

Kubernetes網絡模型設計的一個基礎原則是:每個Pod都擁有一個獨立的IP地址,而且假定所有Pod都在一個可以直接連通的、扁平的網絡空間中。所以不管它們是否運行在同一個Node(宿主機)中,都要求它們可以直接通過對方的IP進行訪問。設計這個原則的原因是,用戶不需額外考慮如何建立Pod之間的連接,也不需要考慮將容器端口映射到主機端口等問題。 
實際在Kubernetes的世界里,IP是以Pod為單位進行分配的。

按照這個網絡抽象原則,Kubernetes對網絡有什么前提和要求呢?

  • 所有容器都可以在不用NAT的方式下同別的容器通信;

  • 所有節點都可以在不用NAT的方式下同所有容器通信,反之亦然;

  • 容器的地址和別人看到的地址是同一個地址;

網絡通信的場景

    1. 容器到容器的通信。 
      同一個Pod內的容器(Pod內的容器是不會跨宿主機的)共享同一個網絡命名空間,共享同一個Linux協議棧。可以直接通過localhost互相訪問。

    2. Pod之間的通信:同一個Node內。 
      通過Veth連接在同一個docker0網橋上,它們的IP地址都是從docker0的網橋上動態獲取的,它們和網橋本身的IP3是同一個網絡段的。

    3. 不同Node上的Pod之間的通信。 
      對docker0的IP地址做統一的規划;對Pod的IP地址做統一的規划;

    4. Pod到Service之間的通信。 
      Service的虛擬IP通過每個Node上的kube-proxy映射到不同的Pod上,暫時只支持輪詢。

    5. 外部到內部的訪問 
      NodePort、LoadBalancer。


免責聲明!

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



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