亚洲综合在线一区二区三区-日韩超碰人人爽人人做人人添-麻豆国产精品久久人妻-无码人妻丰满熟妇啪啪-天堂精品一区二区三区-99久久综合狠狠综合久久aⅴ

×

K8S中的Service的存在理由

分類:互聯網熱點 編輯:it知事 瀏覽量:435
2020-07-20 13:33:06

###前言 Kubernetes Pod是有生命周期的,它們可以被創建,也可以被銷毀,然而一旦被銷毀生命就永遠結束。 通過ReplicationController能夠動態地創建和銷毀Pod(例如,需要進行擴縮容,或者執行滾動升級)。 

每個 Pod 都會獲取它自己的 IP 地址,可一旦銷毀后,重新創建后,IP地址會產生改變。 這會導致一個問題:在 Kubernetes 集群中,如果一組 Pod(稱為 backend)為其它 Pod (稱為 frontend)提供服務,一旦backend的Pod重新創建,那么frontend的Pod該如何發現,并連接到這組 Pod 中的哪些 backend 呢? ###Service Service資源用于為pod對象提供一個固定、統一的訪問接口及負載均衡的能力,并借助新一代DNS系統的服務發現功能,解決客戶端發現并訪問容器化應用的問題。

 注意:service只是在k8s集群內部起作用,集群外部訪問是無效的 ###實現原理 Service通過關注定義出多個POD對象組合而成的邏輯集合,以及訪問這組POD的策略,Service關聯POD需要標簽選擇器完成,其基于標簽選擇器將一組POD定義成一個邏輯集合,并通過自己的IP地址和端口調度代理請求至后端POD之上。 ```js apiVersion: v1 kind: Service metadata: name: a-service spec: selector: app: pod-label ports: - protocol: TCP port: 80 targetPort: 9376 ``` 上面的例子服務a-service關聯著label為【app:pod-label】的pod,這時候另一個服務B可以訪問跟a-service服務綁定的service,service信息是固定的提前告訴B就行了,service通過Label Selector跟a服務的pod綁定,無論a的pod如何變化對b來說都是透明的。

###虛擬IP service對象的IP地址稱為cluster IP,位于K8S集群配置指定的專用IP地址范圍內,其是一種虛擬IP地址,其在service對象創建后保持不變,并且能夠被同一集群中的POD資源訪問,service端口接受客戶端的請求并將其轉發至后端POD中的相應端口,因此,其又被稱為四層代理,因其工作在TCP/IP層。

 一個service對象就是工作節點上的一些iptables或ipvs,用于將到達service對象的IP地址的流量轉發到相應的endpoint對象指定的IP地址和端口上,kube-proxy組件通過api-server持續監控著各個service及其相關的POD對象,并將其創建或變動實時反映到工作節點的iptable或ipvs上 ###服務代理 k8s群集中的每個節點都運行一個kube-proxy的組件,kube-proxy其實是一個代理層負責實現service ###userspace模式 客戶端訪問ServiceIP(clusterIP)請求會先從用戶空間到內核中的iptables,然后回到用戶空間kube-proxy,kube-proxy負責代理工作。

 ###具體細節: 請求到達service后,其被轉發到內核,經由套接字送往用戶空間的kube-proxy,而后經由kube-proxy送回內核空間,并調度至后端POD,其傳輸方式效率太低。在1.1 版本之前,其是默認的轉發策略。 ###iptables模式 客戶端訪問ServiceIP(clusterIP)請求會由iptables直接重定向到后端 ###具體細節: 客戶端IP請求時,直接請求本地內核service ip,根據iptables的規則直接將請求轉發到到各pod上,因為使用iptable NAT來完成轉發,也存在不可忽視的性能損耗。

另外,如果集群中存在上萬的Service/Endpoint,那么Node上的iptables rules將會非常龐大,性能還會再打折扣 Kubernetes v1.2之前默認是userspace之后是iptables模式,iptables模式性能和可靠性更好,但是iptables模式依賴健康檢查,在沒有健康檢查的情況下如果一個pod不響應,iptables模式不會切換另一個pod上 ###ipvs模型 此模型跟蹤API service上的service和endpoints對象的變動,據此來調用netlink接口創建IPVS規則,并確保API server中的變動保持同步,其流量調度策略在IPVS中實現,其余的在iptables中實現。 ipvs 支持眾多調度算法,如rr、lc、dh、sh、sed和nq 等。 ###集群外部訪問 我們如何在集群外訪問service呢?k8s提供了幾種方式 ###NodePort 通過每個 Node 上的 IP 和靜態端口(NodePort)暴露服務。NodePort 服務會路由到 ClusterIP 服務,這個 ClusterIP 服務會自動創建。通過請求 NodeIP:Port,可以從集群的外部訪問一個 NodePort 服務。 

這時要訪問這個Service的話,只需要通過訪問 :Port ###LoadBalancer 在NodePort基礎上,Kubernetes可以請求底層平臺cloud provider 創建一個外部的負載均衡器,并將請求轉發到每個Node作為后端,進行服務分發。 該模式需要底層云平臺(例如GCE、AWS)支持。 ###ExternalName 創建一個dns別名指到service name上,主要是防止service name發生變化,要配合dns插件使用。通過返回 CNAME 和它的值,可以將服務映射到 externalName 字段的內容。 

這只有 Kubernetes 1.7 或更高版本的 kube-dns 才支持 ###Ingress 上面我們提到幾種方式,但是當集群服務很多的時候,NodePort方式最大的缺點是會占用很多集群機器的端口;LB方式最大的缺點則是每個service一個LB又有點浪費和麻煩,并且需要k8s之外的支持; 而ingress則只需要一個NodePort或者一個LB就可以滿足所有service對外服務的需求。


聲明:免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發

送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。本站原創內容未經允許不得轉載,或轉載時

需注明出處:新網idc知識百科

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 香蕉人妻av久久久久天天| 摸进她的内裤里疯狂揉她动图视频| 少妇私密会所按摩到高潮呻吟 | 欧美精品一区二区三区四区 在线| 国语对白嫖老妇胖老太| 国产三区在线成人av| 成人网站免费观看| 精品午夜中文字幕熟女人妻在线| 国产麻花豆剧传媒精品mv在线| 97久久香蕉国产线看观看| 亚洲日韩国产一区二区三区在线| 亚洲一区二区色一琪琪| 亚洲国产一区二区不卡| 日韩欧精品无码视频无删节| 久久亚洲av午夜福利一区| 国内精品视频一区二区八戒| 国产av久久久久精东av| 国产麻豆精品乱码一区| 2021在线精品自偷自拍无码 | 啦啦啦www在线观看免费视频| 樱花草在线观看播放www| 色诱视频在线观看| 3p人妻少妇对白精彩视频| 天天燥日日燥| 国产午夜手机精彩视频| 在线成人国产天堂精品av| 亚洲国产熟妇无码一区二区69| 亚洲国产初高中女| 人妻丰满熟妇av无码区动漫 | 男人和女人做爽爽免费视频| 国产在观线免费观看久久| 性男女做视频观看网站| 97人伦影院a级毛片| 亚洲色偷偷偷综合网| 欧美人与动性xxxxx交性| 午夜精品久久久久久| 国产乱码精品一区二区三区中文| 亚洲图区一区二区| 青青草国产精品免费观看| 久久久久久久综合综合狠狠| 国内精品久久久久久影院|