当前位置: 首页 > 科技观察

生产环境VS开发环境,关于Kubernetes的四大误区

时间:2023-03-18 01:08:00 科技观察

【编者按】容器和KubernetesIT管理团队在将本地变更部署到生产环境时,往往面临很多需要学习的东西。我们最近澄清了您在试验Kubernetes时看到的一些常见误解。最大的误解之一是在生产中运行Kubernetes与开发和测试相同。答:是不一样的。AviNetwork联合创始人兼CTORangaRajagopalan认为:“对于Kubernetes、容器和微服务,实验环境和生产环境之间存在着巨大的差异,简单的操作并不等同于安全可靠的运行”。RangaRajagopalan的观点中有一个重要论点:上述问题不仅存在于Kubernetes中,也存在于容器和微服务中。部署容器相对简单;在生产环境中操作和扩展容器(包括容器化微服务)是复杂性的来源。容器和容器编排工具通常成套出现。NewStack之前进行的一项调查发现,随着组织寻求更强大的技术来解决运营挑战,容器正在推动Kubernetes的采用。虽然还有其他工具,但Kubernetes正迅速成为编排工具和选择的代名词。正如Rajagopalan所说,在沙箱中运行Kubernetes与在生产环境中运行Kubernetes之间存在巨大差异。通常IT专业人员和团队运营和维护小规模的Kubernetes环境。当这个环境变成生产环境部署的时候,这些人要面对和学习的东西会很多。“在投入生产之前,你肯定想澄清这些常见的误解,这就是IT领导者和团队需要知道的。”误区一:在开发测试环境运行Kubernetes,可以帮助你全面了解运维需求。现实:在开发测试环境运行Kubernetes可以帮助你走一些捷径,而不必面对生产环境带来的运维负载。StackRox产品副总裁WeiLienDang认为,“开发测试环境与生产环境最大的区别来自于运维和安全。在运维测试环境中,你不必关心集群停机时间。“Portworx的联合创始人兼首席执行官MurliThirumale将开发测试环境和生产环境之间的差异比作敏捷和可靠、高性能的敏捷。”开发团队的目标是在开发和测试新的应用程序和代码时实现应用程序。敏捷;同时,运维人员的目标是应用和数据的可靠性、可扩展性、安全性和性能。后者需要一个强大的、企业级的、经过测试和验证的平台。“自动化已经成为生产环境采用Kubernetes(或者通俗点叫容器)的迫切需要。CodaGlobal的架构师RanjanBhagitrathan认为,“生产集群必须通过自动化来部署。生产集群必须是可重现的,才能实现整体生产环境的一致性和可再现性也有助于灾难恢复。”Bhagitrathan还认为,版本控制对于生产环境的运维至关重要,“对一切进行版本控制,例如服务部署的配置文件、策略等,如果可能,包括代码命令以实现基础架构即代码.这确保了你的环境是相同的。还要确保你的容器图像是版本化的,不要只用像“最新图像”这样的名称来标记图像,这会导致混淆”。误区2:您已获得可靠性和安全性现实:如果您仅在非生产环境中试验过Kubernetes。您可能尚未实现可靠性和安全性,或者尚未实现。好消息是你最终会,因为在进入生产环境之前,你需要进行规划和架构设计。AquaSecurity联合创始人兼联合创始人CTOAmirJerbi认为,“显然,生产环境面临的挑战,性能、可扩展性、高可用性和安全性都更加严峻。因此,在生产环境需求规划期间显得尤为重要架构阶段,并将安全性、扩展控制和Helm图表集成到Kubernetes部署的定义中。”Dang分享了一个测试开发环境如何导致过度自信的例子:“在测试开发环境中,最好将所有网络端口都打开,并且很可能所有服务都可以相互连接。Kubernetes设置所有网络连接默认打开,但这不是成熟的生产环境应该有的设置,一旦进入生产阶段,宕机和大规模攻击会给业务带来风险。“当工作转移到容器和微服务上,构建高可靠和高可用的系统是非常有价值的工作。编排工具可以为您完成这部分工作,但它并不容易获得。安全性也是如此。“我们可以做很多事情来减少对Kubernetes的攻击,并且通过强化网络策略和将服务限制为仅向需要它们的人提供服务来实施最小特权模型至关重要。”“在生产环境中,容器镜像中的安全漏洞会很快变得严重,威胁可能是有限的,或者根本不是本地的。”(而本地威胁可能有限或不存在。)Bhagirathan说,“小心你的容器镜像使用的基础镜像是什么?尝试使用受信任的官方镜像或自己制作。使用未知镜像可能会帮助你快速运行服务,但同时也带来了安全问题,比如你肯定不希望你的Kubernetes系统贡献给别人挖比特币,RedHat的安全策略师KirstenNewcomer鼓励人们通过10层来思考容器安全—包括容器堆栈层(如容器主机和注册表)、容器生命周期(API管理)。10层的详细信息以及如何使用Kubernetes等容器编排工具,请参考新人的播客或白皮书:https://www.redhat.com/en/enga...yaAAA.误区三:编排工具让扩展变得容易事实:虽然很多软件专业人士都认为像Kubernetes这样的容器编排引擎对于容器sc来说是必不可少的能力,但认为编排工具会立即使扩展变得容易的想法是错误的,尤其是当您第一次在生产中使用它时。SumoLogic高级技术产品经理FrankReno认为,“自动伸缩改变了一切。数据越来越大,你的监控系统需要根据数据量进行扩展。并不是Kubernetes的所有组件都很好理解直到它们在生产中运行。毕竟为了保证Kubernetes系统的健康,API服务器和其他控制组件可以根据需求进行扩展,而不是自动扩展。“开发和测试环境过于简单化了,真正的环境需要这样或那样需求,需要维护。”在开发和测试环境中,跳过一些基本设置非常简单,比如确保你可以使用特定资源,限制请求,”Reno说,“如果你不设置这已经投入生产,你的日子结束了。“扩大或缩小集群是一个很好的例子,说明当您在本地进行试验时,这看起来很简单,但在生产中扩大规模却变得更具挑战性。”与开发或模拟集群相比,生产集群在扩展方面有更多痛点,”WhiteSource首席执行官RamiSass说。它是关于在保持服务在线的同时扩展基础设施。重要的是要确保主要服务、负责漏洞和安全的警报系统分布在集群的各个节点上,并使其有状态,以便在缩小规模时不会丢失数据。“与任何其他挑战一样,这是一个明智地规划和利用资源的问题。“了解您的扩展需求,为它们制定计划,更重要的是:测试!”CodaGlobal的Bhagirathan建议。“您的生产环境应该能够处理更高的负载”。误区4:Kubernetes在何处运行并不重要。现实:就像在开发人员的笔记本电脑上运行Kubernetes和在生产环境中运行Kubernetes之间存在差异一样,环境也造成了差异。”一个常见的误解是,(假设)Kubernetes在本地运行良好,那么它在任何地方都可以正常运行,”Bitnami首席执行官兼联合创始人DanielLopez说,他利用云平台之间的差异来支持这一假设。错了。”虽然Kubernetes有效地提供了一致的环境,但供应商之间存在显着差异。Lopez还指出,生产部署需要的组件不仅是本地的,例如监控、日志和证书管理以及凭证。你需要考虑这些因素,这也是拉大开发/测试和生产环境差距的关键问题之一。这也是一个综合性的问题,不仅需要考虑Kubernetes,还需要考虑容器和微服务,更普遍的是混合云和多云环境也需要考虑。“公私部署比纸面上看起来更重要棘手,因为许多必要的服务,如负载平衡和防火墙,都是专有的。在实验室中运行良好的容器在使用不同工具的云环境中可能根本无法运行——或者至少不安全,”AviNetworks的Rajagopalan说。“这就是像Istio这样的服务网格技术受到如此多关注的原因。容器在哪里运行并不重要,它们提供相同的应用程序服务,所以你不必考虑基础设施——这就是容器的伟大之处“。