Kubernetes会不会被自身的复杂性压垮 (kubernetes)

教程大全 2025-07-15 07:33:59 浏览

KuberNetes会不会被自身的复杂性压垮?

2018-07-31 14:47:51作为一个生态系统,Kubernetes需要满足应用程序开发人员的需求才能真正取得成功。毕竟,基础设施是解决用户问题的支持工具。提高应用程序开发人员的工作效率才是确保一个平台能够被广泛采用并取得成功的最佳途径。

Kubernetes对应用开发者来说是不是太复杂了?

几周前,我参加了KubeCON EU大会,并发表了演讲。这是一个大约有4700人参加的大型活动,让我想起了2014年11月在巴黎举行的OpenStack峰会。同样是人潮涌动,厂商露脸,程序员派对……然而,我发现了一个根本性问题:我遇到的几乎是清一色的运维人员或SRE工程师。应用程序开发人员都去哪儿了?这些复杂的基础设施不是应该为这些人提供服务的吗?Kubernetes社区是否真的关注用户的需求?于是我禁不住想:Kubernetes是否太复杂了?它的复杂性会阻碍自身的发展吗?

我这样想似乎有点太过了,不过我不认为最终会出现这种情况。相比OpenStack,Kubernetes有自己独到的优势。首先,它具有更高的可扩展性,因此能够在拥有数千台 服务器 的环境中实现大规模集群调度。其次,三家主要云供应商已经推出了Kubernetes托管服务产品。在短短的四年时间里,Kubernetes几乎成为云计算和基础设施领域的事实标准。不过,Kubernetes的复杂性对大家来说仍然是一个问题。OpenStack在2014年以后渐趋颓势,Kubernetes会步入OpenStack的后尘吗?

大多数开发人员没有Google那样的规模问题

Kubernetes的推出旨在解决类似Google那样规模的复杂性和问题。我们希望基础设施具有自我修复、水平伸缩和声明式配置(如基础设施即代码)能力。但问题是,绝大多数应用程序和应用程序开发人员不会面临这些问题。大多数应用程序只有适度的规模(包括项目规模和用户群),或者它们还处在市场产品研究的早期阶段。

在应用程序还没有达到规模化之前,通常没有必要增加这些复杂性。在这种情况下,单个数据库和应用程序服务器可能是更好的选择,只要它们能够处理你的流量负载。如果99.5%的时间是可用的,并具有完备的运维警报,那么对于大部分应用程序和工作负载来说已经很不错了。建立分布式系统所带来的复杂性以及对上市时间造成的延迟只会让我们得不偿失。

对于全新的应用程序来说,它们***的风险是找不到目标产品或市场。也就是说,这些应用程序虽然被部署了,但从未被使用过。它们的代码最终被遗弃,因为没有人想要使用这些应用程序。这是绝大多数应用程序的代码可能会面临的处境。在我的职业生涯中,大部分时间都花在了代码和功能的迭代上,并尝试找到正确的应用程序功能集。一旦找到了,就可以对其进行扩展,但在此之前所做的努力都只不过是不成熟的优化。

我认为Kubernetes的问题在于它对项目早期阶段的认知负载有很高的要求。在一开始就需要考虑很多事情,这对于启动项目和快速迭代来说是一种阻碍。在项目的早期阶段,功能开发速度和迭代速度是最重要的。我认为Heroku是一个理想的开发模型,可以一边使用Postgres托管数据库,一边通过Git推送来部署新代码并对外提供服务,不需要考虑太多的东西。它可能无法***扩展,并且可能会很贵,但在应用程序达到规模化之前,根本不需要担心这些问题。

简单地说,Kubernetes让简单的事情变复杂,让解决复杂的问题成为可能。如果Kubernetes想要取得真正的成功,需要让项目的早期阶段变得更简单,并降低应用程序开发人员的认知负担。要让开发者在某个时刻开始学习Kubernetes错综复杂的细节,这并不是什么问题,因为随着规模增长,一切事物都会变得复杂和棘手。但作为一个成功的开发平台,不应该在没有必要的情况下将这些决策压力放在开发者面前。Ruby on Rails之父David Heinemeier Hansson(网络代号DHH)在RailsConf 2018主题演讲中将这种情况称为“JIT Learning(即时学习)”。

