容器化上云之容器網絡分析
首先分析網絡網絡的連通性問題。
容器集群共享一個網絡平面,根據組網方式的不同,容器網絡與底層IaaS網絡間的關系包括:
l?? Overlay:容器網絡是基于底層IaaS網絡之上的虛擬網絡,私有云默認采用這種模式;
l?? Underlay:容器網絡與底層IaaS網絡打通,容器可以獲得底層網絡的IP地址。
從單個容器的角度看,容器集群內外主要包括如下幾類地址:
l?? 容器IP:容器內網卡的IP,在Pod內由Pause容器提供,多個業務容器共享;
l?? Service的IP,即ClusterIP:一個VIP(虛擬IP),只在kube-proxy的轉發規則中存在;
l?? 節點IP:容器集群節點上的網卡IP,通常為VPC網絡的地址;
l?? 外部IP:外部網絡的IP,例如公網IP。
從容器內和節點訪問這幾類地址的連通性關系如下:
表1-1
地址類型
從容器內訪問
從容器集群的節點訪問
容器IP
可直接訪問
可直接訪問(包括Underlay和Overlay)
CluserIP
可直接訪問
可直接訪問(包括Underlay和Overlay)
節點IP
可直接訪問(包括Underlay和Overlay)
可直接訪問
外部IP
依賴于容器所在節點的外部IP訪問能力
依賴于是否掛載了EIP
接下來分析容器間相互訪問的問題。
由于容器的動態性,不能采用直連容器實例IP的方式訪問,應該采用Kubernetes的Service對象,將動態的容器實例進行抽象,形成一個穩定的訪問入口。通過Service進行訪問時,Kubernetes自動提供基于隨機策略的四層負載均衡能力。Service可以通過ClusterI和域名方式訪問。
最后分析從集群外部訪問容器的問題。
默認情況下,外部網絡與容器網絡不互通,同時外部網絡與集群節點所在的VPC網絡也不互通。當節點掛載了EIP之后,可以獲得外部網絡可訪問的彈性IP地址。
將容器開放給外部客戶端訪問主要有兩種方式:
l?? NodePort:將容器端口映射到集群內所有節點的端口上,此時綁定了EIP的節點可以被外部客戶端訪問。
l?? LoadBalancer:通過對接具有彈性IP的負載均衡服務對外暴露容器的訪問入口。
其中NodePort方式有比較大的局限,建議只在非正式環境中使用,主要的限制包括:
l?? 端口范圍:外部訪問端口必須在30000-32767之前,且整個集群內不允許沖突。
l?? 單點故障:雖然NodePort在集群內所有節點都可訪問,但當外部客戶端只依賴單個EIP時,仍然存在單點故障,若綁定該EIP的節點宕機,則服務無法訪問。
容器
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。