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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/220880.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于多智能体系统一致性算法的电力系统分布式经济调度策略MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 参考文献: 主要内容: 应用多智能体系统中的一致性算法,以发电机组的增量成本和柔性负荷的增量效益作为一致性变量,设计一种用于电力系统经济调度的算法&#x…

C语言训练:三个字符串比较大小,实现两个整数数的交换统计二进制中1的个数

目录 一、编写程序,输入三个字符串,比较它们的大小,并将它们按由小到大的顺序输出。要求用函数、指针实现。要求:要采用函数调用,并用指向函数的指针作为函数的参数。 1.不使用函数指针作为参数,并自己模拟strcmp。 …

UE5 水材质注意要点

1、两个法线反向交替流动,可以去观感假的现象 2、水面延边的透明度低 3、增加水面延边的浪花 4、增加折射 折射要整体质量至少在High才有效果 改为半透明材质没有法线信息? 5、处理反射效果 勾选为true 找到这个放在水域 勾为false,即可有非…

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统。 单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密…

阿里云|人工智能(AI)技术解决方案

函数计算部署Stable Diffusion AI绘画技术解决方案 通过函数计算快速部署Stable Diffusion模型为用户提供快速通过文字生成图片的能力。该方案通过函数计算快速搭建了AIGC的能力,无需管理服务器等基础设施,专注模型的能力即可。该方案具有高效免运维、弹…

【AI图集】猫狗的自动化合成图集

猫是一种哺乳动物,通常被人们作为宠物饲养。它们有柔软的毛发,灵活的身体和尖锐的爪子。猫是肉食性动物,主要以肉类为食,但也可以吃一些蔬菜和水果。猫通常在夜间活动,因此它们需要足够的玩具和活动空间来保持健康和快…

腾讯云微服务11月产品月报 | TSE 云原生 API 网关支持 WAF 对象接入

2023年 11月动态 TSE 云原生 API 网关 1、支持使用私有 DNS 解析 服务来源支持私有 DNS 解析器,用户可以添加自己的 DNS 解析器地址进行私有域名解析,适用于服务配置了私有域名的用户。 2、支持 WAF 对象接入 云原生 API 网关对接 Web 安全防火墙&…

管理类联考——数学——真题篇——按题型分类——充分性判断题——蒙猜D

先看目录,除了2018年比较怪,其他最多2个D(数学只有两个弟弟,一个大弟,一个小弟) 文章目录 2023真题(2023-16)-D 2022真题(2022-21)-D-分析选项⇒是否等价⇒是…

自动驾驶技术入门平台分享:百度Apollo开放平台9.0全方位升级

目录 平台全方位的升级 全新的架构 工具服务 应用软件(场景应用) 软件核心 硬件设备 更强的算法能力 9.0版本算法升级总结 更易用的工程框架 Apollo开放平台9.0版本的技术升级为开发者提供了许多显著的好处,特别是对于深度开发需求…

C# 如何控制多线程同步执行

写在前面 使用Task类来控制多线程的同步执行,可应用于多任务分发执行后,再做归并处理。Tas既拥有线程池的优点,同时也解决了使用ThreadPool不易控制的弊端;可以非常简便并可靠地实现多线程的顺序执行。 代码实现 public class …

深入理解——快速排序

目录 💡基本思想 💡基本框架 💡分割方法 ⭐Hoare版本 ⭐挖坑法 ⭐前后指针法 💡优化方法 ⭐三数取中法 ⭐小区间内使用插入排序 💡非递归实现快速排序 💡性能分析 💡基本思想 任取待排…

ros2机器人在gazebo中移动方案

原文连接Gazebo - Docs: Moving the robot (gazebosim.org) 很重要的地方:使用虚拟机运行Ubuntu的时候,需要关闭”加速3D图形“的那个选项,否则gazebo无法正常显示。 Moving the robot(使用命令移动机器人示例) In t…

小新Air-14 Plus 2021款AMD ACN版(82L7)原装出厂Win11系统镜像

LENOVO联想笔记本开箱状态原厂Windows11系统包 链接:https://pan.baidu.com/s/1D_sYCJAtOeUu9RbTIXgI3A?pwd96af 提取码:96af 联想小新AIR14笔记本电脑原厂系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&am…

OpenAI 疑似正在进行 GPT-4.5 灰度测试!

‍ 大家好,我是二狗。 今天,有网友爆料OpenAI疑似正在进行GPT-4.5灰度测试! 当网友询问ChatGPT API调用查询模型的确切名称是什么时? ChatGPT的回答竟然是 gpt-4.5-turbo。 也有网友测试之后发现仍然是GPT-4模型。 这是有网友指…

飞天使-k8s-知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试:通过使用自动化构建工具和自动化测试套件,持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题,并及早…

[ CTF ]【天格】战队WriteUp-第七届“强网杯”全国安全挑战赛

第七届“强网杯”全国安全挑战赛 2023.12.16~2023.12.17 文章目录 【Misc】Pyjail ! Its myFILTER !!!easyfuzz谍影重重2.0签到Pyjail ! Its myRevenge !!!server_8F6C72124774022B.py 问卷调查 【Reverse】ezre 【Web】happygame 【强网先锋】石头剪刀布TrieSpeedUpezreez_fmt…

Gazebo11更新安装

ROS Melodic版本安装的是Gazebo9,Gazebo 最新版本是11 dpkg -l | grep gazebo 出现的是 gazebo9 相关的插件,需要卸载全部插件。 sudo apt-get remove gazebo9 gazebo9-common gazebo9-plugin-base libgazebo9:amd64 libgazebo9-dev:amd64 ros-melodic…

SpringCloud源码探析(十二)-基于SpringBoot开发自定义中间件

1.概述 中间件是一种介于操作系统和应用软件之间,为应用软件提供服务功能的软件,按功能划分有消息中间件(Kafka、RocketMQ)、通信中间件(RPC通信中间件,dubbo等),应用服务器等。中间…

什么是 DDoS ?如何识别DDoS?怎么应对DDOS攻击

什么是DDOS攻击 DDoS攻击(Distributed Denial of Service Attack)即分布式拒绝服务攻击,是一种利用分布式网络来发起大量的请求,占用目标服务器或网络资源的攻击行为。这种攻击方式可以瘫痪目标系统,导致其无法正常提供…

每日一题,二维平面

给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示: 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, …