Kubernetes學習筆記(二):網路原理
阿新 • • 發佈:2019-02-12
Kubernetes網路模型
Kubernetes網路模型設計的一個基礎原則是:每個Pod都擁有一個獨立的IP地址,而且假定所有Pod都在一個可以直接連通的、扁平的網路空間中。所以不管它們是否執行在同一個Node(宿主機)中,都要求它們可以直接通過對方的IP進行訪問。設計這個原則的原因是,使用者不需額外考慮如何建立Pod之間的連線,也不需要考慮將容器埠對映到主機埠等問題。
實際在Kubernetes的世界裡,IP是以Pod為單位進行分配的。
按照這個網路抽象原則,Kubernetes對網路有什麼前提和要求呢?
所有容器都可以在不用NAT的方式下同別的容器通訊;
所有節點都可以在不用NAT的方式下同所有容器通訊,反之亦然;
容器的地址和別人看到的地址是同一個地址;
網路通訊的場景
容器到容器的通訊。
同一個Pod內的容器(Pod內的容器是不會跨宿主機的)共享同一個網路名稱空間,共享同一個Linux協議棧。可以直接通過localhost互相訪問。Pod之間的通訊:同一個Node內。
通過Veth連線在同一個docker0網橋上,它們的IP地址都是從docker0的網橋上動態獲取的,它們和網橋本身的IP3是同一個網路段的。不同Node上的Pod之間的通訊。
對docker0的IP地址做統一的規劃;對Pod的IP地址做統一的規劃;Pod到Service之間的通訊。
Service的虛擬IP通過每個Node上的kube-proxy對映到不同的Pod上,暫時只支援輪詢。外部到內部的訪問
NodePort、LoadBalancer。