kubernetes網路介紹
Kubernetes具有先進的網路功能,可以使應用和服務在集群網路內部和外部進行通信。在這種情況下,對Kubernetes集群中部署的應用的訪問,主要分為以下幾種情況。
群集IP
目標埠
NodePort
外部IP
負載平衡器
Kubernetes Service是一個抽象概念,它定義了關於如何訪問一組Pod的策略和方法。 通過一個基於標籤選擇器的Service進而訪問Pod集(即我們的應用)。
一、集群IP
創建Kubernetes服務時,群集IP是默認方法。 該服務被分配一個內部IP,其他組件可以使用該內部IP訪問該Pod。
通過擁有一個IP地址,它可以使服務在多個Pod之間進行負載平衡。
缺點:Cluster-IP是k8s集群內部的ip,集群外部無法訪問。
二、目標埠(TargetPort)
目標埠允許我們從應用程序正在監聽的埠中分離服務可用的埠。 TargetPort是應用程序配置為偵聽的埠。
埠是如何從外部訪問應用程序。
缺點:仍然使用Cluster-IP訪問應用,與單純的集群IP不同的是,分離出了Service埠。
三、節點埠(NodePort)
雖然TargetPort和ClusterIP使其可用於集群內部,但NodePort通過定義的靜態埠在每個節點的IP上公開該服務。
無論集群中的哪個節點被訪問,服務都將基於定義的埠號進行訪問。
優缺點:可以被k8s集群外部訪問,但要使用30000+的預留埠,且埠範圍有限。
四、外部IP
另一種在集群外部提供服務的方法是通過外部IP地址。
優點:可以被k8s集群外部訪問,與NodePort相同的是,均使用宿主機網卡的IP地址,與NodePort不同的是,直接用外部IP,不用加埠號。
五、負載均衡器
在雲中運行時,例如EC2或Azure,可以配置和分配通過雲提供商發布的公有IP地址。
這將通過負載平衡器(例如ELB)發布,允許將額外的公共IP地址分配給Kubernetes群集,而無需直接與雲提供商交互。
優點:直接通過負載均衡器的IP地址訪問應用,實際上相當於浮動IP,同樣不使用埠號。
區別
下圖是作者簡單寫的關於以上幾種訪問方式的區別(假設我們應用的埠號是80):
實際在k8s集群中,這幾種方式都通過Service這種Kind來創建,通過svc的簡要信息就可以看出和上圖的對應關係,以及看出前面幾種方法的不同(注意觀察TYPE、EXTERNAL-IP、PORT列):
參考
TAG:全球大搜羅 |