08月18, 2018

K8s与devops调研

对Kubernetes以及与之相关的DevOps进行调研

完成了k8s的单点部署之后,接下来要尝试的就是多点部署。在k8s上,master和node节点分别运行几个不同的关键服务,master运行着apiserver,scheduler,controll-manager以及etcd,而node上要求运行的是kubelet和proxy。这里重点提一下proxy。

k8s有一个关键特性是负载均衡。之前我以为Node之间的调度也可以通过k8s自带的负载均衡来解决,但是在完成多点部署之后,我们很容易就能发现,k8s所能提供的多点部署能力只限于在一个Node上的pods中,一个请求可以被一个pods中任意一个容器处理。k8s本身并不能对外提供跨Node的调度能力(但是对内是可以的),它在service的定义中留下了一个loadbalancer的接口,可以让用户指定一个外接的负载均衡器,用以在node之间进行外部流量的负载均衡。

另外一个是调研devops平台。主要比较了国内的大厂的产品,以及一些比较出头的小公司的产品。首先是阿里的云效。功能还算完整,部署上可以构建docker也可以自定义脚本,以项目为单位管理,jira,代码库,部署等等都有。在集群接入上,需要购买阿里云新机器或者使用docker配置代理机。对于公司来说可能不需要太多的迁移成本。之所以这么说是因为有另外一个功能上也很不错,但是真正使用起来会有很大迁移成本的产品——华为的软件开发云。这是上线很早的一个平台,开发了两三年以上(16年发布)。在部署上,可以支持的部署类型很多,但是docker类型的部署需要集群,而集群与华为云深度绑定,并不支持在自己已有的机器集群上部署业务。整体上看,有很强的引导用户绑定到华为云上的倾向。

除了这两个产品比较接近需求之外,其他的其实都比较中庸。腾讯的TAPD大问题没啥,需求管理、WIKI、甘特图、报表之类的都有。有需要折腾一下的小问题,但是不影响使用。最关键的在于,TAPD的部署和发布功能可能不强,在微信内部,主要是用来做需求管理。算法工程师主要是写SQL。线上部署有另外一套系统,那个跟TAPD没打通。从文档来看,这份文档里压根没提到跟部署有关的东西,可能真的就只是个jira而已。而京东的京东云则文档相当的简略,感觉是快速堆出来的产品,不一定高可用。还要一个小厂优维科技的EasyOps。文档确实全,也基本提到了全链路,但是感觉好像没什么科技公司在用,使用者都是各种银行这种。从我所了解的情况来看,目前大部分上线在传统行业领域的软件多半都不是特别的优秀。而另一方面,easyops部署的业务类型只能是他们提出的一种叫“程序包”的东西,其实就是容器镜像,功能点不强。

无论具体实现如何,这几家devops平台对核心功能点的划分都是比较接近的——需求管理、代码托管、线上自动化部署和全链路监控。对于基础架构组来说,其实需求管理和代码托管可能也不是特别的重要,关键在于部署和监控的自动化,最好再能有对实体机的监控。从devops也能看出来目前容器技术应用之广,容器化部署是唯一一种目前所有的平台都支持的部署方式。

本文链接:https://blog.magichc7.com/post/k8s-and-devops.html

-- EOF --

相关评论