本篇文章是 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 业务日志的采集,主要有两种方式:

  1. 在 Pod 里加一个 Sidecar 的容器
  2. 在一个业务容器里起两个服务,前台服务是 Java 的微服务,后台是采集的 Filebeat 的 agent,然后将采集agent直接打到镜像里运行

ELK 的工具链是比较成熟的工具链了,可以参见上图。

灰度发布

我们是以两种形式来进行灰度发布。

  1. 针对小版本迭代

    基于权重,通过 Kubernetes 控制器的副本特性来做灰度发布。一个业务中有多个副本,先灰度发布一两个,没有问题就继续灰度发布,如果有问题就回退。这种方式是比较常规的。

  2. 针对大版本迭代

    使用业务灰度方式。针对用户的 HTTP 请求的头部以及 body 里用户的 ID,通过 Nginx 和 lua 脚本,分发到不同的版本上面去。

服务治理

我们对于服务治理这块后续可能会有一些需求,目前没有一种特别好的实践方式。

目前来说我们对于微服务治理都是基于辅助的手段,比如全链路监控,日志的指标,来做微服务的流量控制和垄断。后续我们想往服务网格上探索,把流量的监测和控制放在平台层,开发只需要专注于业务的逻辑,目前还没有比较好的落地方案。

本文由博客一文多发平台 OpenWrite 发布!

运营商业务系统基于 KubeSphere 的容器化实践的更多相关文章

  1. 运营商DNS系统安全解决方案

    DNS系统面临的主要风险 目前,DNS面临的安全问题主要可以分为三类:DNS欺骗攻击.拒绝服务攻击.系统漏洞,下文将分别进行介绍.  DNS欺骗攻击 当一个DNS服务器遭到欺骗攻击,使用了来自一个恶 ...

  2. 洪强宁:宜信PaaS平台基于Calico的容器网络实践

    洪强宁:宜信PaaS平台基于Calico的容器网络实践   本文内容来自由七牛云主办的ECUG Con,独家授权InfoQ整理完成 容器云面临的网络挑战 在传统的IDC的架构里面网络是很重要的事情,在 ...

  3. 【运维技术】JENKINS管道部署容器化初探

    目标服务器安装docker参考官方文档 https://docs.docker.com/install/linux/docker-ce/centos/ (可选)在目标服务器上安装docker私服 ht ...

  4. DCOS实践分享(1):基于图形化模型设计的应用容器化实践

    2015年11月29日,Mesos Meetup 第三期 - 北京技术沙龙成功举行.本次活动由数人科技CTO 肖德时 和 Linker Networks 的 Sam Chen 一起组织发起. 在这次m ...

  5. Hyper:基于Hypervisor的容器化解决方案

    近日,初创公司HyperHQ发布了他们的开源项目Hyper,Hyper是一个可以在hypervisor上运行Docker镜像的引擎,它融合了Docker容器和虚拟机的优点,旨在打造一个性能更好.更安全 ...

  6. Docker+Kubernetes(k8s)微服务容器化实践

    第1章 初识微服务微服务的入门,我们从传统的单体架构入手,看看在什么样的环境和需求下一步步走到微服务的,然后再具体了解一下什么才是微服务,让大家对微服务的概念有深入的理解.然后我们一起画一个微服务的架 ...

  7. 电信运营商 IT 系统介绍

    业务支撑系统 BSS: Business support system  运营支撑系统 OSS: Operation support system  管理支撑系统 MSS: Management Su ...

  8. 基于SOA的组件化业务基础平台[转]

    转自https://www.ibm.com/developerworks/cn/webservices/1111_xiaojg_soa/index.html 业务基础平台是业务逻辑和基础架构平台之间的 ...

  9. 国内最具影响力科技创投媒体36Kr的容器化之路

    本文由1月19日晚36Kr运维开发工程师田翰明在Rancher技术交流群的技术分享整理而成.微信搜索rancher2,添加Rancher小助手为好友,加入技术群,实时参加下一次分享~ 田翰明,36Kr ...

  10. kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析

    作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...

随机推荐

  1. 训练人形机器人时如何收集人类行为数据 —— 通过人来训练机器人(真人实际演示动作)or 仿真环境自动生成 —— 哪种方式更优、更可行呢

    特斯拉的老马,搞的optimus人形机器人就是通过人来训练机器人(真人实际演示动作),但是未来使用仿真环境自动生成数据是否可行呢,NVIDIA的老黄在2024 GTC上是大力推出自家的GROOT平台, ...

  2. 树莓派3B+ 安装开源软路由 openwrt 并设置 无线网桥

    在openwrt官网上找到最新版的下载地址: https://openwrt.org/releases/19.07/start 注:   本文中使用的openwrt 系统为最新的稳定版系统,自带web ...

  3. 标准DQN在测试算法性能时为什么要将探索概率epsilon设置为0.05呢,而不是使用其他探索概率的epsilon-greedy策略或者直接使用greedy探索策略呢?

    标准dqn的策略网络参数更新所采用的规则为Q-learning中的更新规则,总所周知的是Q-learning是异策略算法,异策略算法就是行为策略和评估策略(更新所得策略)是不同的. 更新规则: q-l ...

  4. 低端hdmi视频采集卡的替代方案——向日葵远控

    前一阵看直播推货入手了一款hdmi视频采集卡,如下: ======================================================= 使用这个视频采集卡发现两个问题: ...

  5. 使用 Apache DolphinScheduler 进行 EMR 任务调度

    By AWS Team 前言 随着企业规模的扩大,业务数据的激增,我们会使用 Hadoop/Spark 框架来处理大量数据的 ETL/聚合分析作业,⽽这些作业将需要由统一的作业调度平台去定时调度. 在 ...

  6. [学习笔记] 树链剖分(重链剖分) - 图论 & 数据结构

    树链剖分 树链剖分,用于解决一系列的树中链上问题的算法(数据结构).其实对于树链修改和树链求和问题可以使用更加方便的树上差分解决,但是对于像求树链最大(小)权值之类的更复杂的问题,差分就显得不够用了. ...

  7. 【全】CSS动画大全之其他【火影忍者动态背景】

    效果预览 代码 <!DOCTYPE html> <html> <head> <head> <meta charset="utf-8&qu ...

  8. 2023 ICPC 杭州游记

    题解 省流:三个 NOI 银牌合成一个 ICPC 区域赛银牌 感谢 gjy 的铜钱剑 和 hszx 的大家玩得很开心 两个联赛数据结构没做出来

  9. 1分钟掌握变速效果,让你的视频快慢自如----蓝松视频编辑SDK

       2. 变速调整默认速度是1X就是正常播放速度,可以通过调节滑块,实现视频中的慢镜头动作    3.只需一行代码设置播放速度/** 视频的播放速度; 范围是 0.1---10.0 默认1.0; 正 ...

  10. zabbix基本概念

    Zabbix是一个企业级的.开源的.分布式监控解决方案. Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题 ...