为什么所有人都想要使用Kubernetes?
2020-02-20 16:42:40首先让我们了解一下Kubernetes是如何解决在大多数在云端部署应用时碰到的问题,它是如何支持我们的基础设施向云端迁移。
说实话,我是一个Kubernetes爱好者。Kubernetes可以说是软件开发领域迈出的一大步。当我知道Kubernetes的时候,我就想这才是在生产环境使用容器的正确之道。我没有任何迟疑就接受了Kubernetes。像我这样的,还有数以千计的架构师已经成功拥抱了这一技术。
首先让我们了解一下Kubernetes是如何解决在大多数在云端部署应用时碰到的问题,它是如何支持我们的基础设施向云端迁移。
牢记你的目标
在万物云化的时代,对于所有公司都有一些共同的目标。
以下一些目标一般都会具有高优先级:
我们为什么需要容器?
在我们思考为什么需要Kubernetes之前,我们需要先问自己,为什么我们需要容器?容器在软件开发的历史上是一次巨大的变革,因为它将生产环境带入到每个开发者的本地环境中,我们不再需要担心Linux和Windows的兼容问题。通过使用容器,我们可以在任何工作站上轻易地重现出任何问题。并且,我们也能轻易地将容器迁移到任何一个平台上,不需要做任何其他多余的操作。在容器出现之前,开发者就懂得把应用程序打包进行发布,因为他们知道应用程序如何能够正常运行,比如你可以将依赖组件和应用一起打包。站在DevOps的角度,容器非常优雅,因为每个发布系统只需要处理一件事物,那就是容器。不仅如此,所有的容器构建过程可以由开发者通过Dockerfile来描述,这意味着无论在本地开发环境还是持续集成环境,你都使用同样的方法来构建应用。
容器意味着维护的事项更少,屏蔽环境的细节做到无差异化,那么也就更少的错误。
我们能够把容器的镜像推送到Registry。通过Registry,我们在任何地方都能下载、部署,无论是笔记本电脑还是虚拟机(本地或者云端)甚至是Serverless的场景,比如Heroku。相较于虚拟机,容器真正的优势在于它虚拟了操作系统你那个而不是外部资源。这样更高级别的抽象使得我们拥有一种更轻量级、更简单也更经济的方式来部署应用。
为什么需要Kubernetes?
在之前的一节中我们解释了为什么大家都会使用容器,但并没有提及我们为什么需要Kubernetes。不管怎么说,我们已经接受了容器这个事物。这带来了一个新的需求,我们如何管理容器?我们如何可靠地编排容器?我们的答案是Kubernetes!
拥有了Kubernetes,你所需要做的事就是将镜像推送到Registry,然后等待Kubernetes来完成剩余的工作。所有部署环节的任务都由Kubernetes来管理,我们根本无需去担心基础设施。
Kubernetes是业界领先的容器编排解决方案。它是在Google对容器的实践中逐渐开发完善的,同时也是开源的。它的架构允许容器编排,也允许与旧的系统集成。这意味着你能在本地安装Kubernetes,也可以在云端安装、使用,甚至允许你是用混合云的架构。
所以,我们之所以会使用Kubernetes,是因为它的稳定性、可靠性和易用性。简单来说,Kubernetes是部署容器的最佳方式。
Kubernetes是Serverless吗?
Kubernetes是不是Serverless?我认为Kubernetes和Serverless是两个不同领域的词。Serverless更多是一种哲学,而Kubernetes则是一个具体的工具。让我们暂且先回顾一下我们最初的目标,我们说我们需要减少对操作系统的依赖以及减少维护他的成本,而这就是Serverless。
那么问题就变成了,Kubernetes是否让我们实现了这个目标呢?简单来说,是的。
Serverless的严格定义是,我们不需要关心到底是什么应用容器、什么系统、什么硬件在运行我的代码,甚至我都不知道它位于世界的哪个角落。虽然Kubernetes确实向开发者隐藏了诸多的复杂性,但我们确实还是需要了解 服务器 的相关部分,比如,你仍然依赖于某个特定的容器提供的操作系统。同时,你也依赖于某个特定版本的Kubernetes。这意味着,理论上来说Kubernetes并不算Serverless。
接着,让我们来看几个Serverless的解决方案。
Heroku runtime[1]的底层是依赖于容器,当然你也可以在Heroku上直接部署自己的容器[2]。大部分的Lambda函数都是运行在容器中。
这就是为什么我们认为部署在云端的Kubernetes不是Serverless,因为它是基于容器的,并且还依赖于操作系统。然而,同样依赖于容器的Heroku Runtime或是Lambda计算服务却被认为是Serverless。
所以我仍然认为Kubernetes是一种Serverless的解决方案,即使它不满足严格的定义。这个世界并不是非黑即白的,云端版本的Kubernetes提供的抽象程度(如屏蔽了操作系统以及底层资源)对我来说已经足够了。
我不希望在这里咬文嚼字。除开我们是否要给Kubernetes贴上Serverless这个标签的问题,Kubernetes确实能够让我们迅速上云,是减少系统管理成本、基础设施维护成本,提高业务质量的一大利器。所以我们实际上无须去关心那些标签,黑猫白猫抓到老鼠就是好猫。
Kubernetes的优势

