Kubernetes(K8s)发展趋势,行业景气怎么样?

Kubernetes官网是Kubernetes.io/。从Kubernetes的Logo可以看到它是一个舵,舵是轮船的方向盘,正所谓大海航行靠舵手,为什么叫舵呢?因为Kubernetes它最早出现的时候是和Docker的Swarm做竞争的。作为容器管理系统,Docker是集装箱,我是运集装箱的船,所以Kubernetes叫舵。

Kubernetes这个项目从15年诞生,出来之后就是以一种横扫别人的项目的趋势。别的项目基本上慢慢的也就被干死了。它干死的最牛逼的项目有Docker Swarm、Mesos。

 

Mesos

Mesos在Docker出来之前就开始做集群的管理,而且它背靠一棵大树,他获得了Hadoop社区非常强力的支持。Mesos其实一直被当做Hadoop下一代Yarn的替代者。

而且从2018年开始运维慢慢地就不会再去接触单机了。Kubernetes会上升成集群操作系统的一个概念。传统的做了多少年的运维一直都是在Linux下摸爬滚打,你会Linux里面的命令,会Linux操作系统中各种各样问题的排查,会Linux系统下iptables等工具的使用。但是从2018年开始,以后就不需要再去登陆单机的Linux了,很有可能一年你都不会登陆任何一台机器了。可能只登陆Kubernetes那台中控机了。

对线上服务的部署、监控、运维、增减机器等操作全部可以通过Kubernetes进行管理和操作。这是一个必然的趋势,因为在过去的一年的时间中历史已经为我们验证了这一切,比如360、京东、知乎等大厂全部都在使用容器技术。

 

360容器化

之前在Linux中积累的知识不能说没有用处,但是会被拉到更底层。就是说日常操作不会再有别的事情,Kubernetes已经把很多事情全都解决了。所以说大家研究技术一定要有前瞻性,一定要高瞻远瞩。因为现在这个科技时代的趋势每一年技术浪潮来的是越来越凶猛,越来越快,很多东西你可能刚听了一个词,中文的书都出来了。比如在18年春节期间,本人的朋友圈全部都是各种撒币的事件,比如说王思聪撒币,张一鸣撒币,周鸿祎撒币,奉佑生撒币等等,区块链的浪潮就这么来了。当然,从那个时候开始Kubernetes的浪潮也来了,都是以迅雷不及掩耳之势迅速的扑面而来。Golang也随之火了起来。我记得在18年的时候大概是3月份左右的时间,某机构出了一套使用Kubernetes部署超级账本的视频,所以说人家还是比较有前瞻性的。

 

 

 

撒币

我们最起码也要学下Kubernetes如何使用,如何操作的,因为Kubernetes是以后的必然趋势,最起码未来三五年之内是一个必然的趋势。也是目前业界生态链中一个非常重要的锚点。然后会基于Kubernetes构建出一套又一套、一层又一层的东西出来。越早学习Kubernetes越早受益,我们站的位置也会越好。这个趋势强大到即使Go语言以后不火了,Kubernetes也会火。他的趋势是比Go语言还要强的。Go语言来说,其实还在和很多语言做争霸服务端的工作。但Kubernetes已经非常显然的有王者之势了。那么大家有没有想过Kubernetes为什么这么厉害,可以厉害到干死了这么多非常牛的项目?而且不是一个接着一个的干死,而是一出来就干死一堆的项目。没有那种我和你竞争的概念,前两年还有人在对比,现在已经没有人在对比了,因为Kubernetes就是趋势。就是有那种号令天下的气场。

Kubernetes因为Google非常的支持和重视,投入了大量非常厉害的工程师去研发Kubernetes,所以说它现在的趋势非常牛。而且因为投入了大量的工程师,所以这个项目做得也非常牛。很多理念是非常非常值得借鉴的。所以说,我主要讲的东西是基于Google非常牛,它牛到了在Kubernetes上做了哪些决定导致了他现在做的非常牛,我会着重去讲这些东西。以及他的这些模块为什么会这样去进行设计。为什么每个模块会这么命名,它都有什么功能。从原理上他都能做些什么,主要是从这几个方向去讲,如果大家想学习如何使用,可以参考笔者的《Linux系统架构与运维实战》一书,在书的最后三个章节中介绍了Kubernetes的搭建,管理,运维,部署和监控等方面的知识,如果大家还想更加深入的学习也没有关系,后期笔者会写一本详细介绍Kubernetes的书籍供大家学习和借鉴。从而帮助各位读者可以学到、用到和体会到Kubernetes的神奇之处。

