美文网首页
基于K8s与ServiceComb实现微服务系统

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

作者: bradyjoestar | 来源:发表于2018-05-06 20:32 被阅读0次

    基于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一系列的文章。

    相关文章

      网友评论

          本文标题:基于K8s与ServiceComb实现微服务系统

          本文链接:https://www.haomeiwen.com/subject/zbzurftx.html