前言

有无数的辩论和讨论谈论Kubernetes和Docker。如果你没有深入研究,你会认为这两种开源技术都在争夺集装箱至上。让我们明确指出,Kubernetes和Docker Swarm不是竞争对手!两者都各有利弊,可根据您的应用要求使用。

在本文中,有关这些问题的更多信息:

  • Kubernetes和Docker如何改变软件开发的时代?
  • 它如何彻底改变了DevOps咨询的方式?
  • 虽然它们不同,但它们如何统一开发和整合的过程?
  • 该方案有哪些限制?

如果您希望开发现代云基础架构或寻找DevOps实现,那么必须了解Kubernetes和Docker的完整概念。这篇全面的文章将带您从头开始探讨Kubernetes与Docker Swarm的历程,并将帮助您回答每个重要问题。


容器,集装箱化和集装箱编排 - 快速入门

容器是包含应用程序代码,配置和依赖关系的软件包,可提供运营效率和生产力。在这里,您可以确切地知道它将如何运行,这意味着它是可预测的,可重复的和不可变的。容器的兴起是DevOps即服务的一个巨大推动因素,可以克服当今面临的最大安全障碍。

容器化通过在操作系统级别进行虚拟化来使应用程序可移植,从而创建基于内核的隔离的封装系统。容器化的应用程序可以放在任何地方,无需依赖项运行或需要整个VM,从而消除了依赖关系。

但是如果有多个容器怎么办?

这里需要容器编排!

容器编排是通常可以部署多个容器以通过自动化实现应用程序的过程。像Kubernetes和Docker Swarm这样的平台是容器管理和容器编排引擎,使用户能够指导容器部署并自动执行更新,运行状况监视和故障转移过程。

这一切听起来都很不错,但你如何实际使用工具和构建容器?

让我们从Docker开始吧。


搬运工人

“构建,运送和运行任何应用程序”

Docker是一种容器管理服务,可帮助开发人员设计应用程序,并通过使用容器更轻松地创建,部署和运行应用程序。Docker具有用于群集容器的内置机制,称为“群集模式”。使用群集模式,您可以使用Docker Engine在多台计算机上启动应用程序。

一、Docker Swarm - 管理Docker容器的工具

Docker Swarm是Docker自己的Docker容器本地集群解决方案,具有与Docker生态系统紧密集成并使用自己的API的优势。它监视跨服务器群集的容器数量,是在没有其他硬件的情况下创建群集docker应用程序的最便捷方式。它为Dockerized应用程序提供了一个小规模但有用的编排系统。

使用Docker Swarm的优点

  • 以更快的速度运行:当您使用虚拟环境时,您可能已经意识到它需要很长时间,并且包括启动和启动您要运行的应用程序的繁琐程序。使用Docker Swarm,这不再是一个问题。Docker Swarm消除了启动完整虚拟机的需要,使应用程序能够快速在虚拟和软件定义的环境中运行,并有助于DevOps实施。

  • 文档提供了所有信息: Docker团队在文档方面脱颖而出!Docker正在迅速发展,并为整个平台赢得了热烈的掌声。当版本在很短的时间间隔内发布时,某些平台不会维护文档。但是Docker Swarm从未与它妥协。如果该信息仅适用于Docker Swarm的某些版本,则文档会确保更新所有信息。

  • 提供简单快速的配置: Docker Swarm的一个主要优点是它简化了问题。Docker Swarm使用户可以自己配置,将其放入代码中并轻松部署。由于Docker Swarm可以在各种环境中使用,因此需求不受应用程序环境的约束。

  • 确保应用程序是孤立的:Docker Swarm注意每个容器与其他容器隔离并拥有自己的资源。可以部署各种容器以在不同堆栈中运行单独的应用程序。除此之外,当每个应用程序在自己的容器上运行时,Docker Swarm会清除应用程序删除。如果不再需要该应用程序,则可以删除其容器。它不会在您的主机操作系统上留下任何临时或配置文件。

  • 版本控制和组件重用:使用Docker Swarm,您可以跟踪容器的连续版本,检查差异或回滚到先前版本。容器重复使用前面层中的组件,这使得它们显着轻量级。