Kubernetes目前最新的版本是1.13,在www.Kubernetes.io/网站的首页中可以看到目前最新的版本是多少。在Kubernetes官网上列举了很多的Case Studies,都是哪些公司在用Kubernetes。

 

为什么Google对Kubernetes这个东西这么重视呢?难以想象是吧?因为Google是一个商业公司。据说Google的Kubernetes项目组里至少有300+大牛在做这件事情。他们是和Google的GCE(Google Compute Engine)团队一起做的。Google Cloud Platform,为什么做这么一件事情呢?这也是Google被气的吐血的一件事,我们都知道在全世界互联网范围内搞云最厉害的是亚马逊,而且这件事情不用想都知道的。但是这件事让Google觉得是一件非常耻辱的事情,因为Google觉得他们才是最牛逼的。我们才是真正的业界大拿,我们在服务端的积累,好多东西都是我们引流潮流搞出来的。居然让一个搞电商的抢了先头。而且,由于这个趋势早就有了,而且由于亚马逊最近从财报上可以看出来,它在云上当然的这些投入,现在开始显现出巨大的威力。每年的收入由云贡献的越来越多,越来越多。这时候,Google肯定是坐不住了,同时坐不住的还有微软。最后更加Google觉得非常丢人的一件事是现在老二是微软的Azure。原来一直看不起的微软都超越了Google,都爬起来了,都翻身了。所以Google这时候就开始反思这件事情,Google在很久很久以前,推出过一个东西叫做GAE(Google Application Engine),GAE当然虽然没火,但是让另外一个厂商火了起来,这个厂商是新浪,新浪诞生了一个SAE(Sina Application Engine)。GAE和SAE表示什么呢?就是说你用它线上的APN,代码丢上去,它会自动的进行托管、自动去扩容。但是GAE就是没火起来,所以Google就觉得这件事是耻辱,微软都起来了,所以Google就去分析微软为什么起来了。然后又发现一件非常诡异的事情,微软之所以站了起来是因为他从它的这些.NET平台上积累的大量的技术人员,这些人员一直苦于单机版的,搞C#这些人。微软搞了一个非常bug的东西,我们不是Windows集群上面不如你们吗,好,我们直接在visual studio上面直接嵌进去。你写C#代码,写网站直接点个按钮一键部署到微软云,自动扩容,数据库什么的都不用你管。你就默认它是一个永远写不满,读不满的数据库。非常省运维,基本上也不需要什么运维人员,就直接部署上去了,所以,微软用这种方式反败为胜。

而且你会发现微软这几年一直在业界混的是风生水起。.NET其实还是一个非常大的语言。所以,Google就想你们都这样了,我怎么搞,我难道去卖主机吗?但是我卖主机基本上卖不过亚马逊啊,Google就想了,那我就弯道超车搞个别的吧。所以Google就搞出了GCP(Google Compute Platform)的东西。Google Compute Platform主要来说核心竞争优势就在于它内置了一套Kubernetes一样的东西,Google那个时候就在赌,赌什么呢?赌容器化就必然是以后的趋势。以后大家发布东西都是容器化,所以,以后主机这种东西就会成为最底层的东西,大家都不关心,然后Google就把这个东西弄下来了,Google觉得我自己推这种云肯定不好使啊,大头毕竟在人家亚马逊和微软那边了,所以我就推开源版。我先把里面最核心的东西抽出来,就是这个Kubernetes,我先告诉你Kubernetes能再所有平台上运行,在你们家自己搭一个都是没问题的。开源在加上自己的平台,双管齐下来搞。所以说,为什么投入这么多的人,就是因为Google的这个云想要起来,Google Cloud想要起来他们就要通过开源去把大量的粉丝给聚集起来。它是一个什么样的过程呢?你们有能力的可以用开源,但是你们必须要自己去折腾。没能力,你觉得慕名而来的你就花钱买现成的,有钱的出钱,没钱的出力,就是这么一个过程。Google认为这样才是未来的一个大趋势。

所以,还是觉得这件事会成为一个趋势,为什么呢?因为Google如果下定决心想做一件事,很少有说搞不成的,当然这是在技术领域。

Google当然也干过很多的烂事,Google曾经觉得火狐写的太烂了。于是,Google找了很多人写了一个Chrome。当时很多人都在哈哈大笑,觉得Google很傻,但是后来这些人都懵了,居然把Firefox给干掉了。

