专家观察 | 张鑫:“从Kubernetes到谷歌容器管理的落地与演化”(2)
我原来发布一个二进制,现在我要拆分成很多模块,如果后端更新话,前端也要更新,我们去年联合发布了这样一个系统,叫做Seco,支持微服务之间的拓扑依赖关系支持发布,发布过程当中也会实时进行镜像仓库扫描,大家看到截屏中的文字就是扫描出来镜像的漏洞. 和发布相关就是另外一个概念就是灰度发布,我一个新版本的上线,我不希望新版本2.0一下替换1.0,对于基础设计型的软件我们按照一个数据中心一个数据中心更新.对于面向用户的产品,谷歌的购物,它的搜索等等,我们按照流量,先把15%的流量引到我新版本里面. 基于Kubernetes我们怎么样也做到灰度发布系统,其实也是可以利用它里面标签的特性,以及它对服务的构建特性来实现一个灰度发布,时间关系我这里细节不说了. 我们用过Kubernetes的一线工程师,我们都知道,往KPS我非常容易的部署这样一个服务,我构建一整套复杂的业务系统的时候,类似于Docker里面一样,我如何快速构建一个复杂的系统,后来Kubernetes有一个开源解决方案,叫做Helm,我们推出一个辅助的工具叫做Heim-Registry,快速推出模板,把模板放到云应用商店里面,提供共享,以及快速构建. 我们监控报警系统,如果我们自己用过Kubernetes的时候话会知道,Kubernetes管理跑在它上面的应用,对里面应用进行监控和管理,但是Kubernetes自身也是非常复杂的软件系统. 利用Kubernetes也知道,Kubernetes也要实时监控管理它的系统,在这个世界里面我们也需要有一个系统管理和维护Kubernetes自身.存储替换成OPDMDB,把更多K8S系统的指标曝露出来,实现不同层级的报警策略. 刚才讲完了Kubernetes跟谷歌的区别,以及我们演化和推进,怎么用一个新技术用到相对老的行业里面. 从我们落地经验来看,其实落地遇到不少的挑战,怎么做离线部署,怎么与私有云IAAS对接,对有状态、单体应用的无缝迁移.线上系统升级,多租户管理与安全把控. 我们有很多的openStack的用户,我们怎么保证不掉线的运营,线上升级系统、多租户的管理与安全把控,都是Kubernetes在传统行业中遇到的问题,也是我们实践中需要解决的问题. 第一个我们服务对外的曝露,这部分内容有点专业,我们都知道Kubernetes里面有一个服务的概念,集群内部的服务之间可以很轻便访问. 当我把一个服务曝露给集群以外的事件,我把京东云曝露在外面,外部怎么访问我的容器,我把对应服务对应起一个端口,在集群所有节点上,我web访问这个服务,要记住这三万多的端口把服务打过来,第一个端口我们要做记忆,其次我们很难做负载均衡. 这里头有比较简单的解决方案,我们还是先把服务在每台机器上曝露出三万多的端口. 为了避免用户每次要把流量绑定在一台服务器的三万端口,我们可以在外面设一个负载均衡器,可以解决一部分的问题,同时还是解决不了我怎么从七层做负载均衡,我根据用户ID等去做,我现在需要在机器上开哪些端口,只不过没有曝露给用户. 在Kubernetes首先解决七层的负载均衡,这个黑的我主要对系统做简单的配置就可以把这个东西用起来,这个解决七层负载均衡的问题. 没有解决我这个ingress系统部署在哪台机器上,会不会存在单点失效的问题. 我们的解决方案本质上把Ingress做成一种资源,可调度的资源. 我们一个容器是一个可以被调动的资源,我们把Ingress也做成类似的调度资源,也实现了专门对Ingress的调动器. (编辑:ASP站长网) |