偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

[[425674]]

引言

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

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

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

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

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

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

一、k8s架構(gòu)簡述

架構(gòu)與概念

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

kube-scheduler: 負(fù)責(zé)資源調(diào)度與計(jì)算,將Pod按照特定策略分發(fā)到計(jì)算節(jié)點(diǎn)

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

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

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

kube-proxy: 運(yùn)行在計(jì)算節(jié)點(diǎn)的網(wǎng)絡(luò)代理,負(fù)責(zé)Pod內(nèi)外的網(wǎng)絡(luò)通信代理

Pods創(chuàng)建流程

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

二、第三方注冊中心集成

架構(gòu)圖

轉(zhuǎn)換流程:

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

代碼說明

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

  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é)點(diǎn)到zookeeper注冊中心

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

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

轉(zhuǎn)換分析

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

@2 運(yùn)行dubbo2istio跟蹤其邏輯

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

@4 將轉(zhuǎn)換好的注冊信息寫入kube-apiserver,寫入成功無錯(cuò)誤返回

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

@6 通過命令行查詢驗(yàn)證是否寫入到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中查到服務(wù)提供者「org.apache.dubbo.demo.demoservice」即從zookeeper注冊中心成功將事件通過kube-apiserver通知到istio。

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

 

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

2020-06-04 07:48:08

Istio服務(wù)注冊API Server

2015-11-05 16:44:37

第三方登陸android源碼

2015-04-27 19:32:16

Moxtra

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2011-05-07 14:20:25

加密方案Transcoder BlackBerry

2021-09-15 10:15:08

PostgreSQL商標(biāo)社區(qū)

2018-05-31 11:22:17

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

2017-12-11 15:53:56

2016-10-21 14:09:10

2009-12-31 14:38:34

Silverlight

2019-09-03 18:31:19

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

2011-03-01 11:08:45

Windows系統(tǒng)中心

2017-11-07 15:51:47

高效第三方溝通

2009-01-14 12:45:05

MSNIM蘋果

2014-07-22 10:56:45

Android Stu第三方類庫

2013-08-12 16:04:19

第三方移動(dòng)應(yīng)用

2017-05-16 13:24:02

LinuxCentOS第三方倉庫

2021-12-06 09:44:30

鴻蒙HarmonyOS應(yīng)用

2010-05-25 11:09:31

SVN工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)