阿里云技术专家自荐新书《深入浅出Kubernetes》

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!马上投递简历:https://developer.aliyun.com/special/offerday01

图片无法显
点击图片或戳我查看详情和投简历

观看视频:藏经阁电子书发布会:《深入浅出Kubernetes》分享:

大家对Kubernetes技术有一定了解,我主要分享自己一些观点和理解,通过俩个形象易懂的案例分享学习Kubernetes的方法。

什么是Kubernetes?可以从以下四个角度来理解

第一,Kubernetes未来处于什么样的位置?

未来,大部分公司IT基础设施可能的架构图如下图,IT基础设施都会部署在云上,用户基于Kubernetes把底层的云资源拆分成集群单元给不同的业务使用,随着业务微服务化的深入,服务网格等服务治理的逻辑会变得跟下边的这两层一样,成为基础设施的范畴。

image.png

目前阿里云基本所有的业务都跑在云上,其中,约一半的业务已迁移到自己定制的Kubernetes集群,并计划在今年完成百分百业务基于Kubernetes集群部署。目前这个趋势非常明显,未来几年,Kubernetes会像Linux一样,作为集群的操作系统无处不在。

第二,Kubernetes和传统操作系统的比较

下图,传统的操作系统Linux或Windows等扮演的角色就是底层硬件的抽样层,向下管理计算机的硬件如内存、CPU等,把底层硬件抽象成应用的编程接口对应用层提供支持。

Kubernetes可以被理解成操作系统,但它向下管理的硬件不像是单机系统有自己的CPU资源等硬件,它管理的硬件可以理解成“底层多台计算机组成的集群”。

image.png

这些集群位于云上或本地的一些硬件的集群,Kubernetes把它们当成一个资源池统一管理,并向上对应用提供支持,而其上边的应用都是容器化的,可以把它们理解成一些安装包,包里自己打包了所有依赖库,就像libc或者Java的runtime等东西,不需要再去依赖于底层的操作系统的依赖库或者runtime来运行。

第三,Kubernetes和《Google运维解密》

如下图,左为Kubernetes集群,右为《Google运维解密》,这本书相信很多人都看过,很多公司也在实践这本书的运维方法,像故障管理,运维排班之类的东西,Kubernetes和Google运维解密这本书的关系可以比作《笑傲江湖的》里的剑法和气功的关系。

image.png

Kubernetes源自Google集群自动化和调度管理Borg系统,也是这本书里运维方法所管理的对象,Borg系统和书里各种运维方法可以看作是一个事情的两个方面,如果一个公司只学习我们的运维方法,开了很多SRE职位,其实是学了葵花宝典其中一部分,Borg是Google的内部系统,我们一般是看不到的,而Kubernetes基本上继承了Borg在集群自动化管理方面非常核心的技术,所以看了这本书并且觉得这本书非常厉害或者已经在实践这本书里的方法的人,一定要深入理解下Kubernetes。

第四、技术演进史

早期建立网站,只需把所有的模块放一个可执行文件里,如下左图,把UI、业务和数据三个模块编译成一个可执行文件跑在一台服务器上。

image.png

随着业务量的快速增长,没有办法通过升级底层服务器配置的方法来扩容,这个时候就必须要做微服务化的处理,微服务化的架构把单体的应用拆成小的应用,这些应用各自负责一个模块,每个应用实例独占一个服务器,它们之间通过网络来互相调用,如下中间的图,这里最关键在于我们可通过增加应用的实例来做横向扩容,解决单台服务器无法扩容的问题。

而一个实例占一台服务器,这种方式造成严重的资源浪费。如果把这些应用实例混部到底层服务器上,底层的服务器组成一个集群,就可以节省很多资源,而混部又会引入两个新的问题:

首先,UI,业务和数据,这些应用可能用不同语言写的,依赖的库版本不一样,如果安装在一个系统里会出现兼容性问题。

其次,是应用的调度和集群资源管理的问题,混部需要解决一些应用出来之后放到哪个节点去运行、放到这个节点之后资源够不够用这些问题。

兼容性问题是通过容器化解决,每个应用自带依赖库,只跟其他应用共享内核,调度和资源管理就是Kubernetes所解决的问题,而业务规模持续增长的话,集群里混部的应用会很多,像淘宝的后端有很多的微服务,互相关系错综复杂,出现一些请求蛮多问题都无法去排查,于是新的如服务网格这类服务治理的技术被引入,所以下一个技术便是服务网格的技术,大家可以去了解。

怎样学习Kubernetes

