本文旨在帮助非专业人员快速了解Kubernetes,因此不会使用太多专业术语,尽量使用通俗易懂的语言进行讲解。专业技术人员请参考官方文档
场景模拟
不知道大家有没有玩过城市建造的游戏,类似于《城市·天际线》,我们首先来看看这个例子。
假设你是一个市长,开局只有你自己和若干块土地,你现在需要从头开始建造自己的城市,我们首先需要对城市进行规划,让我们来看看我们需要做哪些东西:
1.需要对土地进行规划,例如需要划分生活区,农业区,工业区,商业区等;
2.需要基本的建筑物,如居民楼,商店,医院,工厂,学校等;
3.需要规划道路交通,对各个区域,各个建筑进行联通,同时也需要和外界其他城市进行沟通;
4.需要收集资源,例如原料,人力,机械等,并且规划分给每个区域,每个建筑;
5.需要规划城市的拓展性,城市规模的扩大,需要将更多的土地并入我们的城市;
6.需要对城市进行升级改造,随着人口增多,生活条件改善,需要升级居民楼,升级或者扩建商场,医院,学校等,并且这些升级改造不能影响城市运转;
7.需要对不同的居民授予不同的权限,例如工业建筑禁止无关人员进入等;
作为市长,你已经有一个初步的城市规划方案了,下面就是开始实施了,城市的建造必然是一个长期的过程,但是我们可以先设想一下大致的过程:
首先在生活区,你需要收集资源(伐木)建造我们的第一栋房子,有了房子之后就会吸引居民来住,随着居民增加,你需要开始建造第二栋、第三栋房子……居民多了以后,他们就会对市长提出意见,例如需要更大的房子,想住楼房而不是木屋,需要商店,医院等,作为一个负责任的市长,你不能忽视居民的意见,于是你需要重新收集资源(例如水泥)来建造更大的房子,建造医院商店等,我们可以预想到,再过一段时间居民们又会觉得医院不够多,商店不够大了,作为负责任的市长,你应该有心理准备。
为了城市的发展以及给居民提供就业机会,你需要建设农业区、工业区和商业区了。与生活区类似,你需要收集资源进行建造,可以预想到,你一开始必然是建造较为简陋的厂房等,然后在后面的生产中逐渐对这些区域进行升级改造。这些区域建造好了之后,就需要开始规划道路交通了,你需要建造道路让生活区的居民能够去其他区域上班,需要将农场和工厂的产品运输到商场或者出口到外界,需要从外界进口原材料等,总之需要不同级别的道路进行城市内部和外部的沟通交流,可以预想的是,道路上也必须设置安全关卡来防止不速之客。
这些事情做完了之后,城市的框架大致就搭起来了,之后仍然会不停地进行升级改造工作,当我们的土地资源不足的时候,就需要将更多的土地并入我们的城市,然后再进行建造和管理。
想到这里,作为市长的你就开始发愁了,这么多的工作一个人得做到什么时候去呀,或许你会祈求上帝赐予你一个万能的机器人,让你开个挂。于是上帝就回应你了:“Kubernetes Is All You need!”
Kubernetes就是那个万能的机器人,能够自动完成上述的所有工作,作为市长,你只需要告诉它你规划的蓝图,它就会给你一个城市,并对这个城市进行持续管理。
什么是kubernetes
现在把场景转换到我们的计算机世界中,然后来看看Kubernetes到底是什么以及它有什么用。
建造城市例子中的土地即我们拥有的计算机节点,各个建筑即应用程序,它们需要对内或对外提供服务,道路交通即网络通信,资源即计算机拥有的资源(例如CPU,内存等),权限关卡即安全认证等。
现在我们的公司需要对外或对内提供一些服务,需要我们去搭建和维护这些服务,这个过程就相当于建造城市,这些服务就是一个个提供不同功能的应用程序,对应城市里的商店、医院,工厂等。传统的服务搭建方式可能是类似于上面市长设想的那样,一个个地手动进行构建,这样做不仅费时费力,而且之后的扩建和升级改造将变得极为艰难,需要手动拆除,选址再建。
上面提到的所有在建造城市中可能遇到的问题,在我们搭建服务的时候都可能遇到。
这时我们的万能机器人就闪亮登场了,有了它我们的工作就会容易很多了,它能提供的功能包括:
管理计算机节点
- 相当于将城市里的各块土地统一进行管理,可以自动选择将哪个建筑物建在哪里(当然也可以由市长决定),之后若是城市需要扩建,也可以方便地将新土地纳入管理范围
按照你的设定自动创建,扩建,维护和升级服务
- 相当于根据市长的设定自动建房子,在市长需要的时候进行扩建和升级改造,这个过程非常快,并且会自动维护各个建筑状态,自动对已经倒塌的建筑进行重建,应用维护期间可以继续对外提供给服务
按照你的设定在各个应用之间建立通信,使各个应用能提供对内或者对外的服务
- 相当于在城市里建造道路,使城市内的各个建筑相互连通,同时也可以对外出口产品(提供服务)
设置安全访问权限,保证应用安全性
- 相当于为每个居民授予不同权限,防止不安全的访问和操作
有了它以后,市长要做的事情就简单很多了,那就是对它下达指令,接下来的事情就可以交给它了。
注:kubernetes管理的实际上是容器化(containerd)应用
评论讨论