Service Endpoint
生活随笔
收集整理的這篇文章主要介紹了
Service Endpoint
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Service
Service的核心作用就是為Pod提供穩定的網絡連接。除此之外,還提供負載均衡和從集群外部訪問Pod的途徑。Service對外提供固定的IP、DNS名稱和端口,并確保這些信息在Service的整個生命周期中是不變的。Service對內則使用Label來將流量均衡轉發至應用的各個(通常是動態變化的)Pod中。
為什么要引入Service?
Pod的IP地址是不可靠的。在某個Pod失效之后,它會被一個擁有新的IP的Pod代替。Deployment擴容也會引入擁有新IP的Pod;而縮容則會刪除Pod。這會導致大量的IP流失,因而Pod的IP地址是不可靠的。
Service需要注意的點
- 1、Kubernetes中用來為Pod提供穩定的網絡服務的Service對象。就像Pod、ReplicaSet或Deployment,一個Kubernetes Service是指我們在部署文件中定義的API中的一個REST對象,最終需要POST到API Server。
- 2、每一個Service都擁有固定的IP地址、固定的DNS名稱,以及固定的端口。
- 3、Service利用Label來動態選擇將流量轉發至哪些Pod。
Service的作用和原理
- 這個Service可以將各個Pod與客戶端一側,通過固定的IP、DNS和端口連接起來。同時還可以對請求進行負載均衡。
固定的前端和動態的后端的中間層。所謂前端,主要由IP、DNS名稱和端口組成,始終不變;而后端,則主要由一系列的Pod構成,會時常發生變化。 - Service與Pod之間是通過**Label和Label篩選器(selector)**松耦合在一起的。Deployment和Pod之間也是通過這種方式進行關聯的,這種松耦合方式是Kubernetes具備足夠的靈活性的關鍵。
- 對于Service與Pod的關聯關系來說,所有匹配的Pod必須擁有Service Label篩選器中定義的所有Label。
Endpoint
Service和Endpoint對象
- 隨著Pod的時常進出(擴容和縮容、故障、滾動升級等),Service會動態更新其維護的相匹配的健康Pod列表。具體來說,其中的匹配關系是通過Label篩選器和名為Endpoint對象的結構共同完成的。
- 每一個Service在被創建的時候,都會得到一個關聯的Endpoint對象。整個Endpoint對象其實就是一個動態的列表,其中包含集群中所有的匹配Service Label篩選器的健康Pod。
- Kubernetes會不斷地檢查Service的Label篩選器和當前集群中健康Pod的列表。如果有新的能夠匹配Label篩選器的Pod出現,它就會被加入Endpoint對象,而消失的Pod則會被剔除。也就是說,Endpoint對象始終是保持更新的。這時,當Service需要將流量轉發到Pod的時候,就會到Endpoint對象中最新的Pod的列表中進行查找。
- 當要通過Service轉發流量到Pod時,通常會先在集群的內部DNS中查詢Service的IP地址。流量被發送到該IP地址后,會被Service轉發到其中一個Pod。不過,Kubernetes原生應用(知悉Kubernetes集群并且能夠訪問Kubernetes API的應用)是可以直接查詢Endpoint API,而無須查找DNS和使用Service IP的。
訪問
從集群外部訪問Service
3個Pod經由NodePort Service通過每個節點上的端口30050對外提供服務。
第①步,來自一個外部客戶端的請求到達Node2的30050端口。
第②步,請求被轉發至Service對象(即使Node2上壓根沒有運行該Service關聯的Pod)。
第③步,與該Service對應的Endpoint對象維護了實時更新的與Label篩選器匹配的Pod列表。
第④步,請求被轉發至Node1上的Pod1。
深入掌握Service
https://weread.qq.com/web/reader/9fc329507191463c9fcee6dke3632bd0222e369853df322
總結
以上是生活随笔為你收集整理的Service Endpoint的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UG/NX二次开发Siemens官方NX
- 下一篇: fNIRS | 近红外功能成像技术基本原