阅读时间:5分钟
也许你已经听到很多关于Kubernetes。如果你的团队已经不使用它,你可能有一个问题:究竟什么是Kubernetes和它与容器?
开发人员使用Kubernetes部署速度更快,可以专注于编写应用程序。与Kubernetes有两种类型的效率可以提高:开发效率和运维效率。团队运行在集群Kubernetes爱他们有更少的问题担心。他们不需要管理基础设施或操作系统。
Kubernetes,有时缩写为美丽是技术的标准化自动化云提供商的最受欢迎的功能。传统上,基础设施还没有很容易自动化。在这篇文章中,我将解释为什么Kubernetes革新DevOps的工作方式。
一个自然的适合DevOps
DevOps,如你所知,是传统的进化基础设施团队。DevOps的主要思想:嫁给软件工程方法(例如敏捷规划,源码控制,代码评审,设计模式与传统基础设施技术技能)。在道:“让我们做基础设施团队更像是软件团队!”的理念:DevOps概念的创建以来,我们已经看到重大影响的软件团队DevOps团队是如何运作的。
虽然软件团队已经收获的好处标准化的软件开发平台多年,直到最近,DevOps开始经历同样的爱。
pre-Kubernetes世界,不仅基础设施团队必须设计和实现功能监测和自动伸缩,但根据软件团队的决策,他们也必须有一个更深层次的软件堆栈的知识。
的历史挑战
看软件团队作为一个例子,让我们走过软件环境的挑战与混合使用Java和PHP应用程序。我们将看到如何标准化的出现允许开发人员集中精力编写好的代码。
Java是专门设计一个面向对象语言与同伴规范企业使用(JEE),由著名的太阳公司。基础架构团队合作在一个Java堆栈最有可能知道Tomcat, Maven, Log4j,战争部署包和JVM内存设置。PHP作为一种脚本语言开始,演变成面向对象的荣耀。栈上的PHP团队必须了解mod_php, php-fpm工人,Apache或Nginx和PHP作曲家。两个软件和基础设施团队会花相当多的时间来设置初始环境。
发布的Java服务器规范包括应用程序捆绑。Java现在有明确的规范与web应用程序存档(WAR文件)。PHP和Ruby等其他脚本语言从未真正定居在一个web应用程序归档格式和许多工程师在使用TAR包,然后爆炸在部署的文件。基础设施团队将部署战争和TAR文件,处理不同的Java服务器和Nginx,分别。正如你所看到的,刚刚一个应用程序启动和运行需要一个体面的理解相当多的技术。
在早期的空空的气体瓶服务器使用码头工人技术,软件团队发现容器是一个很好的方法来创建本地开发环境。孤立的应用程序容器的承诺意味着,现在是一个标准的“应用程序包”的形式一个图像。然而,在早期,使用码头工人在生产并非微不足道的或稳定。作为基础设施团队成为DevOps团队,他们好好利用他们的软件工程技能努力试图解决基础设施问题的代码。
很多方法做同样的事情
之前生产集装箱化,DevOps团队不得不处理基本的基础设施和为每个项目设计问题。一些例子包括部署新代码,升级节点和应用推广。没有正确的方式去做。一些DevOps工程师可能更喜欢shell脚本,别人会更喜欢使文件。Ubuntu纯粹主义者可能更喜欢使用操作系统依赖的软件包管理器apt-get。
一些常见的设计问题,最终将被Kubernetes:
- 云提供商提供图像的情况下,像AWS AMI。我们应该应用程序捆绑成一个AMI烤吗?AMI应该香草和接收一个新包吗?
- 一个EC2实例可以运行命令/用户和数据的AMI后烤。我们多少逻辑放在/用户和数据的旋转时一个EC2实例吗?
- 部署包可能需要rcp或scp或使用操作系统的包管理器。我们使用哪一个?
- 你想如何构建健康检查配置滚动部署?
这些决策通常是独特的设计和需要规划和应用程序代码的理解。在大多数情况下,这些被认为是大型DevOps项目花了很多时间来设计和构建。
Serverless容器制造Serverless Kubernetes成为可能
serverless容器应用程序包。甚至比一个包,因为它有它的侦听器的形象!这个主要问题解决了,可以有一个未来,DevOps不需要非常熟悉的应用程序代码或堆栈为了保持系统正常运行?在这一愿景,只要应用程序图像可以运行在一个容器,DevOps可以处理它。
通过结婚的逻辑构建和运行服务器代码创建一个容器形象,DevOps将不再是在诸如处理失败的业务应用程序的构建,爆炸后WAR文件部署应用程序的包或执行post-build脚本。这些都是发生在构建的图像,这是单一单元DevOps从软件团队“接收”。理想情况下,你的CI服务器把你的应用程序构建映像存储库。
拥抱的使用技术像码头工人图像,DevOps现在可以规范这些图像如何部署,高档,监测…我认为你懂的。这就是Kubernetes发挥作用了。谷歌使用版本的Kubernetes 15年的经验,Borg,在生产中。
有一个常见Kubernetes与亚马逊的弹性容器服务(ECS)问题在过去。一会儿,ECS被视为一个可行的选择但是DevOps团队在世界各地已经接受了开放源码特性,可插入性和Kubernetes cloud-agnostic愿景。
Kubernetes能做什么呢?
Kubernetes显著减少或消除自定义算法DevOps函数如下:
- 设置环境变量
- 创建集群
- 服务器监控
- 负载平衡
- 节点扩展(升级,缩小规模,伸缩)
- auto-failover
- 滚动的部署
Kubernetes市场本身“container-centric管理环境,协调计算,网络和存储基础设施代表用户工作负载”。因为它不是一个平台作为一种服务,你可以使用任意组合的特性,甚至插件附加可选特性。Kubernetes,本身就是软件。
新术语
根据Kubernetes文档,技术可以帮助你安排集装箱,它实际上可以不再需要集装箱编配因为这一系列事件。
在Kubernetes世界,部署是最小的组件对象模型。你的集装箱,您的应用程序,是一个部署在一个圆荚体。Pod可能配置有多个容器,例如当microservice依赖另一个microservice。当思考Kubernetes如何处理应用程序部署,豆荚是基本单位。每个吊舱被分配一个唯一的IP地址。豆荚可以组织在逻辑组和暴露在一个IP地址服务。有时服务是用于创建外部负载平衡器。
豆荚上运行工人节点;这些是你的物理或虚拟机。在AWS的世界里,您将定义节点组EC2实例。节点分为集群。
结论
拥抱Kubernetes DevOps的团队是一个好主意。只要你的软件团队代理应用程序,你可以快速开始接受这些新标准。不需要重新发明轮子的节省时间将会十分可衡量的。产品SpotInst海洋可以帮助你开始过渡基础设施Kubernetes以极大的节约成本。利用现货情况下,海洋给你使用谷歌的优点,亚马逊和微软云提供商与Kubernetes控制器,所有托管在节约成本的现货产品实例。
