您好,登錄后才能下訂單哦!
本篇內容主要講解“基于Kubernetes服務機制怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“基于Kubernetes服務機制怎么理解”吧!
注冊中?作為一般的RPC/Web服務中的底層設施提供了服務進程元數據(IP, Port, Interface, Group,Method等)存儲,被Watch的功能,每個服務進程均需接?同?組持久化的K/V介質集群(?如: zookeeper,etcdv3等)。各進程均需將本進程的元數據存儲于注冊中?,并且能夠Watch到其他服務進程的元數據變化(包括創建,更新等)。
Kubernetes作為容器集群化管理?案管理資源的維度可主觀的分為服務進程管理和服務接?管理。服務進程管理,主要體現?式為Pod設計模式加控制器模式,控制器保證具有特定標簽(Kubernetes-Label)的Pod保持在恒定的數量(多刪,少補)。服務接?管理,主要為Kubernetes-Service,該Service默認為具有特定標簽(KubernetesLabel)的Pod統?提供?個VIP(Kubernetes-ClusterIP)所有需要請求該組Pod的請求都會按照round-robin的負載策略轉發到真正提供服務的Pod。并且CoreDNS為該Kubernetes-Service提供集群內唯?的域名。
Kubernetes-Service標準的資源對象具有的服務描述字段 中并未提供完整的服務進程元數據字段因此,?法直接使?Kubernetes-Service進?服務注冊與發現。
RPC/Web服務的服務注冊是基于每個進程的,每個服務進程均需進?獨?的注冊。
Kubernetes-Service默認為服務創建VIP,提供round-robin的負載策略也與RPC/Web服務?有的負載策略形成了沖突。
Kubernetes-Service與RPC/Web服務現有架構的沖突導致RPC/Web服務在選擇服務注冊與發現的時候只能選擇放棄該資源對象。
RPC/Web服務既然選擇了每個RPC/Web服務進程獨?注冊,因此RPC/Web服務選擇將該進程具有的獨有的元數據寫?運?該RPC/Web服務進程的Pod在Kubernetes中的Pod資源對象的描述信息中。
每個運?RPC/Web服務進程的Pod將本進程的元數據寫?Kubernetes-Pod Annotations字段。為了避免與其他使?Annotations字段的Operator或者其他類型的控制器(Istio)的字段沖突,使?Key為 app.io/annotation value為具體存儲的K/V對的數組的json編碼后的base64編碼。
apiVersion: v1kind: Podmetadata: annotations: app.io/annotation: 5LiN55So55yL5LqG5bCx5piv5LiA5Liq5paH5pys5Y2P6K6u
由于每個RPC/Web服務的Pod均只負責注冊本進程的元數據,因此Annotations字段?度也不會因為運?RPC/Web服務進程的Pod數量增加?增加。
解決掉了服務注冊問題,接下來需要解決的是服務發現的問題。Kubernetes Api-Server提供了Watch的功能,可以觀察特定namespace甚?整個集群內各類資源的變化。RPC/Web服務為了避免RPC/Web服務進程watch到與RPC/Web服務進程?關的Pod的變化,RPC/Web服務將watch的條件限制在當前Pod所在的namespace,以及 watch 具有 app.io/label Value為app.io-value 的Pod。在Watch到對應Pod的變化后實時更新本地Cache,并通過Registry提供的Subscribe通知建?在注冊中?之上的服務集群管理,或者其他功能。
啟動RPC/Web服務的Deployment或其他類型控制器使?Kubernetes Downward-Api將本Pod所在namespace通過環境變量的形式注?RPC/Web服務進程。
RPC/Web服務進程的Pod啟動后通過環境變量獲得當前的namespace以及該Pod名稱, 調?
Kubernetes-Apiserver PATCH 功能為本Pod添加Key為app.io/label Value為app.io-value的label。
RPC/Web服務進程調?Kubernetes-Apiserver 將本進程的元數據通過PATCH接?寫?當前Pod的Annotations字段。
RPC/Web服務進程 LIST 當前namespace下其他具有同樣標簽的Pod,并解碼對應的Annotations字段獲取其他Pod的信息。
RPC/Web服務進程 WATCH 當前namespace下其他具有同樣標簽的Pod的Annotations的字段變化。
到此,相信大家對“基于Kubernetes服務機制怎么理解”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。