理解了Kubernetes之后,应该怎样学习Kubernetes呢?
首先你需要知道,Kubernetes之所以门槛较高,一是因为技术栈很深,涉及的内容很多,如下图右上框所列,这类绝对称得上全栈的技术。

其次,Kubernetes的云环境的实现牵扯到产品广度很广,如在阿里云涉及的产品如下图左边框所示,这些一个个学起来是相当复杂的。

最后一点是Kubernetes的适用边界相当广泛,因为Kubernetes是通用的计算平台,会被应用到各种应用场景,如下图右下角框所列。

image.png

这么复杂的东西,应该从了解、动手、思考三个方面去把握:

image.png

首先,需要了解技术的演进历史,以及技术的全景图。知道各种技术的演进历史,如容器技术是如何从一个命令发展而来,以及技术演进背后解决的问题,只有知道技术的演进史和发展的动力,才能判断未来发展的方向和下一步的需求。

同时对Kubernetes来说,需要了解整个云原生的技术栈,包括容器,持续集成、持续交付、微服务、服务网格等,知道Kubernetes在整个技术栈里所处的位置。

除背景知识外,动手实践也非常关键,据我和大量工程师一起解决问题经验来看,很多人不会深入研究技术细节,我们常开个玩笑把工程师分两种中,Search Engineer(搜索工程师)和Research Engineer(研究工程师),很多工程师遇到问题就Google一把,找不到答案就直接问别人或者开工单,这样是很难深入理解一个技术的。

最后一点是如何思考和总结,我们需要在理解一些技术之后,不断地探索这些技术背后有没有更本质的东西,把复杂的细节看简单,找出比较普遍的模式出来,有利于理解和应用。

《深入浅出Kubernetes》中有两个例子,如下图,关于集群控制器,在学习Kubernetes的时候,会有些概念如声明式API ,operater等,这些概念本质上就是控制器模式,如何理解Kubernetes的控制器?下图最左边的小图,经典的Kubernetes的架构图,它有集群的管控节点和工作节点,管控节点有中心数据库,API Server,调度器,以及一些控制器:

image.png

中心数据库是整个集群的核心重组系统。API Server是集群的管控入口,调度器负责把应用调度到资源充沛的节点上。

控制器是一个重点,它的作用可比作是“让梦想照进现实”的作用,从一定意义上来讲,我自己经常扮演控制器的角色,比如我女儿说“爸爸,我要吃冰激凌”,她就是集群的用户,我就是负责把她愿望实现的人,扮演了控制器的角色。

除了管控节点之外,Kubernetes集群许多工作节点,这些节点部署了Kubelet和Proxy两个代理,Kubelet管理工作节点,包括应用在节点上的启动和停止之类的工作,Proxy负责把服务概念的定义落实成具体的iptables或者 ipvs的规则,这里服务简单来说就是利用iptables或者ipvs来实现的负载均衡。

如果从控制器的角度来看,第一张图得到第二张图,集群实际上就包括一个中间数据库,1个集群接口、很多控制器,这些控制器包括调度器、Kubelet等,这些组件通过不断地从API Server观察集群里边资源的定义,需求的定义,将其落实成为具体的配置,如容器启停,iptables的配置,扮演的都是控制器的角色。

从控制器角度来观察Kubernetes集群,就会得到Kubernetes集群最根本的原理,控制器的模式,控制器的模式在生活中无处不在。

用冰箱做个例子:我们控制冰箱的时候并非直接控制冰箱的制冷系统或者照明系统,打开冰箱,灯就会自动亮起;设置了想要的温度的话,即使人不在家,制冷系统也会一直保持这个温度,背后就是控制器模式在起作用。

第二个例子,来看一个真实问题的排查过程——为什么删除不掉命名空间,问题稍微复杂,来一步步看下:

image.png

命名空间是Kubernetes的收纳机制,如图中的盒子,里面收纳橡皮铅笔等,命名空间其实是可以删除和创建的,经常遇到命名空间不能删除的问题,遇到这个问题,如果完全不知如何排查,可研究下API Server,因为它是集群的入口,总归需要知道API Serverr遇到删除之后它做了什么。

API Serverr本身就是个普通的应用,可通过提升应用的日志级别来深入理解它的操作流程,在这个问题里,可通过看API Serverr高级别的日志,会发现它收到删除命令后,它其实就没有其他信息了。

这里需要理解下删除命名空间的操作,用户在删除一个命名空间的时候,命名空间并不会被直接删除掉,而是会被改成正在删除中的状态,这时命名空间的控制器会如前文所说去不断观察集群里的资源的状态,不断地监视所有的命名空间,发现了命名空间变成了正在被删除的状态的话,就去做些操作。

