对于Kubernetes来说,新版本的Docker Swarm意味着什么?

简介: 本文讲的是对于Kubernetes来说,新版本的Docker Swarm意味着什么?【编者的话】本文介绍了Docker 1.12的最新进展,并与Kubernetes进行了简单的比较,阐述了Apprenda选择Kubernetes的理由。
本文讲的是对于Kubernetes来说,新版本的Docker Swarm意味着什么?【编者的话】本文介绍了Docker 1.12的最新进展,并与Kubernetes进行了简单的比较,阐述了Apprenda选择Kubernetes的理由。

按照软件开发的一般标准来说,容器编排领域正以难以置信的速度发展着,爆发了大量的容器创业公司,竞争也日趋白热化。这对于创新来说是一件好事,但是增加了技术选型的难度。我们正密切关注着Docker和Swarm。
Blog_DockerSwarm_Kubernetes.png

在Apprenda,我们的目标是向一个创新的、稳定的、长期维护的编排技术贡献代码。我们认为,一个健康的社区是这三点的必要条件。对多个不同的容器编排解决方案进行了技术、社区和商业三个方面的评估之后, 我们选择了Kubernetes 。然而,与Kubernetes相比,我们需要了解其他的容器集群管理技术提供了哪些能力,这是很重要的。

Docker会在一周之内发布1.12版本,可能会与Kubernetes直接竞争。新版本会有 内置的编排系统 ,称为SwarmKit。Docker Swarm现在是Docker的一部分了,它引入了一些有趣的新概念。例如,Docker CLI具备了实例化一个Swarm集群的新能力。

实例化一个Swarm集群隐含地创建了一个Swarm Manager和CA(Certificate Authority)。值得注意的是,CA会为Swarm Manager和Swarm集群中的所有节点生成证书,所有节点之间的通信都被TLS保护。这意味着再也不会存在一个不安全的Swarm集群,这是很棒的。现在,对于开发者和工程师创建和使用Swarm来说,安全性是完全透明的。

CLI提供了一些新命令,可以将一个节点加入到已存在的Swarm集群中。值得注意的是,节点有两种角色,要么是manager,要么是worker,但是worker角色可以提升为manager角色,manager角色也可以降级为worker角色。Swarm manager使用 RAFT协议 来选举一个leader,这和Kubernetes与 etcd 的工作方式是相似的。另一方面,workers使用谣言协议(gossip protocol)在他们之间交换状态,因此Docker用户不再需要一个外部实体或者key-value数据库来跟踪集群拓扑时常的变化。

Docker还引入了一个新概念:logical服务,这个概念已经在 Docker Cloud 中使用了一段时间了。该服务包括1对多的容器实例,这种逻辑视图(logical view)使服务管理更加容易。用户可以创建、更新和扩展一个服务,最终表现为部署、更新和销毁容器。

Docker 1.12的一个缺点是服务发现,而Kubernetes中的服务发现是非常优雅的。更重要的是,自Kubernetes项目一开始,容器的服务代理概念(the notion of a "service" proxy)就已经存在了。它可以连接集群中的 服务名 ,Kubernetes将保证你连接到服务背后的pod(一个或多个容器)。Kubernetes是模块化设计的、可扩展的,它的组件可以很容易地交换,这意味着你可以很容易地裁剪Kubernetes,来满足你的需求。

毫无疑问的是,Docker的新版本将直面Kubernetes的竞争,可以用来自动化部署、扩展和操作宿主机集群中的容器集群。很多公司使用Kubernetes,是因为它超强的社区。社区称之为Kube,正在获得企业用户的广泛认可,他们正在探索如何构建云原生的容器化应用。

Kubernetes将它自己描述为,像一个单一系统一样来管理容器集群,从而加速开发和简化部署。Kubernetes是 开源的 ,是由社区开发的,并由 CNCF (Cloud Native Computing Foundation)管理。这与Docker/Swarm是从根本上不同的,后者是由一个独立的创业公司控制,并非由一个开源社区来管理。Kubernetes是很牛的,原因是它引入了Google数十年运行大规模容器的经验、Red Hat多年部署和管理企业中的开源软件的经验、CoreOS的敏捷开发经验和很多其他组织和社区成员的优势。

正式由于一个强大的、多样化的社区,Kubernetes就像瑞士军刀一样灵活。你可以在裸金属架构上、任何一个你能想到的云服务提供商上运行Kubernetes。另一个令人惊讶的特性是,Kubernetes既支持Docker容器,也支持 rkt 容器,并提供了添加其他集群运行时的能力。

