如何基于 k8s做私有化部署
公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。
随着国内数字化转型的加速和国产化进程推动,软件系统的私有化部署已经成为非常热门的话题,因为私有化部署赋予了企业更大的灵活和控制权,使其可以根据自身需求和安全要求定制和管理软件系统。下面分享下我们的基于k8S私有化部署经验。
私有化交付的目标
要支持系统快速部署至客户机房
支持版本在线升级
支持动态扩容
能快速集成系统监控告警
支持在线运维
可快速移植
以上目标,目前最合适的就是k8s,原因如下
- 如果基于jar部署,系统快速部署和动态扩容就无法满足,pass。
- docker-compose在快速部署、快速迁移可以满足,但是其他方面是满足不了,比如动态扩容,以及图形化的在线运维等。
因此基于k8s做私有化交付是最合适的方案,当然如果项目规模比较小,就几个服务也没有动态扩容等需求,那么也没必要引入k8s,如果项目规模较大,使用k8s进行私有化部署是不错的解决方案。
基于k8s私有化部署如何做?
以上我们确认了使用k8s做私有化部署,但是还有一些细节问题,需要考虑
在公司内部一般使用gitlab+Jenkins做服务部署,在客户现场,这种方式一般不可行,因为一般不允许在客户现场访问公司的代码仓库

镜像仓库要能支持公网访问,这样才可以在客户机房下载到镜像
一个服务就有很多yaml文件,如果几十个服务的yaml文件怎么管理,如何快速部署或者升级
中间件要支持快速部署,有些中间件不能部署在k8s,所以需要支持自动化脚本快速部署。
系统配置如何管理,每个服务都依赖数据库、消息等中间件,这些地址怎么管理起来
基于问题,我们的解决方案如下:

在公司内部构建镜像时,直接推送至公网镜像仓库Harbar,在客户机房直接拉取部署,而部署服务使用Helm进行部署,Helm是一个 k8s的包管理工具,他可以把一组服务yaml文件管理起来,并且支持部署和更新,非常方便。比如有一个文件系统,包括Deployment、Service、gateway vs、pv pvc等文件,如果用Helm管理起来,如下图

上面文件,可以认为是模板,其中有一个配置文件,values.yaml,所有的可变都在这里面维护,在
要部署这个文件系统,执行以下命令即可完成。
helm install fss myrepo/fss \
--set pv.log.type=storageClass \
--set pv.log.pvc.storageName=gfs-storage \
--set pv.log.pvc.storage=5Gi \
--set pv.file.type=storageClass \
--set pv.file.pvc.storageName=gfs-storage \
--set pv.file.pvc.storage=1Gi \
--set istioGateway.schema=http \
--set istioGateway.hosts={test-user.com} \
--set istioGateway.ucenterHost=test-order.com \
--set apollo.cluster=test\
--set sv.fssManager.replicaCount=1 \
--set sv.fssRest.replicaCount=1
中间件部署,对部署在k8s外部的中间件,可以使用Ansiable编写自动化脚本,进行快速部署,几分钟就可以部署一个高可用集群。
系统参数配置,一般使用Nacos或Apollo 进行管理配置,但是由于服务过多,配置起来工作量相对较大,而且很多都是重复工作。
比如数据库地址、kafka地址、es地址都是相同的,那么如何避免做重复工作,比如可以写一个shell脚本把公共的参数提取出来,然后进行修改替换,或者写一个运维部署平台,把相关公共参数进行图形化配置,并对接配置中心,进行发布替换。