使用Docker Swarm的缺点

  • Docker依赖于平台:Docker Swarm是一个Linux激动人心的平台。虽然Docker支持Windows和Mac OS X,但它利用虚拟机在非Linux平台上运行。设计为在Windows上的Docker容器中运行的应用程序无法在Linux上运行,反之亦然。

  • 不提供存储选项:Docker Swarm不提供将容器连接到存储的无障碍方式,这是主要缺点之一。其数据量需要在主机和手动配置上进行大量即兴创作。如果您期望Docker Swarm解决存储问题,可能会以高效且用户友好的方式完成。

  • 监控不良:Docker Swarm提供有关容器的基本信息,如果您正在寻找基本的监控解决方案,那么Stats命令就足够了。如果您正在寻找高级监控,那么Docker Swarm永远不是一个选择。虽然有像CAdvisor这样的第三方工具可以提供更多监控,但使用Docker本身实时收集有关容器的更多数据是不可行的。


二、为了避免这些不足,可以使用Kubernetes

自动化容器部署,扩展和管理平台

当在多台机器上的多个容器中使用不同组件开发应用程序时,需要该工具来管理和协调容器。这只有在Kubernetes的帮助下才可行。

Kubernetes是一个用于管理集群环境中的容器化应用程序的开源系统。以正确的方式使用Kubernetes可帮助DevOps即服务团队自动扩展应用程序并以零停机时间进行更新。

使用Kubernetes的优点

  • 它的速度很快:在不停机的情况下持续部署新功能时,Kubernetes是一个完美的选择。Kubernetes的目标是以恒定的正常运行时间更新应用程序。它的速度通过您每小时可以运送的许多功能来衡量,同时保持可用的服务。

  • 遵循不可变基础架构的原则:以传统方式,如果多个更新出现任何问题,您就没有任何记录显示您部署了多少更新以及发生了哪个错误。在不可变基础结构中,如果您希望更新任何应用程序,则需要使用新标记构建容器映像并进行部署,从而使用旧映像版本终止旧容器。通过这种方式,您将获得一份记录,并了解您所做的事情以及是否有任何错误; 您可以轻松回滚到上一个图像。

  • 提供声明性配置:用户可以知道系统应该处于什么状态以避免错误。作为传统工具的源代码控制,单元测试等不能与命令式配置一起使用,但可以与声明性配置一起使用。

  • 大规模部署和更新软件:由于Kubernetes具有不可变的声明性,因此扩展很容易。Kubernetes提供了一些用于扩展目的的有用功能:

      水平基础架构缩放:在单个服务器级别执行操作以应用水平缩放。可以毫不费力地添加或分离atest服务器。自动扩展:根据CPU资源或其他应用程序指标的使用情况,您可以更改正在运行的容器数手动缩放:您可以通过命令或界面手动缩放正在运行的容器的数量复制控制器:复制控制器确保群集在运行条件下具有指定数量的等效窗格。如果存在太多pod,则复制控制器可以删除额外的pod,反之亦然。
    
  • 处理应用程序的可用性:Kubernetes检查节点和容器的运行状况,并在由于错误导致的盒中崩溃时提供自我修复和自动替换。此外,它在多个pod之间分配负载,以便在意外流量期间快速平衡资源。

  • 存储卷:在Kubernetes中,数据在容器之间共享,但如果pod被杀死,则会自动删除卷。此外,数据是远程存储的,因此如果将pod移动到另一个节点,数据将保留,直到用户删除为止。

使用Kubernetes的缺点

  • 初始过程需要时间:创建新进程时,您必须等待应用程序开始,然后才能供用户使用。如果要迁移到Kubernetes,则需要对代码库进行修改,以使启动过程更有效,这样用户就不会有糟糕的体验。

  • 迁移到无状态需要付出很多努力:如果您的应用程序是群集或无状态的,则不会配置额外的pod,并且必须在应用程序中重新配置。

  • 安装过程繁琐:如果您不使用Azure,Google或Amazon等任何云提供商,则很难在群集上设置Kubernetes。


三、Kubernetes vs. Docker Swarm:快速摘要

