技术分享之service mesh (k8s&istio)的那些事儿

前言:

三十而立后,琐碎的事情多了起来,不好抽出时间去做技术分享。记得年初那会还说要分享下raft的原理和实践,结果次次爽约。但我的github和技术文章还在持续的更新,我个人感觉专门做PPT讲解要比写文章更要慎重,毕竟一大帮人在现场看你做分享,及给你挑错。😅

这次分享的话题主要围绕微服务service mesh架构的实践,话题也是拆分了三个子topic,分别是微服务的演进史、kubernets、istio。本想做个简单偏科普的介绍,后来发现如单纯只是讲k8s、istio的介绍使用,而不去稍微讲点原理设计,可能会导致ppt的质量显得不高级,所以就又增加了不少原理性的介绍。 😁

该文章后续仍在不断的更新修改中, 请移步到原文地址 http://xiaorui.cc/?p=6051

内容:

ppt已经放到了github上了,这次的分享主要是针对公司内的,由于zoom的配置问题,导致没有做好视频的录像。后面会补充详细的博文及视频的讲解。

下面是pdf的地址,望大家在github上点个star。😁

github pdf: https://github.com/rfyiamcool/share_ppt
pdf 下载: http://xiaorui.cc/static/service_mesh.pdf

问答:

kubernetes是否靠谱? 中小团队,尤其是小团队是否可以hold的住?

个人认为kubernetes在实践中最难的是网络和存储。网络cni推荐大家使用calico,因为calico对比flannel有更好的想能,另外也完美支持bgp路由协议。如果想更加的易用,可以选择基于overlay的flannel插件。至于存储? 不推荐… 意思是说,推荐大家把一些有状态的服务,比如postgres、mysql、elasticsearch,放在k8s的pod之外。为啥? 我问了一圈在各公司搞云平台开发的,他们k8s每次出问题,大概率都是因为存储。 😅 这个很考验基础架构团队的能力。

Istio是否靠谱?

当然,没问题了。不少国外,国内也有不少公司在用了。istio是基于k8s平台做的一层mesh的封装,就算出现了不可控和未知的问题,我们可以把istio的策略都删掉,让pod走原始的k8s service的逻辑。

如何更好的上手kubernetes、istio ?

首先是把官方的文档简略的看一遍,再把组件的原理看一遍。这个实现原理是不能忽视的,不然在实践k8s/istio遇到问题就抓瞎。在了解原理的基础上,可以适当的看他的关键代码实现,像istio的源码还是相对好理解的。

如何减少业务代码嫁接微服务架构的成本?

像我们先前的架构比较复杂,大部分是通过grpc balancer来直接连接的,但还是有部分系统是基于golang nats mq消息总线,主要是使用nats的request/reply的同步语义来实现异步的发布订阅。如果直接把总线改成grpc的方式,代码量其实不小。没有采用grpc直连而总线模式的服务有20来个,怎么用最小的代码来实现?

利用grpc的各种特性来实现的完美兼容,关键词是 grpc.unknownHandler, grpc reflection,静态protobuf描述符。

部分截图:

service mesh
go nats service mesh
go nats mesh
service mesh
service mesh 轻量级代理
kubernetes 架构
kubernetes 高可用架构
kubernets创建pod过程
k8s 调度器
kubernetes scheduler
k8s pod
k8s pod
kubernetes flannel cni
k8s cni flannel
kubernets service discovery
kubernetes ingress nodeport hostport
kubernets ingress 原理
istio kubernetes
istio
istio
istio pilot
istio pilot
istio mixer
istio rules
istio weight
istio mirror 镜像
istio mixer 熔断
istio 重试 注入
k8s 自动化管理脚本
kubernetes 管理脚本

关键字:


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc