学习
实践
活动
专区
工具
TVP
写文章

云原生时代,Kubernetes让应用落地的N种招式

放眼望去,容器、Kubernetes 和云原生技术正在被越来越多的企业青睐,Kubernetes已经为一种大规模部署容器化应用程序的标准。随着它不断的快速迭代发展, 企业在实际的应用部署过程中也面临着各种复杂的问题和挑战。如何克服K8S技术难关,使其更好的服务于容器化应用成为大家关注的重点。

8月17日UCan下午茶上海站——《云原生Kubernetes的开发和运维》技术沙龙现场,六位资深技术专家围绕K8S的落地实践进行了充分的探讨。

张苗磊:Kubernetes集群在云平台的实践与应用

K8S自2014年推出,目的就是作为集群内容器管理调度的平台,用户只需关心将内容放进容器,而把调度和运行交给K8S。为了让K8S在生产环境上运行得更加顺畅和完善,UCloud作为公有云厂商推出的UK8S,除了通用性,还提供了很多拓展能力。

例如Pod的网络方案上,借助云厂商的底层网络能力,通过提供SecondIP的方式,和云上其它产品打通,避免采用封包方案造成的性能损失。又如在服务接入上,公有云的UK8S能通过插件很好地提供,用户在集群内部创建一个loadbalancer类型的service,就能自动化地和ULB产品关联并使用。同时还支持非SNAT形式的loadbalancer,让Pod可以直接拿到源IP地址。

存储方面,K8S原生态里PV需要集群管理员或第三方来实现。UK8S也结合UCloud存储产品提供了自动化的实现,有块存储和文件存储两种形式。用户只需要在集群内创建一个PVC,预设好的 StorageClass就会自动创建相应PV并关联到UDisk/UFS上,实现快速接入。

张鹏波:UK8S打造稳定易用的Kubernetes服务

K8S本质上是弱租户概念,要通过namespace做隔离。但UCloud在2018年推出的UK8S,作为公有云K8S服务,面临着租户隔离的强需求,否则用户是不接受的。为此我们提出K8S中所有资源对用户应该是专享的想法。

这个首先体现在VPC网络,不同用户的K8S集群分布在不同的VPC里,网络是完全强制性隔离。其次是资源的租户隔离,包括UHost等计算资源隔离,Node和Master隔离,以及存储插件包括块存储、文件存储的完全隔离。UK8S为了提升易用性和可维护性,也针对性的给出了解决方案,例如提供一键创建/删除集群功能,支持集群规模自动拓展,支持API Service通过外网访问,提供跨可用区健壮性等。集群管理高可用架构如图所示:

此外,还介绍了UK8S和UCloud裸金属产品金翼物理机的结合。物理机租赁的TCO非常有竞争力,而如果用户想运行K8S,上面能提供预装好的K8S服务,存储和负载均衡也可以配套部署好。UK8S下半年预计将服务扩展到30多个可用区,并提供新版应用商店等功能。

乐心医疗 韦飞龙:Kubernetes在乐心健康的探索与实践

乐心医疗的一个主要产品乐心手环,其后端服务通过App和用户交互。该服务自2016年起就已经全面运行在K8S上,当时是自建的集群。自建过程中遇到很多问题,比如要在测试、开发、生产三个环境中运行同一个镜像,按传统方式把服务配置打包成镜像是个问题。此外安装过程中,早先是手动依次安装二进制文件,需要逐个下载软件包并配置验证,非常耗费时间,近期开始使用kubeadm工具实现了快速安装。自建K8S集群时kubernetes-sigs工具的镜像下载不到,需要修改镜像地址再安装。

考虑到种种维护的成本较高,现在已将业务全部迁移到UK8S上,好处是不需要再关心此前安装的组件,网络、存储的管理也变得容易。韦飞龙最后还介绍了Apollo配置中心的使用,相比此前另一个开源配置中心,启动时间节省十几秒。以及运用Jenkins进行Pipeline的并行发布,只要有一个发布失败就终止运行,节省了开发等待的时间。

刘拓:K8S在StepFlow项目中的运用

StepFlow全称工作流引擎,它能把微服务API用流程的方式编排起来,不写任何代码的情况下即可构建应用。StepFlow架构设计时采用了微服务的理念,因此自然而然想到容器化部署。但团队在容器化道路上遇到不少挑战,例如资源如何合理规划、高可用如何解决、服务间怎样互联等。头痛医头并不是个好办法,而UCloud面向内部的K8S平台KUN(中文名:鲲)恰好能解决这些问题。

资源管理上KUN可以轻松做到高可用和跨可用区分布,也对业务完全透明。通过配置service可以让服务互联,此外还有配置管理、日志监控等能力。在社区支持上也更好,CNCF中很多云原生的组件都可以直接使用。KUN平台解放了业务方的生产力,使其可以专注于上层的镜像制作、自动化测试集、灰度系统等工作。StepFlow整个项目都基于KUN,短时间内就实现了一个CI/CD的Pipeline,达到一键部署的效果,可以说是一次成功的基于云原生标准来打造应用程序的实践。

蔡书:基于Kong的服务网格方案

Kong是目前最受欢迎的API网关之一。它的特点一是智能易用,可以和微服务做集成,处理动态路由,底层对微服务做细粒度的分析统计。二是简单灵活,支持容器化的部署,且提供安装包。管理类功能都通过插件提供,插件非常丰富,形成了社区。另外吞吐率和延迟也都不错。

Kong的应用场景:一是做入口,流量都可从网关进来;二是微服务的可视化;三是黑色/灰色流量清洗,依赖特征识别;四是微服务支持,和服务注册中心绑定后使用方便,此外还有流量可视化、微服务质量管理等。技术实现上底层是Nginx,上面是OpenResty,其上还有Clustering,保证水平扩展时配置实时生效。再上面是 RESTful接口,不再需要修改Nginx配置文件,而是通过代码调用的方式完成。

元年科技 王海峰:中小团队的K8S落地之路

K8S技术相对复杂,受限于人力时更需了解如何能简单落地。王海峰认为首先是把要点思考清楚,比如一共需要哪些基础服务来保证大应用落地、如何构建一套简单的外部程序、线下线上如何采用统一的K8S环境来保证开发测试的一致性、统一的K8S接口该如何设计等。

在元年科技的实践中,首先出于实际情况使用Windows服务器,主要是为了利用它账户凭证的特性。其次利用Jenkins来完成外部浏览器端DevOps流程的触发,通过批处理和脚本简单的搞定流程线。线下用Rancher在三台物理机上部署环境,线上环境为了减少运维人力,直接用UCloud镜像库和UK8S,省去集群维护精力。线上线下采用蒲公英第三方服务打通,提供DevOps通信。而在K8S集群的通信上,采用了REST风格的API,用Curl的Post、Delete等方法,可以设计部署、删除API等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190820A0JODH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券