Google还觉得诺基亚什么的操作系统太烂了,就搞了一个Android出来,最后诺基亚的塞班、微软的Windows Phone还有黑莓都搞不过它,就被Google给搞死了。现在除了Android就是iOS,已经不存在其他的移动端的操作系统了。这当然都是Google的决心,在这件事情的基础上,Google他们切入Kubernetes这件事,也知道很多人都占了位置,像Mesos和Swarm之类的,而且更恶心的事情是,Swarm是Docker公司的亲儿子。

不知道大家听没听过有一个趋势叫做bare metal,最早入行的人都知道,当时是没有虚拟机的,大都是在物理机上面跑程序。后来,有趋势出来了,当时最流行的虚拟机软件叫做XEN,大家都开始用虚拟机来把一个物理机切成很多虚拟机跑程序,这样可以提高很多部署的力度。后来XEN就被另外一个虚拟机技术KVM干掉了。KVM是Linus他们团队搞出来的,Linus觉得XEN写的太烂了,就发明出来了KVM,KVM从效率上已经超越XEN了。但是KVM生不逢时啊,被人抄了后路,Docker也就诞生了。后来很多公司都是KVM或者虚拟机上跑Docker了。后来跑着跑着大家都发现为什么要用虚拟机?好像不需要啊。然后很多云厂商就发现了,无论是阿里云还是腾讯云还是亚马逊云现在都开始卖裸物理机了。什么意思呢?就是我不给你增加虚拟化这一层了。因为大家发现跑Docker我不需要虚拟化那一层,搞虚拟化那一层就感觉是你点了一个外卖,然后把外卖买回家之后倒在自己家碗里面吃。这简直是浪费时间的事情,为什么不直接在外卖盒子里面吃,还要倒在家里的碗里面吃,这样浪费事情不重要,重要的是吃完还要洗碗,如果你觉得洗碗不累的话,但是要浪费水啊,水是生命之泉,不能浪费水,要节约用水才对。所以说bare metal就是裸金属这个意思。所以,现在就流行裸金属。直接卖机器,但是基础设施还是有的,后直接开始跑Docker。为什么现在开始这个趋势?就是因为Google推Kubernetes的力度太强势了。很多公司会找到AWS说,你能不能直接卖给我服务器,我不想要虚拟化了。反正我直接在上面搭个Kubernetes就可以跑起来了。为什么还要加虚拟化,多搞出来这么一层呢?

所以,由于客户的不断的要求,AWS也不得不低头。AWS很早之前就搞了一个类似于Docker的平台了,但是没人买账。所以,现在在客户的要求之下就开始卖裸机,但是AWS它不会就着Kubernetes这样卖,为什么卖裸机,当然也是被Kubernetes逼的。

现在大家都开始往这个趋势上面靠,甚至连Docker的亲爸爸dotcloud公司也不得不声明我们的Swarm是支持Kubernetes的。

当年在Kubernetes出来之前有非常非常多的公司,非常非常多的人想去干这件事,因为这件事情显然是一件非常有前途的事情。无论是做Docker编排工具还是其他的一些东西做出来一定都是非常有前景的。,甚至说再造一个Google也不是没有可能的事情。国内有一家厂商做的也非常的厉害,不知道大家有没有听说过,叫做rancher。

Google牛逼之处在于一台裸机上面跑了Linux操作系统,在Linux操作系统中可能就是跑Docker了。然后又有一台裸机上面跑了Linux操作系统,在Linux操作系统中又跑了Docker。如果想把这两台机器有机的组合起来需要哪些技术呢?

在Kubernetes出来之前就有很多互联网公司开始举旗招兵买马决定要把这件事情做起来,需要做什么呢?

首先是Docker,虽然很多公司想过很多办法想把Docker干死,做出过很多别的容器,就和Docker竞争的。但是,实际上由于Docker在技术上没有太大的缺陷,而且他的先发优势非常明显,所以说,没有人可以干掉Docker。而且很多人就以Docker为基础做了很多镜像出来。Docker的母公司dotcloud当年为表示我们还是很开放的,所以说搞了一种叫开放的容器这种规范,(open Container)。Docker制定一套标准,你们符合这套标准都能用,就是都叫做容器,当然这个东西后来虽然它表达出这个意思,但是别人也就没推起来。为了让这些Docker之间进行互信,需要一种技术,无论这个机器在哪,如果在一个什么集群之中,最好能让他进行通信。从通信这个技术角度上讲,然后各种各样的技术就诞生了。比如iptables、SDN这些东西。通过一种软件的网络把它连起来。然后上面还有很多东西,弄完之后还需要有监控的东西,监控各种各样的服务,最后最重要的一点就是容器A的服务器挂了,我想迁移到容器B的服务器中,就需要分布式文件系统或者卷这种东西去支持。所以就需要一种Volume的东西挂载到Docker容器中。分布式文件系统在这里面的必要性也是为了兼容一些比较老的程序。比如在本地写完的一个临时文件库,我这台机器挂了,我想把这些东西迁走,我迁走之后,最好是能把这个程序能按原来的机器的状态启动起来。或者说想把mysql这类的东西放到Kubernetes里面,那么mysql它是需要写磁盘的,需要有很多的数据写进去,那它怎么写呢?它总不能说什么高可用,能扩展,能漂移,但是机器挂了,数据就丢了,这不是扯淡吗。所以需要一种动态的卷。