最后,Apprenda选择Kubernetes。这是我们尝试过的最鲁棒的解决方案,我们也很自信它能在未来一直支持我们。Apprenda和Red Hat正在尝试提供Kubernetes的 Windows支持 ,从而运行 Windows容器 。需要注意的是,其他集群编排服务也不是一无是处的,就像我之前所说的,该领域正在飞速发展,我们希望能确保与最活跃的、稳定而成熟的项目合作。在使用Kubernetes的过程中,我们感觉非常开心,并在1.0版本之后便使用在生产环境中了。

我们对于Kubernetes的 1.3版本 很激动,新的PetSet特性提供了新的有状态原语(stateful primitives)来运行pods。我们也很期待Kubernetes 1.3中添加的 cluster federation (也就是Ubernetes)。

我们很感激整个Kubernetes社区,感谢他们对于该项目的投入。Kubernetes是一个神奇的技术,满足了我们Apprenda的需求。

原文链接:What the New Docker Swarm Announcement Means for Kubernetes(翻译:夏彬)

原文发布时间为:2016-08-01

本文作者:夏彬

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:对于Kubernetes来说,新版本的Docker Swarm意味着什么?

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
17 0
|
6天前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
|
6天前
|
Kubernetes 负载均衡 调度
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
【5月更文挑战第8天】Docker Swarm 和 Kubernetes 是两大容器编排工具,各有优势。Docker Swarm 简单易用,适合小到中型规模,与 Docker 生态系统集成紧密;而 Kubernetes 功能强大,扩展性好,适用于大规模、复杂场景。选择时需考虑团队技术能力、应用需求及现有技术栈。Kubernetes 学习曲线较陡,Docker Swarm 则较平缓。
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
|
7天前
|
Kubernetes Cloud Native 持续交付
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
【5月更文挑战第7天】本文探讨了Docker和Kubernetes如何协同构建和管理云原生应用。Docker提供容器化技术,Kubernetes则负责容器的部署和管理。两者结合实现快速部署、自动扩展和高可用性。通过编写Dockerfile创建镜像,然后在Kubernetes中定义部署和服务进行应用暴露。实战部分展示了如何部署简单Web应用,包括编写Dockerfile、构建镜像、创建Kubernetes部署配置以及暴露服务。Kubernetes还具备自动扩展、滚动更新和健康检查等高级特性,为云原生应用管理提供全面支持。
【Docker专栏】Kubernetes与Docker:协同构建云原生应用
|
7天前
|
负载均衡 安全 数据安全/隐私保护
【Docker专栏】Docker Swarm集群管理详解
【5月更文挑战第7天】Docker Swarm是Docker的原生集群管理工具,用于将多个Docker主机整合为虚拟主机。其主要特点是服务发现、负载均衡、自动恢复和扩展性。Swarm由Manager(负责管理与控制)和Worker(运行服务)节点组成。创建Swarm集群涉及初始化、添加Worker节点及查看集群状态。服务部署包括创建、更新、扩展和缩减。Swarm还支持滚动更新、健康检查、网络管理和安全加密。本文概述了Swarm的基本功能,鼓励读者进一步探索其高级特性。
【Docker专栏】Docker Swarm集群管理详解
|
9天前
|
Kubernetes Cloud Native Go
Golang深入浅出之-Go语言中的云原生开发:Kubernetes与Docker
【5月更文挑战第5天】本文探讨了Go语言在云原生开发中的应用,特别是在Kubernetes和Docker中的使用。Docker利用Go语言的性能和跨平台能力编写Dockerfile和构建镜像。Kubernetes,主要由Go语言编写,提供了方便的客户端库与集群交互。文章列举了Dockerfile编写、Kubernetes资源定义和服务发现的常见问题及解决方案,并给出了Go语言构建Docker镜像和与Kubernetes交互的代码示例。通过掌握这些技巧,开发者能更高效地进行云原生应用开发。
52 1
|
5天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
5天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
1天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第13天】在微服务架构和容器化部署日益普及的背景下,对Docker容器的监控变得尤为重要。本文将探讨一种构建高效稳定Docker容器监控体系的方法,通过集成Prometheus和cAdvisor工具,实现对容器资源使用情况、性能指标和运行状态的实时监控。同时,结合Grafana进行数据可视化,为运维人员提供直观的分析界面,以便及时发现和解决潜在问题,保障系统的高可用性和稳定性。
15 6
|
2天前
|
存储 安全 开发者
如何删除 Docker 镜像、容器和卷?
【5月更文挑战第11天】
13 2
如何删除 Docker 镜像、容器和卷?