我想用Rails作为例子:为什么Rails当时如此成功?并不是因为Ruby的流行(它当时只是来自日本的一门新的编程语言),也不是因为Rails和Ruby在动态网页方面的优异表现,而是因为它们可以提高开发人员的生产力。DHH给大家介绍了如何用15分钟创建一个博客,这引起了Java和.NET开发人员的注意,因为他们需要花几个星期甚至几个月才能做出同样的东西。开发人员选择Rails是因为他们可以更快地向用户发布功能,而这正是这些框架和基础设施能够提供的。

Rails为开发者创建应用程序骨架,并生成脚手架和部分项目代码。开发人员不需要在项目开始时做出大量决策,比如应该如何组织应用程序代码、数据库模型应该放在哪里、应该定义怎样的asset管道、如何进行数据库迁移以及完成其他的任务和决策。

我认为Kubernetes也可以从这类生成器中受益。现在已经有一些特定的资源生成器,但还远远无法满足需求。如果有针对不同类型应用程序的模板,那就更好了。关系数据库、应用程序层、缓存服务器、消息队列和工作线程池的组合占到了构建应用程序的90%甚至更多,这种简单的结构可以扩展到令人难以置信复杂程度。模板或生成器可以生成开箱即用且具有Kubernetes组织结构的资源和代码,这将非常有用。

用于生成共公元素的脚手架生成器就很不错。需要一个MySQL数据库?可以使用类似下面的命令

来创建一组有状态的服务和其他必需的东西。然后,只需一个命令就可以将脚手架部署到k8s环境中,然后再使用几个控制台命令即可拥有一个生产就绪的数据库。对于流行的应用程序框架、消息代理服务器以及我们能够想到的其他任何东西,都可以使用类似的方法

或许Operator和Helm的组合就可以完成这些工作,但我认为这样还不够好。因为开发人员在Kubernetes之外还需要了解两个额外的工具。即使是了解简单的技术术语和安装新的命令行工具也需要额外的努力和思考。这些东西应该成为Kubernetes开箱即用体验的一部分,并可以直接通过kubectl来访问

CNCF的领地越来越广阔

CNCF中的项目越来越多,这对Kubernetes来说算不上是特别的问题,但CNCF项目的格局非常庞大,以致于KubeCon/CNCF大会非常分散,一个大会就包含了14个主题。作为开发人员,我怎么知道哪些工具适合我的项目?看一下CNCF中的项目:

要了解图中所有的项目是不可能的。如果已经存在一组预选好的工具,那么应用程序开发者将会有更好的体验。如果他们想加入不同的工具,完全没问题,但至少不应该让他们在事先就去考虑这些问题。CNCF日益增长的复杂性和广泛的影响力可能会淡化Kubernetes作为构建平台的品牌效应。我不确定结果会怎样,也不确定我是否在夸大其词,但是就我看来,它更像是一种工具大杂烩。当你费劲毕生精力来学习和构建基础设施工具时,还会有精力去解决用户的问题吗?

我想强调的是:基础设施的存在是为了帮助应用程序开发人员解决用户的实际问题,它们需要不断优化,提高交付的效率和能力。能够做到这一点的开放平台才会胜出。

必要的知识

在某些时候,开发人员需要更深入地学习基础设施工具。大多数在AWS工作的开发人员都熟悉AWS的一些组件,就像Google Cloud Platform或Azure开发人员熟悉他们的云一样。将Kubernetes作为基础层更有可能成功,因为开发人员只需要学习Kubernetes,就能在任何公共云或私有云上使用。

不过Kubernetes的学习曲线并不平稳。作为一个生态系统,Kubernetes需要满足应用程序开发人员的需求才能真正取得成功。毕竟,基础设施是解决用户问题的支持工具。提高应用程序开发人员的工作效率才是确保一个平台能够被广泛采用并取得成功的***途径。


Kubernetes会不会被自身的复杂性压垮

密码怎么设置才算安全?