上面说的这几个是最难的,包括容器,SDN,监控和文件系统。这些东西都需要支持,支持了你才能把这件事情搞起来。因为这件事每个东西拿出来都是一件非常有难度的东西,特别是好玩到什么地步呢?SDN和分布式文件系统这件事情上呢,争霸了多年。各个山头做了各种各样的东西出来,谁也不服谁,但是谁也没把谁打死。当时Google的策略是,Google也没想着我以一己之力能把你们这些人全打死,那么我就做一件事,我搞的这件事情就叫做Kubernetes,我只负责最核心的东西,比如说容器应该在什么策略下进行调度。剩下的这些东西呢我定了一堆规范出来,我定个API出来。我调用这个API会发生什么事情,比如调用某个API进行网络切换,给分配IP。或者说我把它迁移到某个机器上,我定义好这些API之后应该返回什么,应该做什么。然后在定义一堆关于卷操作的API,我告诉你我需要把某个磁盘挂载到这,然后你就可以把这些磁盘全部挂载上。或者说我把这些磁盘全部迁移到宿主机上面,然后挂载到另外一个容器上面,然后你给我挂载上。它就不去实现,他就先定义接口,定义了一堆接口,而且Kubernetes它有一套属于自己的非常非常好的一套API设计的规范原则。通过这些东西的定义,Kubernetes就展现出一种王者之势。我不跟你们这些人去抢饭碗,去争风吃醋。我给你们定义一种吃饭的姿势,你们按照这套姿势吃饭我就保证你们可以吃饱饭。

由于Google在业界的号召力,所以很多公司比如SDN、iptables都能实现这种接口,全都来实现这个接口,实现完了就开始声明我们全部支持Google。但是别的公司不给这个机会,比如说Swarm这个东西它就选定了一套他觉得非常好的SDN网络方案。但是就会有一个问题,你选了一套这种SDN,这种分布式文件系统。总会有人因为某种原因他不想用这个东西,它由于不想用这个东西,就有可能直接把你整套方案给你否定了。这件事情如果你们做to B或者说基础架构给你们公司别的部门推广的话你会发现这件事情非常常见。比如说100项需求,99项满足,有一项不满足,我不用。所以Google通过这套方式他就完美的绕开了。我没强制性让你用某个东西,你去把它实现了,或者说你让这些实现这个东西的人给遵循我们的接口做一套接口这件事就可以了。所以,Google就通过这种方式先定义了API,代码没写,先把API写好。然后告诉你们可以这么搞,然后慢慢地就把这件事情快搞成了。

就是你们继续打你们的,我不管,但是你们打的过程中给我暴露一个接口,反正你们谁赢我不管,你们都是支持我的。而且,Google躲得也是长期会处于一种混战状态。谁也不可能把谁打死,因为你如果了解开源历史你就会发现分布式文件系统这场战争打了几百年了,从计算机诞生到现在一直在打,但是谁也没把谁打死,像MFS,GlusterFS,HDFS,甚至EBS这些东西打到了现在也没见谁把谁整死,都还活着。

所以说,通过这些方式,就支持了一堆接口。甚至有好事之人实现了非常好玩的接口,比如里面没有分布式文件系统,我就拿本地的分布式文件系统给你实现这些接口,然后骗一下Kubernetes也能实现。甚至它连Docker都不是绑定的,他也是一个叫CRI的接口。所说义说Kubernetes他都已经表现出这种态度了,即使你不用Docker也能搞。

只要是底层的东西符合,我上层的这些人全部是调用Kubernetes的接口去实现自己的业务逻辑,比如上线什么的全部是调用Kubernetes的接口。到时候你们迁移到Google云上会非常非常的简单,甚至不需要做任何改造,你会发现有人把Kubernetes搭好了,底层什么的都存在,迁移过来直接用就可以。看来Google是在这里等着我们下套了,让我们去使用Google Cloud。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值