## Docker Swarm Kubernetes
开发者 Docker公司 谷歌
发布年份 2013 2014
公司使用 Bugsnag,Bluestem Brands,Hammerhead,Code Picnic,Dial once等。 Asana,Buffer,CircleCI,Evernote,Harvest,Intel,Starbucks,Shopify等
调节器 Manager Master
存储 Volumes Persistent and Ephermal
公共云服务提供商 Google,Azure,AWS,OTC Azure
兼容性 不那么广泛和可定制 更广泛和高度可定制
安装 易于设置 需要时间安装
容差率 低容错性 高容错性
大集群 速度被认为是强群集状态 即使在大型集群中也提供容器部署和扩展,而不考虑速度
负载均衡 当容器中的pod定义为服务时提供负载平衡 通过群集中的任何节点提供自动内部负载平衡
部署单位 任务
端口 发布的端口 端点
网络 覆盖 平面网络空间
社区 活跃的用户群,定期更新各种应用程序的图像 获得开源社区和谷歌,亚马逊,微软和IBM等大公司的大力支持
弱点 没有供应商的认证计划。大多数组织需要商业认证版本 倾向于开发人员而不是中央IT
容器设置 功能由Docker API提供并受其限制 客户端API和YAML在Kubernetes中是唯一的
可扩展性 即使在大型容器中也可以快速部署容器 以牺牲速度为代价为群集状态提供强有力的保证

四、Docker和Kubernetes是不同的,但不是竞争对手

如前所述,Kubernetes和Docker都在不同的级别工作,但两者可以一起使用。Kubernetes可以与Docker引擎集成,以执行Docker容器的调度和执行。由于Docker和Kubernetes都是容器协调器,因此它们都可以帮助管理数字容器并帮助实现DevOps。两者都可以自动执行运行容器化基础架构所涉及的大多数任务,并且是由Apache License 2.0管理的开源软件项目。除此之外,两者都使用YAML格式的文件来管理工具如何编排容器集群。当两者一起使用时,Docker和Kubernetes都是部署现代云架构的最佳工具。随着Docker Swarm的豁免,Kubernetes和Docker都相互补充。

Kubernetes使用Docker作为主要的容器引擎解决方案,Docker最近宣布它可以支持Kubernetes作为其企业版的编排层。除此之外,Docker还批准了经过认证的Kubernetes程序,该程序可确保所有Kubernetes API按预期运行。Kubernetes使用Docker Enterprise的功能,如安全映像管理,其中Docker EE提供图像扫描,以确保容器中使用的映像是否存在问题。另一个是安全自动化,其中组织可以消除低效率,例如扫描图像是否存在漏洞。


Kubernetes或Docker:哪个是完美的选择?

如果使用Kubernetes:

你正在寻找成熟的部署和监控选项
你正在寻找快速可靠的响应时间
你正在寻求开发复杂的应用程序,并且需要高资源计算而不受限制
你有一个非常大的集群

如果,使用Docker:

你希望在不花费太多时间进行配置和安装的情况下启动工具;
你正在寻找开发一个基本和标准的应用程序,它足够使用默认的docker镜像;
在不同的操作系统上测试和运行相同的应用程序对您来说不是问题;
你需要zdocker API经验和兼容性。

最后的想法:Kubernetes和Docker是朋友

无论选择Kubernetes还是Docker,两者都被认为是最好的并且具有相当大的差异。决定两者之间的最佳方法可能是考虑哪一个你已经知道更好,哪一个适合你现有的软件堆栈。如果您需要开发复杂的应用程序,请使用Kubernetes,如果你希望开发小型应用程序,请使用Docker Swarm。此外,选择合适的任务是一项非常全面的任务,完全取决于你的项目要求和目标受众。

