在企业级大规模容器化的情况下,如何在分布式环境中部署应用、如何管理跨机器应用,如何维护并实现负载均衡、资源配额、自动调度、在线扩容等等:这就是容器编排系统的作用。容器编排系统的英文单词是container orchestration,其中orchestration直译为“管弦乐编曲”,编曲时要考虑到如何让不同的乐器交织、如何通过先后不同乐章中让乐曲更加美妙动听。
企业在管理容器集群时更是需要容器编排系统,目前比较主流的两大方案是源自谷歌的Kubernetes和Docker公司自研的Docker Swarm。其中Kubernetes是集群管理软件,用于容器化应用程序的自动部署、扩展和管理,它支持包括Docker等在内的一系列容器工具。
早期的Kubernetes并不是很成熟,存在安全能力较弱、部署复杂等不足,而2016年Kubernetes发展迅猛,目前已经非常完备。所以,容器团队选择了在合适的时间推出Kubernetes服务,在此前的Docker Swarm基础上再添加对Kubernetes的支持。如此,用户便可以根据需要选择不同的技术方案。
条条大路通罗马,殊途同归。两者都是很好的编排系统,重点在于如何借助容器技术助力企业创新。不论是Swarm 还是Kubernetes 亦或是自有方案,用户都可以根据自己情况,选择编排方案,在技术选型上有着更大的自由。
非常赞同上面郭经理的专业回复。在这里再补充一点。
容器部署模板是容器化平台实现 CI/CD DevOps 的基础,业务场景部署到容器PaaS平台时,最佳实践是通过模板来控制整体部署,包括环境变量的匹配和混搭。您提到的复杂产品确实是在混合编排时比较难于标准化的关键实现。针对这种情况 Redhat 自去年起就在社区生态环境中大力推动 Operator Framework。 Operator Framework 是针对复杂产品的标准化实现的最佳途径。由于 Operator 的构造中可以混入代码,因此可以保障在初始供应时实现更加复杂的判断与配置等操作。因此现在主流的复杂组件大都提供了 Operator 来强化使用体验,例如 MySQL 就有很多 Operator 可以帮助用户构建复杂的集群关系,以保证 Admin Node,SQL Node, Storage Node 可以快速有效的协同工作,同时也能够保证为最终用户供应集群时可以有更好的操作体验。同时还可以将复杂组件的开发维护、运维维护、使用维护任务区分供应来提升 DevOps 的整体工作效率。 因此我个人推荐在容器PaaS平台上定制复杂产品结构,进行一定程度的任务封装,通过 Operator 来对部分可原子化的复杂组件操作进行合理的封装虽然会加大初期设计实现投入,但会有效降低真正运维期的使用难度和工作压力。
收起