2023年6月30日发(作者:)
开发环境和运⾏环境的区别_⽣产环境VS开发环境,关于Kubernetes的四⼤认识误区...最近我们澄清了⼀些⼤家在进⾏Kubernetes实验的时候所见到的常见的误解。其中最⼤的⼀个误解就是:在⽣产环境中运⾏Kubernetes和开发测试环境并⽆两样。答案:是不⼀样的。Avi Network公司的联合创始⼈兼⾸席技术官Ranga Rajagopalan认为:“对于Kubernetes,容器和微服务来说,实验环境和⽣产环境有巨⼤的不同。简单的运⾏和安全、可靠的运⾏是不⼀样的”。Ranga Rajagopalan的意见中有⼀个重要的论点:上述问题不仅仅只是存在于Kubernetes,同样也存在于容器和微服务。部署容器相对简单;⽽在⽣产环境运维和缩放容器(包括容器化的微服务)是问题复杂的原因。容器和容器的编排⼯具通常都是成套出现的。New Stack公司之前进⾏了⼀项调查,调查发现当组织为了解决运维所⾯对的挑战,去寻找更强⼤的技术的时候,容器反过来推动了Kubernetes的普及。虽然也有其他的⼯具,Kubernetes还是快速成为了编排⼯具和选择的代名词。像Rajagopalan说的那样,在沙箱⾥运⾏Kubernetes和在⽣产环境中运⾏Kubernetes有巨⼤的不同。通常IT专业⼈⼠和团队运维⼩规模的Kubernetes环境,当这个环境转向⽣产环境部署的时候,这些⼈将有很多东西需要⾯对和学习。“你肯定想在上⽣产环境之前扫清这些常见的误解,这⾥有IT领导者和团队需要了解的知识”。误区1:在开发测试环境运⾏Kubernetes能帮你全⾯了解运维的需求现实:在开发测试环境运⾏Kubernetes能帮你⾛⼀些捷径,你可以不必⾯对⽣产环境所带来的运营负载。Wei Lien Dang, StackRox的产品副总裁认为“开发测试环境和⽣产环境的最⼤不同源⾃于运维和安全,在运维测试环境你根本不⽤在乎集群宕机。”Portworx的联合创始⼈兼CEO Murli Thirumale将开发测试环境和⽣产环境的不同与敏捷和可靠,⾼性能的敏捷做了类⽐。“开发团队的⽬标是在开发和测试新应⽤和代码的时候实现应⽤的敏捷;⽽同时运维⼈员的⽬标是应⽤和数据的可靠性,可伸缩性,安全性和性能。后者需要⼀个强⼤的,企业级的,经过测试和验证的平台。”⾃动化已经成为了在⽣产环境中采⽤Kubernetes(或者通俗所说的容器)的迫切需求。Coda Global的架构师Ranjan Bhagitrathan认为“⽣产集群必须通过⾃动化部署。⽣产集群⼀定要具备可复制性,从⽽实现整体⽣产环境的⼀致性,同时可复制性也对灾难恢复有所帮助”。Bhagitrathan同时也认为版本控制对⽣产环境运维⾄关重要,“对所有事情进⾏版本控制,⽐如服务部署的配置⽂件,策略等等,如果可能也包括实现基础架构即代码的代码命令。这能确保你的环境是相同的。同时也要确保容器镜像有版本控制,不要只是⽤“最新镜像”这样的名字来个镜像打标签,这样很容易引起混乱”。误区2:你已经得到了可靠性和安全性现实:如果你只在⾮⽣产环境试验过Kubernetes。你可能没获得可靠性和安全性,或者⽬前没有。好消息是你最终会做到,因为上⽣产环境之前,需要做规划和架构设计。AquaSecurity的联合创始⼈兼 CTO Amir Jerbi认为“很显然,在⽣产环境,性能,可伸缩性,⾼可⽤性和安全性⽅⾯所⾯对的挑战更严峻。所以在架构阶段规划⽣产环境需求,并且把安全,伸缩控制,Helm charts集成在Kubernetes部署的定义中是极为重要的”。Dang分享了⼀个测试开发环境如何导致过度⾃信的例⼦:“在测试开发环境中开放所有的⽹络端⼝是⾮常不错的,很可能所有的服务都能互相连接。Kubernetes默认设置所有⽹络连接开放。但这不是⼀个成熟⽣产环境所应有的设置,⼀旦步⼊⽣产阶段,停机和⼤规模攻击会给业务带来风险“。“当⼯作转移到容器和微服务的时候,构建⾼可靠,⾼可⽤的系统是⾮常有价值的⼯作。编排⼯具帮你实现这部分⼯作,但这并不举⼿可得。安全性也是⼀样。”“我们要做很多事情来减少针对Kubernetes的攻击,通过加强⽹络策略来实施最低权限模型,并且限制服务只和需要的服务连接是⾮常关键的。”在⽣产环境中,容器镜像的安全漏洞可以很快变的很严重,威胁可能是受限的或者根本不在本地。(whereas the threat may be limitedor non-existent locally.)Bhagirathan说,“要注意你的容器镜像采⽤的基础镜像是什么,尽可能⽤受信任的官⽅镜像或者⾃⼰动⼿制作。⽤未知的镜像也许可以帮你很快的跑起服务,但也带来了安全问题。⽐如,你肯定不想你的Kubernetes系统给别⼈挖⽐特币做贡献。”误区3:编排⼯具让缩放变得易如反掌事实:虽然很多软件专业⼈⼠都认为Kubernetes这样的容器编排引擎对于容器扩展性来说是必不可少的,但是认为编排⼯具能⽴即让缩放变得简单是错误的,特别是当你第⼀次在⽣产环境中使⽤它时。Sumo Logic公司的⾼级技术产品经理Frank Reno认为“⾃动缩放改变了⼀切,数据越来越⼤,你的监控系统需要根据数据量来扩展。在⽣产环境运⾏之前,Kubernetes的所有组件都不能被很好的了解。毕竟确保Kubernetes系统的健康运⾏,API服务器和其他控制组件能根据需求缩放⽽不是⾃动的。”开发和测试环境让事情变得过于简单,⽽真正的环境需要这样,或那样的需求,并且需要⼀直维护。“在开发测试环境可以⾮常简单跳过⼀些基础设置,⽐如确保你能⽤到特定的资源,并且限制请求,”Reno说,“如果在⽣产环境不这样设置,你的好⽇⼦就算到头了。”向上或向下扩展群集是⼀个很好的例⼦,当你在本地进⾏实验时,它可能看起来很简单,但在⽣产环境中缩放变得明显更具挑战性。“⽣产集群,与开发或模拟集群相反,在扩展⽅⾯会遇到更多的痛点,”WhiteSource的⾸席执⾏官Rami Sass说。 “尽管应⽤程序的横向扩展在Kubernetes中⾮常简单,但DevOps[团队]还需要考虑其它⽅⾯,特别是保持服务在线的同时扩展基础架构。重要的是确保主要服务,负责漏洞和安全的报警系统分布在群集的节点上,并使之有状态,这样在向下扩展时不会丢失任何数据。”和其它挑战⼀样,这是合理规划和利⽤资源的问题。“了解你的缩放需求,为它们做计划,更重要的是:做测试!” Coda Global公司的Bhagirathan提出了建议。“你的⽣产环境应该能承担更⾼的负荷”。误区4:Kubernetes在哪运⾏都没区别现实:正如同在开发⼈员的笔记本上运⾏Kubernetes和⽣产环境中运⾏Kubernetes有区别⼀样,环境会导致差别。“⼀个常见的误解是(假设)Kubernetes在本地运⾏正常,那么它可以在任何地⽅正常⼯作,”Bitnami的⾸席执⾏官兼联合创始⼈DanielLopez说道,他⽤云平台之间的差异来应证这个假设的是错误的。 “虽然Kubernetes如果能够有效地提供⼀致的环境,但供应商之间仍存在显著差异 。”Lopez还指出,⽣产环境的部署需要那些不只作⽤于本地的组件,⽐如监控,⽇志和证书管理,以及凭据。你需要考虑这些因素,这也是导致开发/测试和⽣产环境之间差距扩⼤的关键问题之⼀。这也是综合性问题,不仅Kubernetes需要考虑,也包括容器和微服务,更⼴泛的来说,在混合云和多云环境也需要考虑。“公共 - 私有部署⽐纸⾯上看起来更棘⼿,因为许多必要的服务,如负载平衡和防⽕墙,都是专有的。 在实验室中运⾏良好的容器在具有不同⼯具的云环境中运⾏可能根本不⼯作——或者⾄少不安全 ,”Avi Networks的Rajagopalan说。 “这就是为什么像Istio这样的服务⽹格技术受到如此多关注的原因。 不管容器运⾏在哪,他们都提供相同的应⽤程序服务,因此你不必考虑基础架构——这是容器最重要的⼀点”。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688057419a72474.html
评论列表(0条)