开篇词 云原生技术:变革基础架构的核动力
你好,我是潘野。
先简单介绍一下我自己。我曾经在SAP、动视暴雪、eBay等不同行业的IT公司工作过,拥有10多年的基础架构经验,致力于帮助企业构建、管理和优化云原生应用。这些年来,我一直活跃在云平台基础架构与实施领域,积累了丰富的理论和实操经验。
云原生技术对基础架构的变革之力
回顾我过去的经历,我觉得给我整个职业生涯带来最大转变的一件事,就是2018年的时候,在eBay转入了Kubernetes平台组,亲历了eBay云平台从Openstack转向Kubernetes的全部过程。在这个过程中,我主要负责Kubernetes版本升级(从1.10开始升级到1.18)以及集群的生命周期管理,包括了近百个Kubernetes集群,总计7万个节点。
这个过程,让我深刻体会到了云原生技术给基础架构管理带来的便利。
在2010年之前,eBay底层架构还是物理机器,混合了Linux、Solaris还有大量的Windows。后来,公司基于VMware平台创造了第一代的云平台,并在2015年转向Openstack。之后伴随容器化的发展趋势,再加上Kubernetes也逐渐成熟了,公司就决定从基于虚拟化的云平台,转向基于Kubernetes的云平台。
从开始接触Kubernetes的时候,我就意识到底层的基础设施管理即将产生变革,这里举几个印象最深刻的例子。
首先是 应用兼容问题。转向Kubernetes之前,一些应用无法被eBay标准PaaS很好地兼容。一旦这类应用对应的虚拟机需要重建时,就要耗费大量精力手动补齐机器。但是在Kubernetes里,reconcile模式配合声明式API就能轻松解决这种问题。
其次就是 资源利用率的提高。原先基于虚拟机的方式,横向动态扩展还比较容易,但难以做到资源纵向的动态调整,而在Kubernetes里面,无论是横向还是纵向动态扩展,都变得非常容易。
另外,还有 解耦带来的便利。Kubernetes完善的调度模型使得上层应用和底层基础架构能够解耦。当底层机器需要维护的时候,利用好PDB和Kubernetes调度,我们可以保证在业务不中断的同时,对底层机器做维护。
还有很多的特性都切实提高了管理效率,这里就不一一列举了。
这门课能帮你解决哪些问题
正因为我体会到了云原生技术带来的便利,从此一发不可收拾,一直在这个领域钻研深耕。
最近几年,我收到极客时间邀请,在云原生训练营里担任了多期领教,帮助学员解决相关的疑难问题。比较典型的问题包括后面这些:
- 我们一共就十几个服务,这个业务体量用得着Kubernetes吗?
- Kubernetes spec那么长,不如我原来写个部署脚本来得方便,为何要转向Kubernetes呢?
- 既然我都容器化了,那虚拟化平台还有存在的必要吗?
我非常理解大家的困惑,因为我在最初的时候也产生过同样的疑问。因此我决定通过这门课程,与你分享云原生基础架构自动化方面的落地经验。
正所谓“兵马未动,粮草先行”,基础架构就相当于我们行军打仗中的粮草。随着分布式技术的成熟以及微服务的流行,基础架构管理面临着新的挑战。比如在微服务中,每一个微服务都有一个自己的数据库,过去那种找系统管理员建立数据库服务器的方式,显然就不再适用了。
微服务、分布式的背景下,资源的快速获取还有精细管理成为难点,这就要求我们从原先面向配置工具的管理方式,过渡到面向API和资源管理,未来则会转向从应用的角度管理基础架构资源。
看到这里,你可能又会问,这些问题难道Kubernetes不是已经解决了么?为什么还要专门探讨基础架构的自动化呢?
实际上,在云原生的体系中,我们可能认为Kubernetes是那层基础架构,但是Kubernetes依然需要与计算、网络、存储三方面打交道,也就是我们经常提到的,Kubernetes中有三大接口——容器运行时接口 CRI,容器网络接口 CNI以及容器存储接口 CSI。
也就是说,在Kubernetes之外,我们依然还需要完成操作系统、网络、存储等资源的基础配置。所以不仅是Kubernetes,还有它周边的基础设施,都需要完善的自动化程序,才能真正实现基础架构的自动配置、扩展和修复。
此外,如果你对云原生的DevOps有所了解,应该知道DevOps中有这四个环节,构建、测试、部署和维护。而良好的基础架构自动化可以提升这四个环节的效率,进而实现DevOps,打破传统开发和运维的壁垒,最终实现高效协作的目标。
所以作为应用开发人员,了解基础架构管理这方面的底层知识,也能帮你加深对系统整体架构的理解。之后遇到线上应用问题的时候,自然可以快速识别问题根源是来自基础架构,还是来自应用本身,进而制定有效的解决方案。
总之,我想结合我个人多年的实践经验,通过这门课为你建立一个体系化的基础架构管理实践方法论,帮助你解决基础架构管理中的痛点问题。
课程安排
在接下来的两个月里,我将带领你一起学习实践,掌握在企业中落地一个自动化的基础架构管理系统所需的关键技术。
课程内容主要分为基础篇、GitOps实战篇、进阶篇还有安全篇四个部分。
首先是基础篇,主要帮你建立基础架构管理的整体认识,了解IaC的主流工具和落地思路,为后续的实战讲解做好理论铺垫。
这个部分我们主要解决以下问题:
- 面对众多的基础架构管理工具(比如Terraform,Pulumi)应该如何选择?
- 公司里既有公有云,又有私有云,如何用一套代码来管理两种架构体系?
- 公司业务在不断发展变化,很多同学可能会遇到“流程一变,推倒重来”的基础架构管理,我们应该如何打造可扩展、灵活性高的管理方式?
然后是GitOps实战篇,我会结合在实际业务中的经验,带你搭建 一套自下而上的基础设施管理系统,帮你掌握基础设施管理系统的架构设计和实现方法,提升解决实际业务的能力。这里顺便说明一下,课程中我们会涉及大量的API与开源工具,但是我们的重心是借助这些工具,帮你建立解决问题的思路。
学完这个部分,很多工作里的问题都会迎刃而解,比如:
- 如何用GitOps方式来管理基础设施?
- 面对上百个Kubernetes集群,怎么保证每个集群配置统一?
- DevOps的理念如何应用在基础架构管理上。
之后是进阶篇,我会结合现在“降本增效”这个热点话题,带你实践如何更高效地利用资源。你将会了解,在公有云上如何利用好Kubernetes自身的横向与纵向扩展能力,做到云上资源的随用随取,用完释放。还有私有云中,如何在有限的资源条件下做到资源扩展和收缩。
在安全篇,我会和你探讨云原生的安全体系管理,重点讨论如何管理企业的机密信息,比如正确管理企业私有证书,保护企业中机密数据的传输等等。
我希望,这门课程可以帮你解决工作中遇到的疑难问题,将 DevOps 的理念和实践应用在基础架构的管理上,保障云原生应用的安全性和可靠性,提升你解决问题的能力和职业竞争力。只要你耐心跟住我的思路,两个月后,你会 掌握构建一套可复用的基础设施管理系统的能力,成为一名合格的云原生架构师或SRE工程师。
最后,我也非常希望了解一下屏幕那边的你,欢迎在留言区里介绍下自己,聊聊你目前在云原生方面的思考与困惑。