首页 文章 精选 留言 我的

精选列表

搜索[AI原生],共10000篇文章
优秀的个人博客,低调大师

蜘点云原生之 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 发布!

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册