运营商业务系统基于 KubeSphere 的容器化实践
本篇文章是 KubeSphere 2020 年度 Meetup 上讲师宋磊分享内容整理而成。
大家好,我是宋磊,在运营商的一个科技子公司任职,主要做大数据业务。我主要负责公司的 IaaS 层和 PaaS 层的建设和运营的工作,涉及到两个层面。因为 Kubernetes 是一个非常全面的技术体系,并不是我们部署了一个集群把业务放上去就能开箱即用,涉及到很多方面,比如服务器、网络、存储,还有一系列的工具链的支持,我们才能真正的去投产,所以我们团队是比较适合做这件事的。
业务类型和实践架构
我们目前有三种类型的业务: 1.接口的服务,容量占比是比较大的一块 2.APP 的应用 3.外部的应用系统,主要做智慧政务、智慧生态、智慧城市、智慧旅游等业务
这三个类型的业务,整体的 TPS 的峰值大约在 2500,平均在 1500 左右。
我们整体的集群规模:我们所有的集群都是以物理服务器进行部署的,生产集群有 50 个物理节点,测试的集群有 20——30 个节点,整体的 Kubernetes 集群的规模不到 100 个物理节点。
上面这张图是我们 Kubernetes 的实践。
IaaS 层: 数据中心物理层的网络是 SDN 加 VXLAN 的架构,后续对于网络插件的选型是有考虑的。
存储这一块我们主要是对接 Ceph,我们有一个比较大的 Ceph 集群,大概有 50 个物理节点,其中对接层不单单跑了 KubeSphere 的这些业务,还跑了一些 OpenStack 的虚拟机。我们在 Ceph 上面做了一些数据的分层,闪存盘(存放集群元数据)和 SATA 盘(存放真正的数据),也做了一些数据的热度分层,然后以 KubeSphere 为中心的容器集群周边做了很多对接的工具链。这其中的一些工具链不是容器化的,而是外链的,比如说 CMDB 配置管理,Prometheus 的监控,Skywalking 主要做微服务的全链路监控,还有一些日志的采集分析,主要还是以 ELK 的工具链为主,也是在 KubeSphere 集群之外的,DevOps 这层是基于 Jenkins 的 pipeline 去做的。
然后流量入口这一块,因为我们所有的业务类型都是互联网性质的,所以我们在互联网区域有一个整体的 Nginx 的集群,主要做业务的路由分发和流量的集中控制。
存储和网络的选型与实践
网络
上文已经提到我们的物理网络已经是 SDN 加 VXLAN 的大二层的租户性质,所以对于 KubeSphere 的网络插件的选型,目前主要就两种——Calico 和 Flannel。
Flannel 本身就是基于 VXLAN的,如果选择它的话,相当于我们两个层面——物理网络和 Kubernetes 网络都是 VXLAN,这就涉及到两次层面的封包和解包的问题,对性能还是有一定的影响的,所以我们最终还是选择了 Calico 这种纯三层的 BGP 的网络,然后做网络的插件。
存储
目前我们主要对接的是 Ceph 的块存储,服务于一些有状态的服务,比如我们会做一些 helm 的镜像,主要是 Zookeeper、Redis、MySQL。但是这些有状态的服务主要是在测试集群,给开发测试人员使用的。生产环境主要是一些无状态的服务,比如分布式框架的 Java微服务应用,还有 Python 和 go。go 主要是用来做区块链,因为现在区块链跟 K8s 结合是非常有必要的业务类型。
但是 RBD 块存储有局限性,我们很多业务需要多个 Pod 或者多个容器共同读写某一块存储,但块存储是实现不了的,后续我们还会有对象存储和网络存储(NFS)的对接。
DevOps 和日志采集的实践
CI/CD 这块,底层是 Jenkins,没有集成到 KubeSphere 里,因为我们之前有一个 Jenkins 的 Master 和 Slave 的架构的平台,基于 pipeline,镜像直接打到 Kubernetes 集群,做自动化的 CD。
日志采集相对来说会麻烦一点,目前对接的 ELK 的工具链,底层主要是采集三种类型的日志,宿主机日志、Pod 业务日志和 Kubernetes 组件相关的日志。宿主机和 Kubernetes 组件日志都是基于宿主机采集。
Pod 业务日志的采集,主要有两种方式:
- 在 Pod 里加一个 Sidecar 的容器
- 在一个业务容器里起两个服务,前台服务是 Java 的微服务,后台是采集的 Filebeat 的 agent,然后将采集agent直接打到镜像里运行
ELK 的工具链是比较成熟的工具链了,可以参见上图。
灰度发布
我们是以两种形式来进行灰度发布。
针对小版本迭代 基于权重,通过 Kubernetes 控制器的副本特性来做灰度发布。一个业务中有多个副本,先灰度发布一两个,没有问题就继续灰度发布,如果有问题就回退。这种方式是比较常规的。
针对大版本迭代 使用业务灰度方式。针对用户的 HTTP 请求的头部以及 body 里用户的 ID,通过 Nginx 和 lua 脚本,分发到不同的版本上面去。
服务治理
我们对于服务治理这块后续可能会有一些需求,目前没有一种特别好的实践方式。
目前来说我们对于微服务治理都是基于辅助的手段,比如全链路监控,日志的指标,来做微服务的流量控制和垄断。后续我们想往服务网格上探索,把流量的监测和控制放在平台层,开发只需要专注于业务的逻辑,目前还没有比较好的落地方案。
本文由博客一文多发平台 OpenWrite 发布!
运营商业务系统基于 KubeSphere 的容器化实践相关推荐
- 韩国移动运营商LGU +推出基于区块链的海外支付系统
点击上方 "蓝色字" 可关注我们! 暴走时评:韩国LG UPlus日前推出一种基于区块链的跨运营商海外支付服务,与台湾的远传电信.日本的SoftBank和美国的TBCASoft三家 ...
- UNIFI Communications收购WIS Telecom 促进UNIFI全球运营商业务增长
中文商业新闻网(biznewcn.com)讯: UNIFI Communications收购WIS Telecom 促进UNIFI全球运营商业务增长 2016年11月22日美国纽约州纽约市-- 领先的 ...
- 洪强宁:宜信PaaS平台基于Calico的容器网络实践
洪强宁:宜信PaaS平台基于Calico的容器网络实践 本文内容来自由七牛云主办的ECUG Con,独家授权InfoQ整理完成 容器云面临的网络挑战 在传统的IDC的架构里面网络是很重要的事情,在 ...
- 基于 Docker Compose 容器化搭建 Wordpress
基于 Docker Compose 容器化搭建 Wordpress 最近由于业务需求帮公司搞了几个 Wordpress 作为官网,中间也是踩了不少坑,倒不是搭建 wordpress 难,主要是 wor ...
- 运营商服务器系统,浪潮服务器助力运营商三大支撑系统上云
[IT168 资讯]继浙江移动.广东移动.福建电信业务系统云化应用改造项目后,浪潮服务器再次中标河南某运营商云资源池项目,中标金额达三千多万.三百多台浪潮双路.四路服务器用于支撑该运营商的BOSS计费 ...
- f5在运营商计费系统中的版本升级割接详细步骤
Bob Chen 标签: f5,hotfix,upgrade 环境描述 某运营商,计费系统,2台f5 bigip6900设备,版本9.4.7,接近200万宽带用户 由于业务比较重要,即使晚上12点以后 ...
- 案例:同程凤凰缓存系统基于Redis的设计与实践。
本文和大家分享一下同程凤凰缓存系统在基于Redis方面的设计与实践.在本文中除了会列举我们工作过程中遇到各种问题和误区外,还会给出我们相应的解决办法,希望能够抛砖引玉为大家带来一定的启示. 同程凤凰缓 ...
- 基于Kubernetes的云平台存储容器化实践
本文根据蔡逸煌老师在[Deeplus直播第214期]线上分享演讲内容整理而成. 蔡逸煌 OPPO云平台高级后端工程师 主要从事云平台开发工作,擅长K8S.容器网络.存储等领域. 今天分享的主题是OPP ...
- ansible 建 kubernetes 证书签名请求_基于Kubernetes的云平台存储容器化实践
本文根据蔡逸煌老师在[Deeplus直播第214期]线上分享演讲内容整理而成.(文末有获取本期PPT&回放的途径,不要错过) 蔡逸煌 OPPO云平台高级后端工程师 主要从事云平台开发工作,擅长 ...
最新文章
- Erlang之父给程序员的两点忠告 | 缅怀
- const与#define的异同
- Establishing SSL connection without server's identityverification is not recommended. According to M
- python 内存回收机制_【第1题】 Pythonn内存管理以及垃圾回收机制
- windows7未能启动怎么修复计算机,win7系统提示windows无法启动这个硬件设备怎么办...
- 人民邮电报:区块链和工业互联网的融合 将产生叠加倍增效应
- 书里书外丨大咖论“赛”:阿里云天池 TOP 选手不得不说的那些事儿
- totalspider爬虫批量重启报错Connection Error
- 关于浏览器的兼容性问题
- Ubuntu 手动挂载U盘
- HID Global推出全新室内定位服务 助力企业优化配置劳动力
- 斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)
- IC工程师简历制作全解读
- springboot - redis记录并统计网页浏览量
- 如何提高mysql的update速度_如何提高数据库update更新的速度
- 高性能服务器设计——常用网络服务器设计模型
- 如何从电脑直接控制安卓手机 监控安卓手机 安卓手机如何控制安卓手机
- Excel怎么转PDF格式?这些方法值得收藏
- yigo基础学习笔记1
- Python画正方体
热门文章
- ov5645 mipi 驱动
- 计算机科学summer program,青少年参与麻省理工学院暑期计划 (MIT Summer Program),打造微型自动驾驶赛车...
- 上网行为管理设备网桥部署方式
- 贯彻这三件事情,你将会迅速到达波澜不惊
- 制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优
- 苹果手机怎么看文本文档
- 帝国列表页 pHP原代码页,帝国模板列表页和内容页的伪静态规则实现方法
- 克隆远程仓库#180804
- 软考信息安全工程师学习笔记六(未完待续)
- 计算机机房的监控,机房动环监控解决方案