了解这些概念之后,想去理解命名空间控制器行为的话,可以像处理API Server一样,把命名空间的日志级别提高起来,看详细日志,这时,会发现控制器正尝试获取所有API 分组。

这里需要理解两件事:一、删除命名空间的时候,控制器为什么要获取API 分组。二、API 分组是什么,它就是集群API 的分类机制,如网络相关的API 都会分在networking.Kubernetes.iovlbeta1这个分组里,而通过网络API 创建的资源,就属于这个分组。

为什么删除命名空间的时候,控制器要去获取API 分组呢?因为删除命名空间的时候控制器需要删除命名空间里所有的资源,这操作不像我们平时删除文件夹一样会直接吧里边的文件一起删掉。

命名空间收纳资源实际上类似于索引的方式指向了命名空间,而不是命名空间里包括了这些资源,所以集群只有遍历所有的API 分组,找出指向这个命名空间的资源,才能逐个把这些资源删掉,而遍历API 分组这个操作会是集群的API Server和它的扩展进行通信。

这里的扩展是API Server可能会定义集群比较核心的API 或者API 分组,有时候需要对这些集群做一些扩展,如接一些外接的功能,开发新的应用,扩展里边又有新的API 分组。

所以如果想知道命名空间里正在被删除的资源都是什么,那就需要通信,把所有的API 分组拿出来,因此,到了这里之后问题就变成API Server及其扩展进行通信的问题,于是删除资源的问题变成了网络的问题了。

接下来讲下阿里云Kubernetes集群网络相关的实现,阿里云Kubernetes集群在VPC网络,虚拟局域网创建的,默认情况下VPC只认识VPC的网段地址,一般情况,集群里边的容器不会使用VPC相同的网段,通过在VPC的路由表里增加一些容器网段相关的路由项,如下图右下角的图,一个跑的是API 另一个跑的是扩展,就可以让容器使用VPC网络进行通信了。

image.png

以上就关于Kubernetes的一些理解和学习经验分享,更多干货知识可以在点子书《深入浅出Kubernetes》中了解到。

这本书是最近一年多,我们在Kubernetes和服务网格领域一部分的技术沉淀,其中一些内容已经在InfoQ,阿里云技术、阿里巴巴云原生公众号上有发表过,这次在阿里云开发者社区和自己团队的帮助下做了本电子书,希望通过这本电子书分享阿里云线上问题的诊断经验。

我们每天都会处理大量的线上问题,以后也会新增新的问题、案例出来,本书就当做1.0 的版本,后续新的案例和新的文章会通过2.0或者3.0的方式分享给大家。

总体来说,书有3大特点
1、简单易懂分析Kubernetes集群核心原理
2、是阿里云真实线上问题诊断的集锦
3、难得的Kubernetes诊断方法和调制方法

我们是阿里云售后技术团队,重要的一项工作就是服务,经常需要相对易懂和比较有创意的方法把晦涩难懂的技术解释给客户听,所以书中的很多原理的解释都非常形象易懂的(如本次分享就是个例子)。

其次阿里云售后技术兜底团队,需要解决大量疑难取决的问题,部分问题复现概率极低,可能需要几个月才有一个客户碰到,这类问题也只有在阿里云这样大的平台才会复现和诊断出结果,书中也包括这样的案例,案例分析会关联多个Kubernetes组件,针对这些组件的调试方法,在其他地方一般看不到,给大家献上啦,不容错过哦:开放下载!《深入浅出Kubernetes》

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
供应链 安全 Cloud Native
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
阿里云飞天企业版容器系列产品获中国信息通信研究院【可信云·容器平台安全能力】先进级认证,这是飞天企业版容器产品获得《等保四级PaaS平台》和《 云原生安全配置基线规范V2.0》之后,本年度再一次获得行业权威认可,证明飞天企业版的容器解决方案具备符合行业标准的最高等级容器安全能力。
阿里云飞天企业版获【可信云·容器平台安全能力】先进级认证
|
7天前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
1天前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
2月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
2月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
2月前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
2月前
|
弹性计算 调度 数据中心
阿里云 ACK One 注册集群云上弹性:扩展业务新利器
随着企业数字化转型深入,传统IDC数据中心因物理容量限制,难以实现动态扩容,缺乏弹性能力。阿里云ACK One注册集群凭借其高度灵活性和丰富资源选择,成为解决此问题的最佳方案。通过与阿里云资源的整合,ACK One不仅实现了计算资源的按需扩展,提高了资源利用率,还通过按需付费模式降低了成本,使企业能够更高效地应对业务增长和高峰需求。
|
2月前
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。
|
2月前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
2月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。

热门文章

最新文章