浅谈基于OpenStack和k8s建设云原生研发基础设施

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

建设公司云原生研发基础设施,为研发部门提供安全、可靠、高效的基础资源、数据存储服务、DevOps流水线以及运维自动化服务等。

OpenStack社区对Ubuntu支持比较完善,Ubuntu更新速度快,内核版本比较新,可以支持更高版本的KVM,对OpenStack使用者来说,Ubuntu可以提供更好的性能。就系统的稳定性而言,CentOS来自Redhat商业版本的重新编译,稳定性和系统优化以及兼容性方面,CentOS有着比较完善的测试和发型流程。CentOS7以后,也换用了Linux3.x内核版本。鉴于系统可靠性的选择和之前公司的技术积累,还是选用CentOS系列,比Ubuntu管理更为方便。

OpenStack主要是面向资源分配,虚拟机创出来了就基本没有责任了,至于服务高可用,自动伸缩,监控等这类的功能完全由应用方来处理,平台不提供支持,适合传统的部署模式,对应用而言和物理机时代没有区别;而k8s容器云主要面向的是服务,强调服务能力,具有弹性与高可用保障,而不是简单地提供IT资源。对应的,应用服务也要使用云原生的理念来进行改造拆分,以更好地利用k8s提供的平台能力。就咱们公司而言目前还需要OpenStack,因为很多老系统没有容器化,所以到了现实环境下就要妥协。

但是无论是OpenStack还是k8s上手技术门槛较高,最痛苦的事情,莫过于看它的架构。

不信?好,扔个OpenStack架构图给你看:

我还是用一个简单的图吧,看得更明白些。如下:

k8s架构图如下:

看上去比OpenStack的架构图稍微好点,不过从技术上来说也是比较复杂的。

云计算发展到今天,无论是在技术、服务层面,还是在商业层面都已经相对比较成熟。当前绝大多数初创公司在基础设施上的策略一定是公有云,已经极少再有自建或托管IDC的情况,所以不会存在是否上云这样的纠结。但是对于我们这样体量的公司,全部上云,就必须要考虑得更全面:考虑基础设施的变化,业务的平稳过度,运维模式的转变,成本管控的调整,以及众多的细节问题。

虽然需要比较和考虑的因素非常多,主要从人员能力、技术掌控、未来发展等方面进行说明。人的因素是放在第一位的,企业中一般是业务开发应用及基础架构运维人员(比如系统、网络管理等),采用开源的方案的话,如果仅仅是在开发、测试环境去试着安装、使用是没有问题的,但是当准备在生产上进行实施部署,并且后续为了进一步提升开源平台化的能力(比如生产遇到问题需要分析、内部系统集成、进行前端定制、跟随社区优化/升级等),会发现这些均需要能力较强的既懂开发也懂基础架构的人员团队时候就寸步难行了。

越是底层的技术,技术门槛就越高、越复杂,也越离不开高端人才的投入。比如硬件资源虚拟化,就需要有懂内核、懂网络、懂OpenStack、懂k8s、懂分布式存储如Ceph等等的专业人才。但是真正精通的人却不多,加上要搞定整套解决方案,还需要一个完整的团队,这就难上加难,在团队组建上面临更大的困难。人才紧缺,就意味着人力成本会很高,这个就是技术投入的隐性成本。而且因为技术门槛高,一旦发生人员流动,那么,对于原有技术平台来说,无人能把控的风险就会更高。这一点往往会是最大的隐性管理成本所在。

当然,在人才招揽上,我们可以加大人力成本投入,招聘最优秀的人才。但是作为像咱们这样以更加聚焦于业务,以业务发展为生命线的公司,我们更期望能够在业务上取得创新和发展,而不是在技术上取得多么非凡的成就(这一点与公司的发展诉求是不一致的)。所以这就从根本上决定了,我们不会无限度地投入,或投入非常大的成本在这些基础技术的研究上。

大致来说,在部署应用程序的方式上,我们现在主要经历了三个时代:

前面我们说了,我们公司目前正处于「虚拟化部署时代」到「容器化部署时代」的过渡阶段,那么它必然带来了更高的要求:

针对上述更高诉求,我们在建设私有云的过程中需要重点考虑并逐一落地。