除了要用软件的专业功能来保护密码,还要养成定期修改密码并保证密码的复杂性等良好的习惯。 那么什么样的密码才是安全的呢?前不久,芬兰论坛的论坛被黑客攻击,共有余帐户被盗取,令黑客自己也不相信的是,他们所破解来的论坛密码在许多其它的芬兰站点上也可以使用.事实上有近一半的人根本不会更改自己的密码,所有的账户上使用一个密码。 这具有相当大的风险,人们应该使用更复杂一些的密码,而不要使用那些仅仅用字典就可以跑出来的简单文字.除了要用软件的专业功能来保护密码,还要养成定期修改密码并保证密码的复杂性等良好的习惯。 那么什么样的密码才是安全的呢?一、在您的密码中,至少应该包括6个字符。 其中应该来自下面“字符类别”中五组中的至少三组,如:pD3DF!#$%F9D3,aa1988*&^,{peD95d$df!}小写字母: a、b、c…大写字母: A、B、C…数字: 0、1、2、3、4、5、6、7、8、9非字母数字字符(符号): ~ ` ! @ # $ % ^ & * ( ) < > ? / _ - | \Unicode字符: €、Γ、? 和 λ二、请您使用易于自忆又不会被别人猜测到的字符串作为密码.为了帮助您建立易于自己记忆又不会被别人猜测到的密码,请您尝试以下技巧:1.尽量设置长密码,一般人密码习惯性是三位或者六位,这是非常好破解的。 请您设法设置便于记忆的长密码,您可以使用完整的短语,而非单个的单词或数字作为您的密码,因为密码越长,则被破解的可能性就越小,如:123,,1,11,111,123,168,1314,520(特殊意义的数字)……2.尽量在单词中插入符号和大小写字母穿插使用。 尽管攻击者善于搜查密码中的单词,但请您在设置密码时不要放弃使用单词。 但您需要在您的单词中插入符号或者变为谐音符号,如:“just for you”可以改善为“just4y_o_u”或“justFORyou”。 3.不要在您的密码中出现您的帐号。 不要使用您的个人信息作为密码的内容,像用户名本身、用户姓名的各种组合变化、常用英文单词、生日、配偶姓名、孩子姓名、电话号码、身份证号码、工作证号码、汽车牌号、汽车执照号、居住的街道名称等,如:名字的简写和全称:CYH、caiyihao;生日:一般人的习惯:六位就是,四位是7912。 密码的连续性也不要很强,否则输入密码时就基本可以锁定大体的猜测范围。 4.请您每隔一段时间更新一次帐号的密码。 请您每隔一段时间更新一次自己的密码,让您的新密码也遵守以上原则,同时,新密码不应包括旧密码的内容,并且不应与旧密码相似。 5.不要所有帐号都使用一个密码。 至少要有3个以上的不同密码。 以上提到的是设置密码时应注意到的问题,自己对照一下,看看您的密码是否安全?

现在科技这么发达为什么不能预测地震呢?

