蜘点云原生之 KubeSphere 落地实践过程
作者:池晓东,蜘点商业网络服务有限公司技术总监,从事软件开发设计 10 多年,喜欢研究各类新技术,分享技术。 来源:本文由 11 月 25 日广州站 meetup 中讲师池晓东整理,整理于该活动中池老师所分享的同名议题内容。
公司平台介绍
蜘点成立于 2016 年 4 月,致力于打造社区电商业务(解决最后 3 公里的配送问题)。当初通过自建直营渠道、自建仓库、自建大型社区仓、和采用加盟仓的方式,实现在社区的电商业务的发展,配送本地化。最多的时候在全国各个省都有分公司及下属子公司,在每个省都有省仓,在南北的主要城市都建有大型仓。
后面随着电商行业的落幕,公司又转型做企业数字化整体解决方案(产业互联网方向)。整体发展如下图:
平台背景介绍
公司通过购买服务器组建了一个内部云,托管在 IDC 机房中,一直使用 VMware 的虚拟化技术,来实现虚拟机的管理。随着业务增加,项目从单体架构向分布式架构演进,虚拟机数量也随着增加,给开发与运维管理来了不少问题,随着微服务技术的发展,采用容器化架构成为了解决公司底层架构的问题。
- 业务快速发展,不新增虚拟主机,环境搭建复杂,早期通过虚拟机模板解决;
- 各个项目组之间的业务调用,都是通过 HTTP 接口交互,效率不高;
- 部署靠人工编译打包上传,测试/上线,无 CI/CD,开发效率低;
- 运维压力大,运维资源缺乏,各个服务、中间件的监控不到位,虽有 Zabbix,但管理不过来,缺少统一的监控面板;
- 虚拟机的资源难以动态分配利用,资源被固定化;
- 缺少专业的运维人员,环境安装、监控不够完善,资源使用情况难可视化(运维人员就一个);
- 前端组也想采用容器化部署,不要在本地打包,通过 FTP 上传静态文件的方式;
- 运维人员想减少虚拟机数量,新上线业务不需要创建很多虚拟机,只需要增加少量节点就可以。
平台选型
业务痛点
从前面的介绍,在从单体架向分布式架构的演变过程中,伴随着业务的快速发现,与快速响应,基础模块及业务模块越来越多,团队都忙在打包部署的过程中。
- 修 Bug 打包部署。
- 上线打包部署。
- 每次上线全团队 StayBy, 折腾至深夜。
- 效率低下,版本延迟。
引入 Jenkins 半自动化部署
为解决团队的效率问题,首先引入 Jenkins,通过 Jenkins 解决大部分部署问题。
引入 Kubernetes(K8s)
Jenkins 的引入,已经能很大的提高效率,但还是存在一些问题:
- 服务太多,每次部署要排队。
- 虚拟机太多,维护 Shell 脚本成本高。
- 资源利用率低,没有用到点上。
自建 K8s 集群,可以解决繁锁的 Shell 脚本问题,结合 Jenkins 的 K8s 的插件,通过 Dockerfile + yaml 的方式进行部署。
自建 K8s 维护痛点:
- 运维集群困难,缺乏简单方便的可视化工具,团队大多是开发人员,运维经验有限。
- 操作 K8s 都是纯脚本形式,维护比较困难,由于缺乏可视化工具,应用部署与配置修改全是依靠命令脚本手动执行。
- 还是达不到回收服务器权限的目的,排查问题还是要上 K8s,缺少资源监控与调度。
选择 KubeSphere 原由
在 K8s 可视化管理工具的调研过程中,发现 KubeSphere 比较适合公司,对比国外开源的 Kubernetes Dashboard、Rancher,KubeSphere 还是比较适合国内的使用。
- 可视化的 K8s 管理工具,包含了所有 K8s 的功能。
- 一体化的 DevOps,降低部署复杂度,应用生命周期。
- 多租户管理,满足不同子公司的业务隔离需求。
- 集成角色权限管理功能,满足对不同人员分配不同权限的需求。
- 在线日志查看功能,降低对服务器用户的管理。
- 集群可视化管理,监控可视化。
- 平台中的所有功能都是可插拔与松耦合,可以根据业务场景可选安装所需功能组件。
落地实践、效果
平台微服务架构部署
KubeSphere 生产环境规划与安装
生产环的配置规划是: 3 个 Master Node:8C 16G 100G 磁盘, 10+ Worker Node(初期),20+ Worker Node(后续增加)。
部署 SpringCloud 的微服务套件,包括 Eureka,Redis, 电商平台的微服务,如商品、订单、会员等。ToB 微服务,企业数字化 10+ 项目。
KubeSphere 的使用规则
团队及项目划分
- 按子公司及不同的端建立不同的企业空间 -- 企业空间。
- 在项目管理中按不同的业务线,建立不同的项目组合。
- 创建的用户,按 platform-regular 的角色。
- 在企业空间、项目管理、流水线中添加成员。
节点管理及部署
- 节点标签,为每个节点配置标签,和 yml 配合使用。
- 不使用主机网络模式。
- 重要数据文件采用挂载宿主机目录。
- 对外服务需提供 NodePort 配置。
KubeSphere 集群
KubeSphere 应用部署与流水线
KubeSphere 使用效果
- 全流程的 DevOps,释放开发频繁打包部署的工作,专注于研发。
- 可视化的资源监控,配合告警等措施,提升运维的能力。
- 多租户,多空间,项目的隔离,使用者权限的分管,让跨业务团队的管理更精准。
- 缩减原来的虚拟主机(4C 8G),组成资源更大的节点,资源利用率提升。
- 支持在线化的动态扩容,操作方便,想增加或减少实例,操作一下就搞定。
- 前端也实现容器化部署,释放手动打包上传的工作量。
存在问题及解决方法
当时官方提供的 Maven 版本不是 3.6 的版本,如何解决?
解决:自己制作了一个 3.6 的 Maven 基础镜像,然后在 Clusterconfiguration,找到 Maven 的 image,修改即可。
自建了 nexus,如何修改 maven setting.xml?
解决:在 CRDs 筛选 kubesphere-devops-system,找到 ks-install,修改里面的 maven setting.xml 即可,修改后,要登录 Jenkins,重新 reload 配置。
如何访问 Jenkins?
解决:Master 的 ip + 30180,登录账号密码和 KubeSphere 的管理员。可以参考文件:https://juejin.cn/post/7124589639536476190
在容器中如何访问共享文件?
解决:通过挂载 NFS 系统来访问。
容器中的文件随着容器销毁而消失,想要保存更长时间文件?
解决:通过挂载宿主机的文件/或磁盘。
容器在滚动部署过程中会被销毁,其他服务调用还是走旧 IP 访问,404?
解决:通过在 Kubernetes 的 Service 来调用(SVC)。
DevOps 与自建 Gitlab 搭配怎么触发构建?
解决:进入 Jenkins 在流水线上使用通用钩子触发。
未来规划
通过引入 KubeSphere 中间件管理平台,极大地提交了整体的交付效率,节省在部署环节的时间支付,通过工具更好的实现了 CI/CD;提供了可视化的资源界面,能更清楚地知道各个服务器的资源使用情况,做到很好的监控。
随着平台的使用成熟,越来越多的业务将迁入平台,包括前端、.net、或者其他子公司的业务。KubeSphere 的更多功能,将为业务的发展提供很好的基础。
本文由博客一文多发平台 OpenWrite 发布!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
详解ZooKeeper在微服务注册中心的应用
本文分享自华为云社区《SpringCloud ZooKeeper 详解,以及与Go、Rust等非Java服务的集成》,作者: 张俭。 ZooKeeper,是一个开源的分布式协调服务,不仅支持分布式选举、任务分配,还可以用于微服务的注册中心和配置中心。本文,我们将深入探讨ZooKeeper用做微服务注册中心的场景。 ZooKeeper中的服务注册路径 SpringCloud ZooKeeper遵循特定的路径结构进行服务注册 /services/${spring.application.name}/${serviceId} 示例: /services/provider-service/d87a3891-1173-45a0-bdfa-a1b60c71ef4e /services和/${spring.application.name}是ZooKeeper中的永久节点,/${serviceId}是临时节点,当服务下线时,ZooKeeper会自动删除该节点。 注:当微服务的最后一个实例下线时,SpringCloud ZooKeeper框架会删除/${spring.application.name}...
- 下一篇
你真的会写 Prompt ? 剖析 RAG 应用中的指代消解
随着 ChatGPT 等大语言模型(LLM)的不断发展,越来越多的研究人员开始关注语言模型的应用。 其中,检索增强生成(Retrieval-augmented generation,RAG)是一种针对知识密集型 NLP 任务的生成方法,它通过在生成过程中引入检索组件,从已知的知识库中检索相关信息,并将这些信息与 LLM 的生成能力结合,从而提高生成的准确性和可靠性。这种方法可以用于实现各种知识密集型 NLP 任务,如问答、文摘生成、语义推理等。 本文将从解决优化 RAG 系统里的一个具体问题出发,通过展示使用 LLM Prompt Engineering 的方法,来解析传统 NLP 的问题。 01.解决方案初探 开源项目 Akcio 就是一套完整的 RAG 问答系统,用户导入各类私有专业知识,就可以构建专业领域的问答系统。 |Akcio 的架构图。专业知识是各类 Documents,通过 DataLoader 导入进 Store。在每次提问 Question 后,LLM 可以结合召回知识,加上 LLM 自身的自然语言生成能力,给出对应的回答。 举个例子,比如我们将一篇名为《2023 大...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库