论Docker swarm与Kubernetes孰强孰弱相关推荐

  1. Docker,Docker-Compose,Docker Swarm,Kubernetes之间的区别

    来源:https://blog.csdn.net/notsaltedfish/article/details/80959913 Docker Docker 这个东西所扮演的角色,容易理解,它是一个容器 ...

  2. Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes

    19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...

  3. mt6757处理器相当于骁龙_华为麒麟 810 处理器横向对比,相比高通骁龙 730 /骁龙 835 孰强孰弱?...

    近日,在华为发布会前夕,笔者一篇<麒麟 810 能否撼动高通中端霸主地位?>更多的分析了华为在芯片领域的市场进展和战略考量. 昨天下午,华为在武汉如期召开 nova 手机发布会,华为推出了 ...

  4. Docker Swarm vs Kubernetes

    本文讲的是Docker Swarm vs Kubernetes[编者的话]文章介绍了Docker Swarm和Kubernetes间的不同,以及优缺点. [3 天烧脑式容器存储网络训练营 | 深圳站] ...

  5. MappedByteBuffer VS FileChannel 孰强孰弱?

    前言 Java 在 JDK 1.4 引入了 ByteBuffer 等 NIO 相关的类,使得 Java 程序员可以抛弃基于 Stream ,从而使用基于 Block 的方式读写文件,另外,JDK 还引 ...

  6. 华东理工大学和暨南大学计算机考研,2016华东理工大学VS暨南大学 孰强孰弱?...

    华东理工大学好还是暨南大学好 首先,2016华东理工大学好还是暨南大学好是近日问得较多的问题之一,小伙伴们有的从暨南大学和华东理工大学的地理位置优势角度进行分析,有的从暨南大学和华东理工大学的强势专业 ...

  7. 苹果xsmax电池容量_两大旗舰对比,xsmax对比11promax,究竟谁孰强孰弱?

    今天从朋友圈里了解了苹果xsmax64g二手机价格4488,而11promax京东新价在2020年苹果11pro出来之后作为次旗舰它怎么样,值得下手吗? 在2019年网友的跑分测试中,iPhone X ...

  8. Android和wp7,Android 4.0与WP7孰强孰弱?

    据报道,国外媒体让Windows Phone 7与Android 4.0这两个系统进行了一次多方面的细节比较,想知道老外的观点和我们是不是一样吗,来看看吧(以下的"我"都是该文作者 ...

  9. 02年超级计算机算力4800h,两颗“芯”孰强孰弱?酷睿CPU对标R7-4800H

    近两年,笔记本电脑市场异常热闹,长期处于霸主地位的英特尔遇到了强力的挑战者锐龙.在游戏本市场上,锐龙推出4800H等几款4000系列处理器,是骡子是马,拉出来遛遛,于是就有了以下一系列的对标测试. 首 ...

最新文章

  1. 32linux下安装mysql5.7_【Linux】【MySQL】安装MySQL,版本5.7
  2. 网站优化中应该注意的细节有哪些?
  3. 计算机英语仲裁合词,仲裁 arbitration 法律英语常用词
  4. Leaflet文档阅读笔记-Using GeoJSON with Leaflet笔记
  5. android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...
  6. python动态导入模块_Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析...
  7. cin.getline()、getline()、gets()、cin.get(),getchar()的区别
  8. Nmap库ICMP主机探测
  9. 微信的服务器数量限制,微信时刻视频最多可以发几个 发布数量限制多少
  10. fiddler手机抓包教程及电脑断网的配置方法
  11. 下暴你的硬盘 超多游戏下载 不爆你找我! (二)
  12. MODBUS通讯协议和RS232以及RS485通讯协议有什么区别
  13. 计算机系统基础实验报告
  14. 三分钟熟悉进制转换与位运算
  15. 干眼症产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 挑战GPT-3以色列推出参数多30亿、词条多5倍的新语言模型
  17. 三电技术(电池(BMS)、电驱(MCU)、电控(VCU))
  18. 计算机数值方法——LU分解法(C++\Python代码实现)
  19. AEG-12A-02-D2-4-51 AEG-12A-02-D2-2-51控制HAWE型PLSF 系列多路比例阀放大器
  20. 新手的linux之旅 五、安装IE浏览器

热门文章

  1. 数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法、方案
  2. SQLite - 下载安装与使用(Command Line Shell For SQLite)
  3. Linux命令cat
  4. 人,与动物的本质区别,在哲学里说是制造和使用工具
  5. java.lang类在电脑哪个位置_Java中的java.lang.Class API 详解
  6. mysql slave 配置_【mysql5.6】 数据库主从(Master/Slave)配置记录
  7. tensorflow tf.keras.losses.MeanSquaredError 均方差损失函数 示例
  8. python pandas DataFrame 数据替换
  9. 二十二、插值查找算法
  10. 视频目标检测跟踪--Detect to Track and Track to Detect