私有云建设很少有一步到位的,往往最开始的阶段是满足最基础的需求,例如计算虚拟化,存储虚拟化,然后网络虚拟化,然后容器,监控,大数据,编排,数据库,等等公共应用。其实,这个和云计算的分层也是有很大关系的。从IaaS到PaaS,再到SaaS,层层递进。研发云的建设,往往也是遵循这个规律。在实践中,可能会有一些交集。通常都是分几期的。第一期为试点项目,第二期根据一期结果形成规范,标准,成为新开发应用的标准平台。第三期逐渐将老应用迁移到私有云上。

对于私有云实施:

私有云的容量需要根据公司业务来评估,以一般行业来说,都有web区,有app,有db。需要根据运行在私有云上的业务的多少,来统计所需要的资源的多少。例如,web区需要nginx,需要考虑HA和LB,那么就需要2台以上;如果多个业务共享nginx,那么就需要多个nginx集群来分担压力。

首先我们要了解监控的必要性,如果没有监控数据,运维侧无从谈起,没有数据,那么如何去度量一个指标呢?所以,在建设研发私有云尽量搭建一套适合的监控体系是必要的。而从监控分类来说,常见的是以下几种:

综上所述,我们可以通过下图来简单概况全栈监控这块的设计:

在实践中,大家经常问到的一个问题是我们公司应该选择一个还是多个k8s集群?

我们可以比较一下这两种选择:

选择后者典型的场景是:

采用以多个小集群的主要原因在于爆炸半径比较小,可以有效提升系统的可用性。同时通过集群也可以比较好地进行资源隔离。管理、运维复杂性的增加是采用多个小集群的一个不足之处。

值得一提的是源自GoogleBorg的理念,Kubernetes的愿景是成为DataCenterOperatingSystem,而且Kubernetes也提供了RBAC、namespace等管理能力,支持多用户共享一个集群,并实现资源限制。但是这些更多是“软多租”能力,不能实现不同租户之间的强隔离。在多租户最佳实践中,我们可以有如下的一些建议:

目前而言,Kubernetes对硬隔离的支持存在很多局限性,同时社区也在积极探索一些方向。

另一个需要考虑的方案是Kubernetes自身的可扩展性,我们知道一个Kubernetes集群的规模在保障稳定性的前提下受限于多个维度,一般而言Kubernetes集群小于5000节点。云厂商Kubernetes规模化上有丰富的经验,但是对于绝大多数公司而言,是无法解决超大集群的运维和定制化复杂性的。

另外值得一提的是可以利用Istio服务网格轻松实现对多个k8s集群的应用的统一路由管理。

k8s集群计算资源考量可以参考下表:

一般而言建议:

在压力引擎这块,目前还是倾向选择开源压测工具一哥:Jmeter。

目前常规Jmeter存在的问题:

Jmeter容器云带来的改变:

这里我们对默认的首页定制成了阿里云首页的风格:

可视化UI的方式一键创建云主机:

支持简单编辑云网络:

很容易的挂载云硬盘:

定制的操作系统可以轻松上传:

支持webVNC访问桌面:

傻瓜式的创建k8s集群,并支持集群扩展:

基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和应用框架,来帮助研发团队实现敏捷化的应用交付和自动化的运营管理:

基于Git的项目管理平台。提供网页版和客户端版接口,提供给用户空间存储git仓储,保存用户的一些数据文档或者代码等数据。一个开源的分布式版本控制系统,用于处理项目中的版本迭代问题:

提供微服务分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案:

提供了一组简单易用的特性集,快速实现动态服务发现和服务监控检查。

SpringBoot服务应用可以通过Actuator来暴露应用运行过程中的各项指标,SpringBootAdmin通过这些指标来监控SpringBoot应用,通过图形化界面呈现出来:

ELK即Elasticsearch、Logstash、Kibana,组合起来搭建日志聚合系统:

微服务聚合Swagger文档,支持在线接口调试:

动态配置服务可以让以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置:

提供maven私服和二进制制品仓库:

提供存储、管理和分发Docker镜像的企业级仓库:

代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时提供了丰富的插件,支持多种语言的检测:

THE END
1.文档中心蓝鲸智云蓝鲸文档中心>容器管理平台 >场景案例>在 K8S 中部署 GitLab 最近更新时间:2024-12-11 16:00:24 文档找茬 编辑 在K8S 中部署 GitLab 情景 GitLab,不仅仅一个独立部署的流行 Git 代码托管仓库,通过其 Pipeline 具备部分 CI 环节的能力,接下来看 BCS 如何快速部署 GitLab。 https://bk.tencent.com/docs/markdown/ZH/BCS/1.28/UserGuide/Scenes/Deploy_gitlab_ce.md
2.Ansible:掌握自动化运维与配置管理的强大工具站长个人见解,Ansible凭借其强大的自动化运维与配置管理能力、丰富的模块库、灵活的配置文件编写方式、出色的并发处理能力和严格的安全机制,成为了企业自动化运维的得力助手。通过使用Ansible,企业可以大大提高运维效率、降低运维成本、减少人为错误、提升系统稳定性,从而为企业的发展提供有力保障。https://www.0515zz.com/html/biancheng/2024-12-17/303953.html
3.ansible可视化管理平台mb64a2dd422e24f的技术博客Ansible是一个强大的自动化工具,可以用于部署、配置和管理服务器和应用程序。在Kubernetes中使用Ansible可以帮助简化操作和管理工作。而“ansible可视化管理平台”则是建立在Ansible基础上的一个可视化界面,方便用户进行操作和管理。下面我将详细介绍如何实现一个“ansible可视化管理平台”,并帮助你入门。 https://blog.51cto.com/u_16178075/10979561
4.容器云系列之基于Docker部署AnsibleTower本文简要介绍自动化运维工具Ansible可视化管理平台Ansible Tower。Ansible的自动化运维实现分三部分介绍: 容器云系列之基于Docker的Ansible自动化运维实现——介绍Ansible的基本概念和语法使用 容器云系列之Ansible部署使用——介绍Ansible的安装部署和使用 容器云系列之基于Docker部署Ansible-Tower——介绍使用Docker部署Ansible-Tohttps://blog.csdn.net/solihawk/article/details/121958909
5.红帽Ansible自动化平台Ansible 自动化平台立足于红帽企业 Linux 和红帽 OpenShift? 提供的基础上,并与我们的其余产品组合相集成,因此您可以大规模构建和运维自动化。 联系红帽 名* 姓* 工作邮箱* 办公电话* 公司* 部门* -- 请选择 --财务法务客户服务/呼叫中心人力资源销售行政办公室研发营销通讯IT - 电信IT - 风险/合规/安全IThttps://www.redhat.com/zh/technologies/management/ansible
6.ansible可视化管理平台帆软数据分析平台,为你整理了相关内容:ansible可视化管理平台,FineReport报表下载,Finebi可视化数据分析,此外帆软数据分析平台还提供了相关资料与企业数字化解决方案,一起来了解一下吧。https://www.fanruan.com/bw/46371-cite
7.ansible最好用的可视化总之,选择一款合适的Ansible可视化工具可以让你的DevOps流程更加高效、可扩展和易于管理。在选择工具时,你需要考虑你的需求、易用性、可扩展性和成本等因素,以便选择最适合你的解决方案。 风险提示: 企业服务平台温馨提示 以上知识内容依托技术能力生成 如您发现页面有任何违法或侵权信息,请提供相关材料至邮箱ext_qfhttps://aiqicha.baidu.com/qifuknowledge/detail?id=16300790916
8.骞云科技CloudChef混合云管理平台云自动化管理平台CMP面向多云资源的超级自动化运维平台免费试用 面向混合IT环境的云原生平台 统一管理公有云、私有云和混合云,提供跨平台的自动化和云编排能力,以及自服务所需要△ 支持Ansible、Terraform、Python等多种脚本语言 ● 支持扩展对云资源的监控告警,费用,合规性等能力 去试用 拖拉拽式可视化蓝图 支持多云资源+复杂应用https://www.cloudchef.io/multicloud-management-smartcmp.html
9.云基础设施管理平台有栈Ustack产品介绍统信软件全文导读:统信云基础设施管理平台(简称:“UStack”)的产品介绍,通过该文章将介绍统信云基础设施管理平台有栈的基本功能,产品特点和产品部署流程。https://faq.uniontech.com/solution/umountain/bf73/4e23
10.Python常用库大全及简要说明pythonpathlib:(Python3.4+ 标准库)跨平台的、面向对象的路径操作库。官网 python-magic:文件类型检测的第三方库 libmagic 的 Python 接口。官网 Unipath:用面向对象的方式操作文件和目录。官网 watchdog:管理文件系统事件的 API 和 shell 工具。官网 日期和时间 https://www.jb51.net/article/178716.htm
11.Python资源大全中文版控件新闻管理包和依赖的工具。pip:Python 包和依赖关系管理工具。官网 pip-tools:保证 Python 包依赖关系更新的一组工具。官网 conda:跨平台,Python 二进制包管理工具。官网 Curdling:管理 Python 包的命令行工具。官网 wheel:Python 分发的新标准,意在取代 eggs。官网https://www.evget.com/article/2017/3/9/25879.html
12.HENGSHISENSE5.xSSO登录失败:使用平台方SSO登录到新租户失败的问题。 新建租户密码登录失败:新建租户后重置租户用户密码,使用新密码登录失败的问题。 license管理参数错误:解决在license管理租户下新建测试租户时出现的参数错误问题。 修改密码资源未找到:新建的租户登录后修改密码时资源未找到的问题。 https://docs.hengshi.com/release-note/
13.详解智能运维一体化建设实现路径通过搭建统一运维管理平台,整合CMDB、流程平台、作业平台、大数据平台等组件功能,实现各个组件之间的数据共享和联动,最终实现智能运维一体化建设。 阶段一:运维可视化建设 运维可视化建设的总体目标,一是实现某农商银行科技信息系统运行状态的多维度展现,二是实现对业务系统故障的精确告警,三是实现运行数据的采集,同时提供接https://blog.itpub.net/31547898/viewspace-2940485/
14.如何使用Ansible可视化界面简化管理工作使用Ansible的可视化界面,您可以通过图形化界面执行各种任务。这些任务包括:创建和管理主机,定义和管理变量,编写和管理Playbooks等等。下面将介绍一些您可以使用Ansible可视化界面完成的常见任务。 首先,您可以使用可视化界面轻松创建和管理主机。通过简单的界面输入主机的名称和IP地址,您就可以添加新主机。您还可以为每个主机https://easyv.cloud/c/article/6267.html
15.自动化运维工具ansible之Tower管理(八)sxm5211258一、Ansible Tower介绍 Ansible Tower是一个基于Web的用户界面,是RedHat商业化的一款提供了IT自动化的企业解决方案的自动化管理工具。试用版可支持管理十个主机节点的使用,且不收取任何的费用。它有一个友好用户的仪表板来管理部署和监控资源。Ansible Tower为Ansible增加自动化,可视化管理和监控能力。 http://blog.chinaunix.net/uid-23123710-id-5783917.html
16.使用Ansible的OpenStack自动化OpenStack可轻松与Ansible Tower,VMware虚拟机管理程序和Hyper-V集成,以利用现有基础架构。OpenStack 和 KVM 虚拟机管理程序是免费的,但需要熟练的管理员进行配置。OpenStack 是一个用于部署、开发和构建云平台的开源平台。它是一个命令行界面,功能强大,具有管理,API和RESTful Web服务以及基于Web的控制面板控件。这个开https://www.elecfans.com/d/1963403.html
17.使用ANSIBLE大规模管理OPENTELEMETRY收集器您可以通过Ansible在多个 Linux 主机上扩展OpenTelemetry 收集器的部署,使其在您的可观测性架构中既作为网关又作为代理。在此双重身份中使用 OpenTelemetry 收集器能够将指标、跟踪和日志可靠地收集并转发到分析和可视化平台。 译自Manage OpenTelemetry Collectors at scale with Ansible,作者 OpenTelemetry Authors; Docs CChttps://www.jianshu.com/p/095585dba6ad
18.opensource数据仓库管理和分析工具 Apache Kylin OLAP分析引擎,用于加速大规模数据集的分析。 Apache Druid 实时分析数据库,适用于高性能实时分析和查询。 Apache Superset 现代数据可视化和探索平台,提供交互式仪表板和数据探索功能。 其他重要工具 Ansible 配置管理工具,用于自动化基础设施和应用程序部署。 https://code-examples.net/cn/q/4b16f7a