手把手教学之service mesh搭建与实践

service mesh

service mesh个人觉得没有必要追捧的那么夸张~,service mesh可以看作是微服务架构的一次升级,总觉的和serverless要解决的问题有点类似,都是让业务/算法方更关心业务与算法。NGINX官方解释”A service mesh is a configurable infrastructure layer for a microservices application”,即service mesh对于微服务应用来说是一个可配置的基础设施层。

service mesh有如下一些特性

  • 容器编排框架
  • 安全访问控制
  • Sidecar(边车)代理
  • 熔断机制
  • 负载均衡
  • 服务发现
    … …

部署的环境与版本

测试集群: 阿里云k8s
servicemesh:istio 0.8

搭建开始

  1. istio官网针对各个云平台给了安装方案,但是没有阿里云。感兴趣的跳转istio-quick-start
$ curl -L https://git.io/getLatestIstio | sh -
  1. 配置istioctl路径,一般在对应安装文件的bin目录下
export PATH=$PATH:$YOURPATH/bin
  1. 安装istio相关组件

以istio0.8.0为例,进入目录install/kubernetes

kubectl apply -f install/kubernetes/istio-demo.yml

这里本地怎么用kubectl请参考kubectl-install,当然安装之后要连接上k8s,以阿里云为例,需要在主账号下拷贝KubeConfig的配置到本机的$HOME/.kube/config里。

安装之后效果

安装后效果

安装bookinfo

kubectl label namespace <namespace> istio-injection=enabled
kubectl apply -f samples/bookinfo/bookinfo.yaml

 kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &

samples.png

验收(grafana与Jaeger的全链路追踪)

grafana

jaeger

后续能做什么?

  • 内部服务迁移至K8S
  • 使用tracing功能做全链路跟踪
  • prometheus + grafana + dingding 完成监控告警功能
  • 结合K8S发布系统实现A/B test与canary deployment
  • 流量分析
  • 看看源码,分析下代码,比如怎么拦截RPC请求呢?

部署服务

最近有空,用阿里云容器服务(k8s集群)部署服务。

部署顺序

配置服务service与deployment

kubectl apply -f service.yml

配置istio的gateway与virtualservice

istioctl create -f gateway.yml

验证结果

获取istio暴露的IP(不用像官网介绍的方式设置环境变量)
kubectl get svc -n istio-system

istio-ingressgateway.png

访问结果

result.png

未经允许不得转载:大自然的搬运工 » 手把手教学之service mesh搭建与实践

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址