容器的运行不能简单的参考虚拟机的实践经验。例如,几乎所有工作负载都可以开箱即用地虚拟化,但有些工作负载适合容器化部署,而其他工作负载则不适合。本文解答了企业在使用容器时最常见的10个问题,帮助您更好地理解容器部署和工作负载容器化等问题。1、容器最适合的使用场景是什么?在生产环境中,最适合容器化部署的理想应用类型应该是微服务。微服务是一项重点任务,仅代表整个应用程序的一小部分。因为微服务专注于单个任务,所以它可以独立于应用程序的其余部分进行扩展。此外,由于微服务具有高内聚性和松散耦合性,因此它们可以彼此独立部署和发布。此外,使用容器基础架构构建微服务可以更快更好地发挥其优势。只要面向外部的API不破坏应用程序兼容性,软件开发人员可以快速迭代和改进整个微服务,而不会影响其他开发人员的微服务。然而,大多数传统企业应用并不符合微服务架构,因此并非所有企业都适合使用微服务。2、部署容器需要考虑哪些关键因素?(1)UI界面管理和API管理用户界面UI,包括基于API的图形UI(即外部系统直接使用API??访问系统)。(2)镜像仓库公共镜像仓库,例如DockerHub提供了公共管理的容器镜像仓库。许多容器管理系统提供私有镜像注册表,组织可以在其中管理自己的镜像。(3)编排与调度编排层可以使容器运行在期望的状态,并提供滚动更新和回滚功能。当然,Kubernetes已经成为容器编排的事实标准。(4)容器运行时,当容器运行时,集群节点可以获取镜像仓库中的容器镜像,也可以生成正确的文件结构在宿主机上运行容器,也可以与网络和存储插件,还可以创建、启动和停止容器。(5)安全管理通过安全组件实现安全策略,包括密钥管理、安全扫描、图像签名、网络隔离和加密、基于角色的访问控制(RBAC)等。(6)持续监控监控程序可以提供可视化集群节点、容器和微服务级别的功能。(7)DevOps工作流程DevOps对于容器部署并不重要,但它们通常是一起使用的,例如DevOps工具、CI/CD流水线工具、容器镜像生成器等工具需要协同工作。3.是否可以在Windows和VMware环境中运行容器?Windows容器生态还不够成熟,无法在生产环境中广泛使用。Windows容器缺乏容器编排工具的支持。例如,最新的Kubernetes软件版本仅提供对Windows容器的Beta支持。此外,容器支持的Windows应用程序非常少。WindowsServer对身份验证、安全性和网络的支持也非常有限。一些现有组件处于“测试版”或“预览版”版本。当然,尽管有这些限制,Windows容器也可以用于特定的场景,比如内部开发场景,可以通过容器获得敏捷性、可移植性和成本优势。VMware的vSphere可以将Docker引擎与vSphere集成,为容器在轻量级VM中运行提供了一种方式。此外,VMware还提供容器管理入口和私有仓库,用于安全存储镜像。4.你应该选择CaaS、Kubernetes还是BYO容器管理解决方案市场上有多种产品可以让企业大规模部署容器。这些产品在提供给应用程序开发人员的抽象级别上各不相同。最抽象的产品是容器即服务(CaaS),过去多为PaaS产品,如CloudFoundry、OpenShift。这些CaaS产品从开发人员那里抽象出基础设施的细节,并以结构化的方式提供应用程序工具。BYO容器管理解决方案提供最少的抽象和最大的灵活性,但增加了复杂性。BYO:尽量避免BYO,除非在极少数情况下。因为很少有组织有能力实现这一目标。对于想要BYO的组织,可以选择集成一些快速发展的开源产品。Kubernetes:至少从概念上了解基础设施并能够实践,那么选择相对灵活的K8S发行版是一个可行的方案。一些CaaS产品为一些开发者工具提供了选项,也为开发者提供了更直接使用容器编排和调度组件的选项。PaaS:如果你刚刚接触微服务开发,那么使用PaaS提供的服务。5.容器是否不如虚拟机(VM)安全?容器并非天生不安全。实际上,为了防止由于破坏其他容器而引起的攻击,容器中的每个应用程序和用户都是相互隔离的。因此,确保共享主机操作系统内核的完整性并确保主机上容器的隔离性至关重要。此外,需要监控和保护容器间的通信,而传统的安全工具在这方面大多无效。在采用容器技术时,建议考虑以下3点:使用加固的操作系统,通常是“瘦客户端操作系统”,可以限制攻击面,并通过严格的自动化补丁管理系统进行保护。在容器的构建和运行阶段进行控制,例如在软件开发生命周期中扫描软件以及早检测漏洞。通过使用细粒度的容器安全工具主动检测和监控异常行为,IvyHive等容器安全产品可以提供容器和服务器级别的安全可视化,并有助于防止恶意应用程序流量。6.容器可以处理敏感数据和应用程序吗?通过专注于容器部署的容器安全,结合现有的加密和其他安全工具,可以使用容器来处理敏感数据和应用程序。另外,也可以使用一些容器安全厂商的解决方案来保证容器的安全,比如青腾云安全的容器解决方案。当然,要使这种方法取得成功,安全团队必须及早参与到为敏感数据部署容器的过程中。7.容器是否适合COTS应用?越来越多的软件供应商现在将容器化部署作为其产品的一种选择。一些供应商采用敏捷开发模型来满足容器化部署,作为他们编写、测试和交付软件的方式的一部分。这些应用程序被重构为自然适配容器的微服务。但也有供应商不愿提供容器化部署,怕不提供容器化部署功能会失去市场。在这种情况下,COTS大多不适合容器,因为这些应用在本质上可能仍然是整体性的,或者应用没有独立可扩展的属性。此外,如果企业本身没有现有的容器基础设施来管理它,COTS应用程序的容器部署可能不适合企业。在绝大多数情况下,应避免在没有供应商明确支持的情况下打包COTS应用程序,以免出错。8、Foundry、OpenShift等产品和容器有什么关系CloudFoundry是一个应用PaaS平台,支持多种框架、语言、运行环境、云平台和应用服务,使开发者能够部署和扩展应用,而无需担心任何基础设施问题。因此,它也是一个比较固定的容器框架。之所以这样描述,是因为它已预先配置好,便于安装和维护。OpenShift是RedHat的云开发平台即服务(PaaS),使开发人员能够创建、测试和运行他们的应用程序并将它们部署到云中。OpenShift支持广泛的编程语言和框架,例如Java、Ruby和PHP。此外,还提供Eclipse集成、JBossDeveloperStudio、Jenkins等多种集成开发工具。企业在评估面向容器场景的PaaS产品时,需要关注其提供的服务范围,区分是自身支持容器场景,还是需要自定义配置或第三方组件服务来支持容器场景。9.是否应该重构应用程序以更好地支持容器?在生产中,容器在部署以支持微服务的弹性工作负载时将发挥最大作用。因此,是否重构应用以支持容器化部署,取决于企业是否计划在开发测试、生产等阶段使用容器。此外,当企业决定重构一个应用以更好地支持容器时,应该首先重构应用的无状态部分,如Web应用的前端部分,重构为微服务以支持使用容器。此外,企业可以通过微服务架构构建新的应用,避免后期重构。10.在公有云部署容器服务效果如何?云IaaS服务提供商提供完全托管的服务,无需处理虚拟机或底层基础设施。这种趋势现在也适用于容器。例如,AWSFargate提供了一种托管容器服务,将底层基础设施抽象化,使开发人员专注于需要执行的任务,而不是Kubernetes集群中的实例数量。
