“中国-东盟信息港”是根据国家“一带一路”倡议http://www.caih.com的总体布局要求,构建更紧密的中国-东盟命运共同体和21世纪海上丝绸之路的信息平台。Eastcom构建了基于Rancher Kubernetes架构的集装箱云PaaS平台,并在云诞生、集装箱化、微服务、CICD、DevOps等方面有相关实践和应用。
6月28日,负责R&D和中国东方集装箱云平台建设的中国-东盟信息港R&D总监王志雄出席了牧场实验室举办的“集装箱日2018集装箱技术大会”,并发表了根据演讲内容编写的“基于库本内斯的中国东方集装箱云平台”主题演讲。
王志雄,中国-东盟信息港R&D总监,负责R&D和中国东方通信的集装箱云管理。硕士,曾在IBM、华为等公司工作,并在IBM担任R&D部门经理和技术专家。在云计算IaaS、PaaS、集装箱云、SDN/NFV、微服务、DevOps等领域拥有超过10年的研发经验。
尊敬的来宾和朋友们,早上好。我是中国-东盟信息港的王志雄,负责R&D和中国东方通信的集装箱云PaaS平台建设。今天,从技术的角度,和大家分享一下中国东方通信基于Kubernetes搭建集装箱云PaaS平台的经验。
首先是PaaS平台。自云计算出现以来,PaaS平台一直与IaaS和SaaS共存,但最初只是不温不火。为什么近年来PaaS平台变得如此流行?如何搭建一个PaaS平台?PaaS平台需要承载哪些技术内容?我会在这里分享。
二是微服。我们说微服有两条路线,第一条是SpringCloud,第二条是Kubernetes。我们来看看如何利用Kubernetes搭建一个微服务平台。
第三个是CICD,第四个是德沃普斯。我们会看到有些场合说CICD,有些场合说德沃普斯,他们之间有什么关系,他们之间有什么区别,以及如何建设CICD和德沃普斯,我会在这里宣布。
Kubernetes和容器云PaaS平台
我们先来看看Kubernetes和容器云平台。PaaS平台Kubernetes要解决IT架构中的三个问题。首先,耦合,正如我们在R&D所知,除了应用程序之外,Java、Go和Python还需要大量的应用程序配置,这些配置与我们的系统环境——Windows或Linux——相耦合,因此,当我们交付产品时,通常会出现这样的情况:它在R&D环境中明显可用,但在测试中不可用,在最终的生产版本中也不可用。有人建议,更好的方法是写一份好的文件供参考,但文件通常是遗漏的,这取决于我们工作人员写文件和理解文件的能力。第二,很复杂。现在技术、工具、语言都很复杂。例如,语言包括java、Go、python和php。第三,不灵活。在互联网时代,我们需要从每周发布到每天,甚至一天发布几次、十次甚至上百次,这在以前的物理机或虚拟机时代是不可能的。
那么如何解决这些问题呢?云原生才是答案。云原生能做什么?第一种是容器化,将应用及其配置打包,保证开发、测试、运维环境一致,避免神秘配置、神秘错误、神秘文档、可能还有神秘人。二是面向微服务,将以前的综合区域服务分解为微服务,使其更加灵活,可以独立更新。第三个方面是动态编排管理。如果容器多,就需要大量的配置文件,如果需要部署很多容器,就必须使用编排管理,也就是我们这里选择的Kubernetes。
下图是Eastcom基于Kubernetes和Docker开发的四个场景。首先是企业应用平台。企业应用平台可以一键在平台上部署应用,使用pod自动伸缩进行弹性和自动扩展,如果出现故障,可以通过健康检查实现故障自愈。此外,它还具有强大的灰度发布功能。以前,互联网公司可能需要一个非常大的团队来做灰度发布,但现在Kubernetes有了自己的灰度发布功能。二是我们的微服务,用Kubernetes搭建我们的微服务平台,之后我们可以组件化,松散耦合,分散化,灵活独立。第三,我们建立了这样一个CICD系统,它包括我们的开发、代码提交、编译、构建、自动测试和容器发布。第四个是DevOps,是开发、运维的协同。
这是我们中国东方通信的PaaS平台。从底部看,底部是集装箱云红外。我们是在说红外不是一个IaaS产品吗?事实上,IaaS和PaaS都需要基础设施,当然,它们是不同的。不管是做Ias还是做PaaS,最后的难点其实是存储和网络。稍后我将分享我们如何做存储网络。然后是集装箱资源管理和集装箱集群调度。此Pod应该分派到哪个群集节点?根据什么策略?按照CPU调度还是内存调度?根据亲和策略还是反亲和策略?然后是我们的容器云应用服务。我们说平台即服务平台是以应用为中心的,所以我们肯定需要这样一个强大的应用服务。PaaS平台应用的服务具有服务发现、配置中心、负载平衡、弹性扩展、服务安排等强大功能,因此我们将使用我们的PaaS平台,在此基础上我们将提供中间件、数据库、负载平衡、文件存储等。如果你需要一个,比如一个MySQL,就拿一个MySQL容器来用。使用我们的中间件,PaaS平台将承载我们巨大而灵活的企业应用。
如果你开发了Kubernetes,你应该很熟悉这个图。这是一个典型的库本内特星团。我们可以从两个层面来看。第一层是我们自己的内部管理,部署Service,通过Master进行管理,通过API Server与各个组件进行交互,通过Controller Mananger控制各个组件获得的调度。Scheduler是一个特定的应用策略,etcd是一个数据库。然后它将被分派到我们的节点,在那里我们的Pod存在,并且在一个Pod中可以有多个容器,这是我们的内部管理服务。第二个层次是我们的外部通路。外部访问一般是通过互联网和防火墙。我们为外界提供了一个入口。入口是库伯内特提供的一个非常强大的功能。有了入口,我们可以向外界提供一个统一的域名系统。外界只要访问我们统一的域名,就可以访问不同的内部应用。通过这个域名,可以智能分配。
我们上面说的叫物理架构,我接下来说的是逻辑架构。这两个侧重点是不同的。从我们R&D的角度来看,底层是容器基础设施层,包括我们的运行时、卷插件和网络插件;;然后是核心层,外部提供API,内部提供Plugin环境;第三层是应用层,可以部署,可以进行入口智能路由;然后是管理层,可以是智能和网络策略;;接口层是向外界提供我们的命令行管理工具;生态系统就是我们的生态。
就在刚才,PaaS基础设施的终极问题是网络和存储。我们先来看看中国东方通信是如何解决网络问题的。网络解决方案有很多。我们看到只有一组区域。一开始有桥、主机、容器、NAT、原生iptables在一组区域中;然后是主机集群,OVS和IPSec;目前最主流的线是顶线,一条是法兰绒,一条是印花布,还有一条是Canal把两者折叠在一起。在这里,我可以提到我们的软件定义网络。SDN起源于Openflow。什么是Openflow?Openflow具有强大的消息解析能力,可以对消息进行任意更改。这种强大的能力刚出来的时候就引起了极大的关注,在未来十大创新技术中排名第二,第一是云计算,第二是SDN。不过一开始Openflow在广泛应用中遇到了一些问题,因为和之前的传统不兼容,所以实际上最后用的最多的还是VXLAN。VXLAN是一种叠加技术。SDN最常用在什么地方?是VXLAN叠加。三是BGP,在网络上已经有二三十年的历史了。经过不断的打磨、沉淀和优化,BGP实际上已经开始统一我们的SDN领域,现在BGP可以取代我们的软件定义网络和虚拟化网络。
SDN网络一般有两个方向。第一个是法兰绒。法兰绒实际上是一种Overlay方案,所以在主机的容器中是自动分配的IP,但在主机外部是由Overlay Overlay封装的。然而,这个覆盖实际上不同于我们传统的IaaS覆盖。传统的IaaS VXLAN除了叠加功能,还有多租户功能,但这里只在出口处做。那么法兰绒怎么了?它没有安全隔离功能。其次,拆包时必然会带来开销,所以这是我们要解决的问题。法兰绒官方还表示,如果用户想为数据中心做更好的网络安全隔离,建议使用Calico。
Calico的核心是基于BGP的。如果是小型网络,BGP的客户端可以用于IP路由的自动分配和路由的互联。印花布有什么好处?简单!如果overlay网络出现故障,用户很难检查故障是来自Overlay还是来自underlay;但是有了BGP,用户直接定位路线就好了。此外,Calico还有一个非常好的特性,就是结合网络策略可以提供网络的微细分。如果主机上有多个容器和多个应用程序,它可以提供良好的安全隔离。印花布有哪些缺点?它需要依赖数据中心对BGP的支持,可能还不是所有的数据中心都是BGP。但是我还是推荐BGP。从最初的Facebook到国内的大公司,很多都已经开始用BGP取代所有的内部路由协议,包括第二层协议。这是一个很好的解决方案,可以简化操作和维护工作。数据中心只有一个路由协议多好。
谈完网络,另一个问题是存储。与Docker相比,Kubernetes除了提供普通卷外,还提供持久卷和存储类,通过PV和PVC抽象存储细节。这样有什么好处?管理控制和转化可以分开。管理员关注PV的收纳细节,用户只需要关注PVC收纳即可。普储ceph,NFS,Gluster都可以。
集装箱云微服务
让我们看看如何用Kubernetes构建一个微服务。下图显示了微服务体系结构的常见特性,它将一个应用程序分解成多个灵活的微服务。微服务的特点是服务的组件化。如何拆分一个微服务?不是靠代码行数,不是靠功能,而是靠功能和产品模式。有了微服务,就可以实现集中管理。
构建微服务,必须具备以下功能:服务这么多,怎么找到这个服务?所以我们需要为发现服务。如何负载均衡多个服务?如何智能路由和分发多个应用服务?如何管理成千上万个服务的配置?怎么弹性拉伸?如何包容过错?如何自动升级?如何做访问控制?
下图是我们使用Kubernetes构建的微服务。怎么建?把以上问题的答案放在一起就是最终答案。第一个服务发现可以通过使用我们的服务来完成,包括在Kubernetes中构建的DNS。第二,节点上有kube代理,我们的服务分发是负载平衡。第三种智能路由通过入口,可以通过统一的门户将不同的应用智能地分布到后端服务。通过我们的Kubernetes配置图,配置中心可以在一个统一的服务器上管理和更新远程微服务的配置。如果重要的秘密配置可以保密,请用配置图清除文本。
然后是我们的服务编排。对于实际使用中的用户来说,部署是一个非常受欢迎的特性。因为yaml文件通过部署写好之后,大家都去自动部署,需要几个副本,会自动展开和收缩部署。如果需要开发应用商店,可以去helm开发。
然后是我们的弹性缩放。通过RS写份数,然后通过自动缩放指定需要自动缩放的条件。例如,它可以根据CPU或我们的内存访问进行缩放。接下来是我们的容错。我们使用活性来监控容器和应用程序的健康状况。如果集装箱挂了,我们可以重启。如果这个节点挂起,我们可以将容器分派到另一个节点。怎么融合?我们可以使用我们的准备状态,这不仅可以监控我们的容器的生存,还可以监控我们的服务是否健康。
当前的限制可以是我们的配额限制、我们的名称空间限制、我们的容器限制或我们的容器限制。
升级,滚动更新是自动升级,有问题可以一键回滚。然后RBAC可以提供基于角色的安全访问。网络策略提供基于BGP Calico的微分段,可以安全隔离,包括日志监控EFK和普罗米修斯。
集装箱云配置项/光盘
如何制作集装箱云的CI/CD,自然用我们的集装箱云三剑客,詹金斯+Docker+Kubernetes。其实在容器云出现之前,就已经有了CI/CD。当时的CI/CD是詹金斯做的,可以提供编译、构件、测试、任务调度的流水线;Docker的角色是什么?它可以规范我们的环境,隔离它;Kubernetes可以提供一个大型平台,允许资源共享和灵活扩展。
CI/CD需要实现从开发、编译、组件、测试、打包到部署的开发和测试流水线的自动化,所以我们的测试报告出来后,如果通过了,就把映像上传到映像仓库,然后发布到Kubernetes的发布平台。
DevOps
谈完CI/CD,我们再来看看非常流行的DevOps。通过这张图,我们其实可以看到CI/CD和DevOps的区别和联系,以及什么时候应该使用CI/CD,什么时候应该使用DevOps。CI/CD在左边。CI/CD侧重于开发和测试。具体的序数是多少?詹金斯是流水线,Git是源代码仓库和源代码拉,Maven是构造,SonarQube是静态代码分析,Robotframework是自动化测试。SonarQube,一个代码分析工具,对于一个除了我们的编译之外保证是好的代码来说,有很大的好处。因为我记得十年前,在国内某大型公司的入职培训中,总导师给每个员工都培训了一个案例:代码规范。好的代码不需要编译,需要好的编程规范,才能避免编译后实际发生的神秘故障,难以定位。
看完CI/CD,再来看看DevOps侧重什么。DevOps关注的是我们的发布环境应该是自动可伸缩的,A/B Test,灰度发布,自动升级,或者滚动升级。滚动升级就是不要一次升级所有PODs,还要有选择的升级一些PODs,比如升级20%或者升级50%。有什么好处?它可以使我们的应用服务不间断。当然,它们的共同点是基于Docker和Kubernetes进行这样的容器化封装和自动化。右边的DevOps其实就是DevOps刚出现时的标准DevOps。和CI/CD不一样,但其实是密切相关的。CI/CD和这样的标准DevOps的结合叫做我们的大DevOps,所以两者是可以结合的。CI/CD解决了我们的开发、测试、自动化、标准化问题,标准DevOps解决了我们的开发和运维,主要是运维方面。只有把两者结合起来,才能一键解决我们的开发、测试和运维。
下图是滚动升级功能,可以用容器一个一个替换,升级25%的容器,然后再确认。如果工作正常,我们可以升级下一批容器。
下面是灰度发布。这在我们不断变化和频繁发布的互联网场景中尤其有用。因为我们有大量的互联网应用。所以有一个特别好的新功能,比如看这个功能,看用户的反馈,用户的使用情况,还有我们的灰度发布。使用Kubernetes的豆荚非常方便。一开始我们可以给一个灰色的版本1,内部用户可以使用,然后给我们的用户组,用户组A一个版本2,然后逐步扩展到所有用户。这是互联网非常好的应用。
总结
我们来回顾一下中国东方通信基于Kubernetes开发的四个场景。首先是PaaS企业应用平台。二是Kubernetes的微服。SpringCloud也是一个微服务,但是SpringCloud微服务主要集中在应用层面,只对Java有效,对其他语言无效。Kubernetes与语言无关,比SpringCloud使用更广泛,但是最好的做法是将我们SpringCloud中的每一个微服务打包成一个容器,然后通过Kubernetes调度并自动扩展平台的集群资源。我们CICD是第三个,我们的德文普斯是第四个。
后续会给你带来更多的大会发言,请关注牧场主微信官方账号的最新推送~
"
牧场主实验室由硅谷云计算领袖、云堆栈之父梁胜创建,致力于创造创新的开源软件,帮助企业在生产环境中运行容器和库本内特。旗舰产品Rancher是开源企业Kubernetes平台,是业内第一个也是唯一一个管理所有云、所有发行版上所有Kubernetes集群的平台。它解决了企业用户在生产环境中可能面临的不同基础设施的困境,改善了Kubernetes原生UI可用性差、学习曲线陡峭的问题,是企业登陆Kubernetes的最佳选择。
牧场主在全球拥有8800万下载量和超过20,000个生产节点,拥有数百家大中型政府和企业客户,包括迪士尼、IBM、乐高、美国农业部、索尼、平安和海航集团。
"
当牧场主去北方招募时,
1.《中国东信 中国东信基于Kubernetes的容器云PaaS平台》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《中国东信 中国东信基于Kubernetes的容器云PaaS平台》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1735309.html