Kubernetes是一个非常优秀的平台,使我们能够脱下传统虚拟机的戎装去拥抱云。它带来活力,减少系统管理成本,并且将服务的质量推上一个新的高度,在Kubernetes诞生之前我们很难做到这一步。许多传统的问题比如网络,数据保护等在Kubernetes中都能够通过高级配置来实现。
以下是Kubernetes带来的一些优势:
与其他方式相比,Kubernetes简化了所有开发运维的事项,将开发者带入到一个几乎不需要运维的理想状态。开发团队和运维团队之间的摩擦也减少了,因为原本两者职责的模糊地带现在也划清了界线,系统本身也保持了相当的透明度。
其他的一些优点列举如下:
我们到底如何选择?
Kubernetes的灵活性很强,利用云端的方案,你可以轻松地管理Kubernetes集群。当我了解到Kubernetes的时候,我就认为它是一个可行的、安全的方案,能够有效减少开发者的负担。它具备所有传统基础设施的优势,同时让我们在不重构应用的同时,享受不需要运行维护的便利。和很多其他看上去闪闪发亮的解决方案(如Serverless)相比,Kubernetes更加实在。Serverless确实很不错,但是很多复杂的场景,它并不能很自如地应付。并且从逻辑上来看,全盘接受像Lambda这样前沿的技术需要一个巨大的思维转变。对于运维团队来说,这样的改变并不容易。
如今,减少系统管理的工作量,拥有能够易于部署、能够简化运维核心痛点的基础设施对大部分团队来说都是核心需求。而Kubernetes满足这所有的需求。
如果让我现在去设计一套架构,尤其是面向企业的解决方案,我会首选容器技术和Kubernetes。或许我会选择云服务商提供的Kubernetes来减少运维成本。我也有可能会用Git来管理DevOps流水线相关的配置。
这个方案对操作系统的依赖很少,对云厂商的依赖也很少,所有的基础设施及其配置都依赖于代码。
有人会说,这个方案并不完全摆脱了运维,也不完全摆脱了服务器。但Kubernetes具有稳定、模块化、可伸缩的特性,能够满足最重要的架构设计目标。所以我们为什么不用Kubernetes呢?
那我们能不能做得更好?毫无疑问。我们能努力摆脱更多的负担吗?当然可以。我们当然能百尺竿头更进一步。然而,仰望星空也要脚踏实地,我们必须要承认Kubernetes是一个极佳的折中方案:在大部分案例中,Kubernetes是成功的保障。
越去想一个人,约越纠结,用古文怎么说?
纠结着把。
想送你回家的人 天南地北都顺路。求这段话完整版,我记得之前看到过,很长的一大段
话不在多,入心最暖;情不在热,贴心最真。 一句懂得,暖到落泪;一个拥抱,感动心肺。 难过的时候不说,最脆弱;沉默的时候不语,最失落。 真正的关心,是心灵的抚慰;真正的拥有,是生命的作陪。 当你无助,只需一份勇气;当你彷徨,只需一种支撑。 一个懂你的人,胜过万千过客;一句懂你的话,更比无数安慰。 真正懂你的人,懂你的假装强势,懂你的欲言又止。 当所有人,被你的笑容蒙蔽时,有个人,会看到你眼里的痛;懂你的人,是你心安的理由,是你慰藉的港口,更是你不再孤单源头。 想送你回家的人,东南西北都顺路。 愿陪你吃饭的人,酸甜苦辣都爱吃。 想见你的人,24小时都有空。 想帮助你的人,再苦再难也会想尽一切办法帮你!记住:不是你给谁一瓶雪花,谁就都能陪你勇闯天涯。 喜欢你的人,你怎么样都行;不喜欢你的人,你怎么样都不行,所以人活着没必要委屈自己去讨好任何人。 做人其实很简单。 只要你把我当回事,你的事就是我的事。 如果你没把我当回事,你的事关我什么事…
忘记一个人要多久的时间?
忘记...一个心痛的问题。 。 。 。 说到底忘记过去是在骗自己,也是在骗别人,只要有一点点可以联系到过去的事的东西,你就不可能忘记过去的。 不要逃,后悔也没有用。 。 。 有一句话不是这么说吗?你可能在1秒钟的时间遇到一个人,用一天的时间爱上一个人,却要用一生的时间忘记一个人。 。 。 。 这就是爱情!刻意去忘记,会记的更深,所以别刻意的去忘记,让一切都趋于平淡,该做什么做什么,别让自己常常独处苦思,随着时间的推移,就会慢慢的淡化。 。 。 与其想要去忘记还不如让自己忙碌起来,让自己的生活变得充实,让自己无暇想念。 不要刻意遗忘,如果刻意只会让自己记得更牢。 。 。 尽量扩大自己的交友圈,与尽量多的人接触,.尽量发现自己的爱好,做一些自己喜欢的事情,以起到移情的作用。 相信未来的某一天,你会发现再想起TA的时候,你的心不再疼痛,原来不知不觉间,TA已变成“那个人”。 。 。 许多事情,总是在经历过以后才知道得失由不得自己。 一如感情,痛过了,才会懂得如何保护自己;傻过了,才会懂得适时地坚持与放弃。 让我们学会放弃,在落泪以前转身离去,用泪水换来的东西是不牢靠的;让我们学会放弃,将昨天埋在心底,留下最美好的回忆;让我们学会放弃,使彼此都能有个更轻松的开始。 抓着不放,只会让你一味沉溺于回忆和痛苦中以致萎靡不振。 放开手,让TA随记忆的风逝去,你会发现另一方天空,你会重新闻到生活的花香、感受到阳光的温馨。 。 。 。 放弃,不是躲避,不是懦弱;放弃,是一种豁达的处事态度。 试想想,一个人一生要经历多少人与事,不懂得放弃那些已经失去、不可挽回的东西,又如何能把握住真正属于你自己的东西呢?如果你发现你的世界里惟一的那扇大门不再为你敞开,就不必再在门前徘徊,或撞得头破血流终不醒悟。 要学会放弃,然后转身寻找一个为你开放的天窗,在那儿你同样能望见满天的星斗。 。
发表评论