云原生时代,Kubernetes 让应用落地的 N 种招式(附 PPT) | U刻
技术分享/

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

  • 云原生时代,Kubernetes 让应用落地的 N 种招式(附 PPT)

    放眼望去,容器、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 等。

    关于本次演讲的更多技术内容,敬请关注 “UCloud 技术” 公众号回复 “K8S” 即可获取讲师演讲 PPT。