Kubernetes網絡模型概念

Kubernetes網絡模型

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

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

  • 全部容器均可以在不用NAT的方式下同別的容器通訊;網絡

  • 全部節點均可以在不用NAT的方式下同全部容器通訊,反之亦然;.net

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

網絡通訊的場景

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

    2. Pod之間的通訊:同一個Node內。 
      經過Veth鏈接在同一個docker0網橋上,它們的IP地址都是從docker0的網橋上動態獲取的,它們和網橋自己的IP3是同一個網絡段的。kubernetes

    3. 不一樣Node上的Pod之間的通訊。 
      對docker0的IP地址作統一的規劃;對Pod的IP地址作統一的規劃;it

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

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

相關文章
相關標籤/搜索