在地震学界,“地震预测”主要是地震部门利用现有地震仪器和监测手段,采集,记录提取地震异常信息,经过处理分析,对可能发生地震的地点、时间和震级作出的科学预测,一般用于表示对地震的长期形势进行判断——比如尼泊尔坐落在印度澳大利亚板块与欧亚板块的碰撞带上,那么长期来看这里发生地震的可能性当然更大,这也符合大家看到有文章说有科学家预测尼泊尔将发生大地震的说法;“地震预报”(prediction)则用来表示对中短期甚至是即将发生的地震发出警报。 我们通常所关心的,其实就是对地震的“短临预报”,希望预报发出后,能够在地震发生前及时逃生。 1966年以来,我国虽然在海城地震、松潘地震等取得了有减灾实效的成功预报地震的例子,但地震预报仍是尚未攻克的世界性难题,各国仍在积极的探索和研究中,能做出预报的地震仍占少数。 在当前尚未攻克地震预报难关的情况下,地震预报只能预测出一段时间内、一定区域发生一定震级的地震,将地震发生的时间、地点、震级都说得非常准确的地震预报非常可能是谣言。 为什么不做地震预报,就像做天气预报一样?我们习惯向地震频发的日本学习先进技术,但是你知道吗,日本已经放弃放弃地震预报幻想回到防灾现实,很重要的原因是地震预报很难做到。 地震预报之难其实来源于人们对地震缺乏了解。 中国科学院院士、中国科学院地质与地球物理研究所研究员滕吉文称,地震预报存在三大困难:一是地球内部的不可入性。 迄今最深的钻井是前苏联科拉半岛的超深钻井,达12公里,和地球平均半径6370公里相比还是“皮毛”,还是解决不了直接对震源进行观测的问题。 学界对地震的描述还停留在李四光给下的定性表述“当地下能量积累到一定程度后就会爆发”,但是并没有量的表述。 也就是说,并不知道能量需要达到什么样的程度,才能引发地震。 地震的临界点是聚集多少能量,短时间内根本解决不了,也没有理论支撑,地震科学家们把这种现状形象地比喻为还处于对地球了解的婴儿时期。 而在中国地震局地震预测研究所研究员陈学忠看来,地震发生机理到底是怎样的,我们无法钻入地底下一查究竟,正如上天易入地难。 二是大地震的非频发性。 迄今对大地震之前的前兆现象的研究仍然处于对各个震例进行总结研究阶段,缺乏建立地震发生的理论所必需的切实可靠的经验规律。 三是地震物理过程的复杂性。 地震过程是高度非线性的、极为复杂的物理过程。 地震前兆出现的复杂性和多变性可能与地震震源区地质环境的复杂性以及地震过程的高度非线性、复杂性密切相关。 向日本学习:预报不如预防!处在环太平洋地震带上的日本是世界闻名的多地震国家,在日本,一年一度全国统一的“地震防灾日”甚至像节日一样,搞得轰轰烈烈。 和现在的中国一样,屡受地震之害的日本民众,也曾寄予地震预报以无限期待,他们相信,只要我们的科学技术够先进,地震的蛛丝马迹总会被提前捕捉。 1965年,日本有关地震预报的研究正式启动,承担有关科研项目的专家们众口一词地追随“预报可能论”,一时间预报研究竟成了摇钱树,当时累计投资达2000亿日元。 后来,随着地震复杂机理的逐渐明了,对近期预报的希望反而越来越渺茫了。 1962年的《地震预报的现状及发展规划》这一调查报告称“10年后将做出十分可靠的预报”,如今看来已经无法兑现。 从世界范围来讲, 在20世纪70年代, 地震预报是很多国家地震研究的主流方向, 进入90年代才开始重新审视这一方向。 当时, 美国加利福尼亚州的一个专家小组曾做出1992年一1993年会发生大地震的预报,结果预报落空。 不过它也终于让人们理性起来,各国学术界都开始接受这一事实: 地震的近期预报目前来看是不可能的。 虽然走了一段弯路,但转换观念后,日本科研进程却显著加快了步伐。 日本气象厅以1995年阪神大震为契机,将全国的强震观测点扩大到了约600个。 科学技术厅也在全国铺设了由1000台强震仪构成的地震观测网。 这样一来,通过安装密度比过去高达数十倍的强震仪,就能够正确且迅速地获得地震发生时震动强度的分布状况,这是巨大的进步。 阪神大地震之后,日本政府重新审视了国家的防震减灾对策,《地震防灾对策特别措施法》也应运而生,将一直广泛使用的地震预报研究一词,一律改为地震调查研究。 日本建筑的抗震设计和地震监测体制也相应改变了以往的观念,以前只围绕特定地区开展地震前兆的研究,现在已扩展到全国。 很多企业,如日本国铁及电力系统,就已经率先采取了不依赖预报的防灾措施。 日本国铁各公司在沿线各车站设置地震仪,并引人了一旦出现异常值能使整个列车停驶的自动装置。 既然地震无法预测,难道坐以待毙吗?著名的构造地质学家琼斯说过这样一句话,“你愿意提前一小时从楼房里逃出呢,还是希望房子根本不会倒?”日本学者也说过,地震最危险的时候,就是没有地震的时候。 地震直接导致的人员伤亡很少,绝大部分都是死于次生灾害,比如说房屋倒塌砸死。 尼泊尔这次地震造成重大人员伤亡的一个重要原因在于,震中靠近尼泊尔人口最稠密的首都加德满都,而当地房屋抗震性普遍较差,难以抵御如此级别的强震。 当我们还没有有效办法预防地震时,我们能做的最好的措施,不是寄希望于预报地震,而是居安思危、防患于未然。 在日常生活中重视加固建筑,达到一定抗震标准,才能最大限度地减少伤亡。 另外,做好“地震预警”也非常重要。 “地震预警”是跑在地震波抵达距离震源更远地方的避难警报,即地震已经发生,但是要把地震的消息快速传递到地震还未波及的地区,这也是真正有效的防灾手段,也是我们需要着重做的。 当一个大地震发生后,在大地震震中附近的地震台首先收到了地震波。 这时立刻发出告警信号,由于电磁波传播极快,可以使远处的地区在地震波还没有到达之前就知道发生了大地震,立即采取避让措施,减轻人员伤亡。

宫腔和子宫直肠有不规则液性暗区,影响怀孕吗

正常情况下盆腔积液量不应超过10mm,你的积液量较大,最好及时治疗。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