自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊第三方注冊中心集成Istio

開發(fā) 后端
公司往往有自己的注冊中心,有的使用Nacos、zookeeper等,還有自研的。這些在istio體系外的注冊中心需要融入網(wǎng)格體系,讓注冊中心以及配置中心事件通知到istio,進而通過istio下發(fā)到數(shù)據(jù)面去。

[[425674]]

引言

公司往往有自己的注冊中心,有的使用Nacos、zookeeper等,還有自研的。這些在istio體系外的注冊中心需要融入網(wǎng)格體系,讓注冊中心以及配置中心事件通知到istio,進而通過istio下發(fā)到數(shù)據(jù)面去。

第三方注冊中心集成到istio通常有三種做法:

  • 方式一 修改源碼實現(xiàn)serviceregistry.Instance接口適配到service controller
  • 方式二 通過自定義MCP Server,例如:Nacos提供了這部分實現(xiàn)
  • 方式三 將第三方注冊中心事件封裝成istio的ServiceEntry和WorkloadEntry資源寫入Kubernetes的api server

istiod收到監(jiān)聽后完成轉換

方式一需要修改istio源碼,重度耦合后續(xù)升級istio比較困難;方式二看著比較簡單卻調試比較困難給開發(fā)造成障礙;方式三從業(yè)界實踐來看采用的最為廣泛。

本文將分析第三種方式如何集成istio的,在此之前需要先走查下kubernetes的大體架構。

一、k8s架構簡述

架構與概念

kube-apiserver: 與Kubernetes資源交互的入口,可以通過kubectl或者client-go其他語言類庫進行訪問

kube-scheduler: 負責資源調度與計算,將Pod按照特定策略分發(fā)到計算節(jié)點

etcd: 鍵值存儲數(shù)據(jù)庫,保存Kubernetes集群相關數(shù)據(jù)

kube-controller-manager: 運行一系列列控制器的組件,比如:節(jié)點控制器、任務控制器、端點控制器等

kubelete: 運行在計算節(jié)點中,通過監(jiān)聽控制面接受指令,在節(jié)點內執(zhí)行操作

kube-proxy: 運行在計算節(jié)點的網(wǎng)絡代理,負責Pod內外的網(wǎng)絡通信代理

Pods創(chuàng)建流程

  • 通過kubectl或者client-go類庫向kube-apiserver發(fā)起創(chuàng)建請求
  • kube-apiserver將請求信息持久化在etcd數(shù)據(jù)庫
  • kube-scheduler檢測到請求后,計算Pod應該分配到哪個Node,并將分配策略寫入etcd數(shù)據(jù)庫
  • Kubelet檢測到etcd的分配策略后,執(zhí)行該策略調用docker相關api創(chuàng)建container

二、第三方注冊中心集成

架構圖

轉換流程:

從注冊中心(Zookeeper)獲取變更事件,將其轉換為ServiceEntry寫入kube-apiserver;Istiod(Pilot)通過監(jiān)聽kube-apiserver收到ServiceEntry后經(jīng)過轉換通過xDS下發(fā)給數(shù)據(jù)面。

代碼說明

直接去寫比較耗時,快速掌握的方式是參考別人已經(jīng)實現(xiàn)的,下面以社區(qū)項目dubbo2istio跟蹤其如何將zookeeper轉換的。

  1. https://github.com/aeraki-framework/dubbo2istio 

另外,還用到了dubbo 示例中的dubbo-demo-api-provider,地址如下。

  1. https://github.com/apache/dubbo/tree/3.0/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider 

分析過程為:

通過dubbo-demo-api-provider注冊節(jié)點到zookeeper注冊中心

通過跟蹤dubbo2istio代碼觀察其轉換邏輯并通過client-go類庫寫入kube-apiserver

通過相關命令驗證其的確已經(jīng)寫入到kube-apiserver

轉換分析

**@1 ** 運行服務提供者dubbo-demo-api-provider,讓其在注冊中心完成注冊。

@2 運行dubbo2istio跟蹤其邏輯

@3 獲取zookeeper注冊的節(jié)點將其轉換為ServiceEntry,轉換使用的類庫為「istio.io/client-go」

@4 將轉換好的注冊信息寫入kube-apiserver,寫入成功無錯誤返回

@5 再通過代碼查詢是否寫入成功,能夠查到說明寫入成功

@6 通過命令行查詢驗證是否寫入到kube-apiserver

登陸istiod容器

  1. kubectl -n istio-system exec -it istiod-56f8cc6cb5-xkg4m -- /bin/bash 

通過registryz命令查看

  1. curl http://127.0.0.1:15014/debug/registryz 
  2.  { 
  3.         "Attributes": { 
  4.             "ServiceRegistry""External"
  5.             "Name""org.apache.dubbo.demo.demoservice"
  6.             "Namespace""dubbo"
  7.             "Labels": { 
  8.                 "manager""aeraki"
  9.                 "registry""dubbo2istio" 
  10.             }, 
  11.             "UID"""
  12.             "ExportTo"null
  13.             "LabelSelectors"null
  14.             "ClusterExternalAddresses"null
  15.             "ClusterExternalPorts"null 
  16.         }, 
  17.         "ports": [ 
  18.             { 
  19.                 "name""tcp-dubbo"
  20.                 "port": 20880, 
  21.                 "protocol""TCP" 
  22.             } 
  23.         ], 
  24.         "creationTime""2021-09-10T09:58:18Z"
  25.         "hostname""org.apache.dubbo.demo.demoservice"
  26.         "address""0.0.0.0"
  27.         "autoAllocatedAddress""240.240.0.5"
  28.         "Mutex": {}, 
  29.         "Resolution": 0, 
  30.         "MeshExternal"false 
  31.     }, 
  32.     // .... 

 備注:可以在istio中查到服務提供者「org.apache.dubbo.demo.demoservice」即從zookeeper注冊中心成功將事件通過kube-apiserver通知到istio。

本文轉載自微信公眾號「瓜農(nóng)老梁」,可以通過以下二維碼關注。轉載本文請聯(lián)系瓜農(nóng)老梁公眾號。

 

責任編輯:武曉燕 來源: 瓜農(nóng)老梁
相關推薦

2020-06-04 07:48:08

Istio服務注冊API Server

2015-11-05 16:44:37

第三方登陸android源碼

2015-04-27 19:32:16

Moxtra

2014-07-23 08:55:42

iOSFMDB

2019-07-30 11:35:54

AndroidRetrofit

2011-05-07 14:20:25

加密方案Transcoder BlackBerry

2021-09-15 10:15:08

PostgreSQL商標社區(qū)

2018-05-31 11:22:17

數(shù)據(jù)中心

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

2017-12-11 15:53:56

2019-09-03 18:31:19

第三方支付電商支付行業(yè)

2011-03-01 11:08:45

Windows系統(tǒng)中心

2017-11-07 15:51:47

高效第三方溝通

2022-01-14 09:57:14

鴻蒙HarmonyOS應用

2014-07-25 09:33:22

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪

2013-08-12 16:04:19

第三方移動應用

2010-05-25 11:09:31

SVN工具

2024-04-03 12:57:29

點贊
收藏

51CTO技術棧公眾號