基于K8s与ServiceComb实现微服务系统

基于K8s与ServiceComb实现微服务系统

kubernetes与ServiceComb

  • kubernetes在平台层配置管理、服务发现、负载均衡、追踪、指标、单例模式、调度作业提供服务,并且在应用套件之外。
  • ServiceComb作为一个应用层的微服务框架,对标的更多是springcloud。ServiceComb为华为内部框架,目前由于华为大力推广华为云,作为一个推向业界的微服务方案,从出发目的上来讲应该不会如同dubbo断更。

从微服务的层面上来说,kubernetes与serviceComb二者处于不同的层次。Kubernetes主要用来解决大规模集群的弹性伸缩,负载均衡等,而ServiceComb更多的是解决开发上的解耦合。

当我们使用ServiceComb开发好应用后,可以借助docker-compsoe和kubernetes完成应用的部署。本文主要说明这一过程中遇到的一些问题以及解决方案。

kubernetes问题与解决方案

kubernetes部署

在1.6版本后,kubernetes加入了越来越多的安全性验证,增加了k8s的部署难度。

同时在生产环境上部署k8s集群,需要实现高可用,配置多个master节点,防止apiServer和etcd出现单点故障。

为了实现快速部署高可用k8s集群,使用rancher提供的rke工具搭建。

部署环境说明:

  • rancher-server。在上面有rke和rancher/server镜像。rke quick start guide。rancher/server作为一个简单的Paas平台,相对于openshift功能薄弱。但更贴近与k8s。
  • Server:K8s master Server and node。
  • Client-1:K8s master Server and node。
  • Client-2:K8s master Server and node。
    AWS Console:


    Screenshot from 2018-05-06 20-39-45.png

部署过程

  • 在四台服务器上安装docker17.03(K8s在17.03上经过了充分的测试),rke quick start guide文档中有一键安装脚本。
  • 在server和client-1,client-2上配置非root用户下可以访问docker,参考文档
  • 在rancher-server中通过ssh链接到其它三台服务器,并部署k8s集群。在aws上由于无法以root用户登录其他服务器,因此需要是docker能够在ubuntu用户下被其他机器访问。其次需要将其他服务器的访问私钥放在rancher-server中。对于AWS而言为pem文件。
  • 如果需要本地仓库支持,可以使用docker registry,并且需要在其他节点配置insecure registry。(后续如果需要使用本地私有仓库,则需要进行配置。dockerhub官方仓库上传太慢。)
  • 当通过rke配置集群后,生成config.yaml文件,使用rke up启动集群,会自动在其他机器上拉取镜像,完成部署,部署完成后,会生成kube_cluster_config.yaml 文件。
  • 生成配置文件后,将其导入到rancher Paas平台中。rancher2.0 支持导入集群。
Screenshot from 2018-05-06 20-39-09.png

K8s访问

集群搭建好后,可以通过外部的服务器访问集群。

  • 首先需要在其他服务器上安装kubectl,kubectl client端和server端不需要版本一致。
  • 将之前生成的kube_cluster_config.yaml 复制到其他服务器上。
  • 每次使用kubectl 需要加上 --kubeconfig kube_cluster_config.yaml 命令。

K8s dashboard

Screenshot from 2018-05-06 20-39-20.png

kubernetes提供了dashboard工具,做集群监控。项目地址

在安装的机器使用“kubectl --kubeconfig kube_cluster_yaml proxy”后,通过
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
可以访问监控界面。

为了不通过token访问dashboard,可以配置access control规则。
kubernetes Access Control

Screenshot from 2018-05-06 21-14-23.png

当搭建好dashboard后,可以使用更简便的方法通过yaml 创建deployment,service。


Screenshot from 2018-05-06 21-17-21.png

ServiceComb问题与解决方案

ServiceComb 项目workshop 案例

ServiceComb workshop 官方博客

部署过程

当拉取ServiceComb workshop代码后,需要经过以下的处理:

  • 使用maven 编译docker镜像,在readme文档中有说明,需要在项目中配置。
  • 在本地编译好镜像后,可以将其push到docker hub上。
    docker hub push。这样可以在master和node节点上拉取镜像。
  • 执行kubernetes目录下 bash start.sh,启动微服务应用。

在company-manager-service.yaml文件中,service通过nodePort暴露出去,可以通过nodeIp:nodePort访问。k8s service外部访问

当部署好应用后,通过以下步骤可以进行验证。

  1. Retrieve manager's ip address
  • If you use docker compose:
    export HOST="<NodeIp>:<NodePort>"
    
  1. Log in and retrieve token from Authorization section
    curl -v -H "Content-Type: application/x-www-form-urlencoded" -d "username=jordan&password=password" -XPOST "http://$HOST/doorman/rest/login"
    
    Then you can copy the token from the Authorization section and use it to replace the Authorization header in the following requests.
  2. Get the sixth fibonacci number from the worker service
    curl -H "Authorization: replace_with_the_authorization_token" -XGET "http://$HOST/worker/fibonacci/term?n=6"
    
  3. Get the number of drone's ancestors at the 30th generation from the beekeeper service
    curl -H "Authorization: replace_with_the_authorization_token" -XGET "http://$HOST/beekeeper/rest/drone/ancestors/30"
    
  4. Get the number of queen's ancestors at the 30th generation from the beekeeper service
    curl -H "Authorization: replace_with_the_authorization_token" -XGET "http://$HOST/beekeeper/rest/queen/ancestors/30"
    

后续会写一系列的关于ServiceComb一系列的文章。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容