系统监控告警,目前可使用deepFlow、kube-prometheus、夜莺等解决方案
在线运维平台,可以使用Rancher或KuberSphere,这两个都是目前非常热门图形化运维平台
快速移植,k8s设计之初就考虑到移植性的问题,所以与底层基础设施无关联性,所以不管是在公有云、私有云、混合云都是可以进行部署的,而且现在各大云厂商,都有 k8s 的商用解决方案,让我们部署起来更加快速,也不用考虑集群的稳定性,比如阿里的ACK、华为的CCE、腾讯云的TKE等。
总结
以上我们介绍私有化部署的难点,并引申出了私有化部署整体解决方案,后续还会更新更多私有化部署相关文章,比如存储怎么挂载、域名怎么管理、监控告警怎么配置等,请持续关注。
如何基于 k8s做私有化部署的更多相关文章
- 基于 K8s 做应用发布的工具那么多, 阿里为啥选择灰姑娘般的 Tekton ?
作者 | 邓洪超,阿里云容器平台工程师, Kubernetes Operator 第二人,云原生应用标准交付与管理领域知名技术专家 导读:近年来,越来越多专门给 Kubernetes 做应用发布的 ...
- 基于k8s集群部署prometheus监控ingress nginx
目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...
- 基于k8s集群部署prometheus监控etcd
目录 基于k8s集群部署prometheus监控etcd 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署prometheus监控 ...
- 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上
@ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...
- 如何基于 K8S 多租能力构建 Serverless Container
当前 Kubernetes 已经成为名副其实的企业级容器编排规范,很多云平台都开始提供兼容 Kubernetes 接口的容器服务.而在多用户支持方面,多数平台选择直接提供专属虚机集群,用户需要花费大量 ...
- 还原火山引擎 A/B 测试产品——DataTester 私有化部署实践经验
作为一款面向ToB市场的产品--火山引擎A/B测试(DataTester)为了满足客户对数据安全.合规问题等需求,探索私有化部署是产品无法绕开的一条路. 在面向ToB客户私有化的实际落地中,火 ...
- 基于TLS证书手动部署kubernetes集群(下)
一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...
- 基于 K8S 构建数据中心操作系统
在 12 月 22 日 ECUG 的下午场 ,七牛云容器计算部技术总监袁晓沛为大家带来了主题为<基于 K8S 的 DCOS 之路>的精彩分享,向大家介绍了七牛容器云目前 K8S 的状况和产 ...
- (转)基于TLS证书手动部署kubernetes集群(下)
转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...
- 基于k8s的集群稳定架构-转载
基于k8s的集群稳定架构-转载 前言 我司的集群时刻处于崩溃的边缘,通过近三个月的掌握,发现我司的集群不稳定的原因有以下几点: 1.发版流程不稳定 2.缺少监控平台[最重要的原因] 3.缺少日志系统 ...
随机推荐
- Python 搭建 FastAPI 项目
一般网上的文章都是以脚本的方式写Demor的,没找到自己想要的那种项目结构型的示例(类似Java SpringBoot 创建 Model,通过 pom 进行关联配置的那种) 看了一些源码,再结合自己的 ...
- Go语句与表达式深度解析:全案例手册
关注公众号[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资 ...
- BZ全景编辑器(KRPano全景可视化编辑器, 无需编写代码, 图形化制作全景漫游)
软件简介 BZ全景编辑器是一款KRPano全景可视化编辑工具,下载安装即可使用,无需拥有任何KRPano代码基础,便可以制作生成精美的全景漫游作品. BZ全景编辑器群:882083973 最新版软件下 ...
- 使用HTML一键打包IPA工具打包KRPANO全景项目
该软件已经被GDB苹果网页一键打包工具取代,详情参考如下链接 GDB苹果网页一键打包 HTML一键打包IPA(苹果应用)工具可以把本地HTML项目或者网站打包为一个苹果应用IPA文件,无需编写任何代码 ...
- python入门基础(14)--类的属性、成员方法、静态方法以及继承、重载
上一篇提到过类的属性,但没有详细介绍,本篇详细介绍一下类的属性 一 .类的属性 方法是用来操作数据的,而属性则是建模必不的内容,而且操作的数据,大多数是属性,比如游戏中的某个boss类,它的生命值就是 ...
- TTS背后的技术原理——前端和后端系统
就解锁了一个温柔又风趣的「女朋友」萨曼萨.不过,在现实生活中,和语音助手谈恋爱还是一件十分遥远的事情--刨去现阶段的语音助手们双商水平还有限,语音助手的语言表达能力还远远达不到我们理想状态. ...
- Java 中 extends 与implements 的区别 ?
一.介绍extends 与 implements 的概念 1.类与类之间的继承使用extends : 子类extends父类的属性和方法,并且进行扩展或者重写. // 父类 class Animal ...
- SOA认知和方法论
1 前言 1.1 架构分类 在软件设计领域,企业架构通常被划分为如下五种分类: 如何理解架构分类依据及其彼此之间的关系?业务是企业赖以生存之本,因此业务架构是基础.是灵魂,其他一切均是对业务架构的支撑 ...
- 利用OpenXML获取Excel单元格背景色
利用OpenXML获取Excel单元格背景色 最近项目上遇到了关于Excel获取处理的问题,关于Excel单元格背景色的获取,水的文章都大同小异,都没注意到Excel单元格背景色是怎么赋值,这会导致出 ...
- html部分兼容性总结
部分兼容性总结一下: 1.background-color的兼容性: 火狐正常,可以同时在后面加上!important(只有火狐识别,其他的不识别,火狐优先,位置必须放在开头). IE,谷歌,360, ...