kubernetes:
由于非常好的理由,开发和部署原生云应用程序已变得非常流行。 允许快速部署并持续交付错误修复和新功能的过程具有明显的优势,但是没有人谈论过鸡到蛋的问题:如何从这里到达那里? 从头开始构建基础架构和开发流程以开发和维护云原生应用程序是一项艰巨且耗时的任务。
Kubernetes是运行容器化工作负载的相对较新的平台,可以解决这些问题。 Kubernetes最初是Google内部的一个项目,2015年捐赠给了Cloud Native Computing Foundation ,吸引了来自全球开源社区的开发人员。 Kubernetes的设计基于在生产和开发工作负载上运行15年的经验。 由于它是开源的,因此任何人都可以下载和使用它并实现其好处。
那么为什么对Kubernetes如此大惊小怪呢? 我相信,它在诸如基础架构即服务(IaaS)解决方案(如OpenStack)和完整的平台即服务(PaaS)资源之间达到了最佳位置,在该资源中,下层运行时实施完全由供应商控制。 Kubernetes具有两全其美的优势:管理基础架构的抽象,以及深入研究裸机进行故障排除的工具和功能。
IaaS与PaaS
大多数人将OpenStack归类为IaaS解决方案,在该解决方案中,物理资源池(例如处理器,网络和存储)在不同用户之间分配和共享。 用户之间的隔离是使用基于硬件的传统虚拟化来实现的。
OpenStack的REST API允许使用代码自动创建基础结构,但这是问题所在。 IaaS产品的输出是更多的基础架构。 一旦创建了额外的基础架构,就没有太多的服务来支持和管理这些基础架构。 经过一定时间后,管理OpenStack产生的低级基础结构(例如服务器和IP地址)变得很繁重。 一个众所周知的结果是虚拟机(VM)蔓延,但是相同的概念适用于网络,加密密钥和存储卷。 这为开发人员留下了更少的时间来构建和维护应用程序。
与其他基于集群的解决方案一样,Kubernetes在单个服务器级别运行以实现水平扩展。 可以轻松添加新服务器,并在硬件上立即安排工作负载。 同样,当服务器没有得到有效利用或需要维护时,可以将其从集群中删除。 编排活动(例如作业调度,健康监控和维护高可用性)是Kubernetes自动处理的其他任务。
网络是在IaaS环境中难以可靠编排的另一个领域。 服务之间的IP地址通信以链接微服务可能特别棘手。 Kubernetes实现IP地址管理,负载平衡,服务发现和DNS名称注册,以在群集内提供无头痛的透明网络环境。
专为部署而设计
一旦创建了运行应用程序的环境,便可以部署它。 可靠地部署应用程序是容易完成但不容易完成的任务之一-丝毫也不为过。 Kubernetes与其他环境相比具有的巨大优势是部署是一流的公民。
使用Kubernetes命令行界面(CLI)的命令只有一个,它描述了应用程序并将其安装在集群上。 Kubernetes实现了从初始部署,推出新版本以及回退新版本的整个应用程序生命周期,这是在出现问题时的一项重要功能。 正在进行的部署也可以暂停和恢复。 拥有现有的内置工具和对应用程序部署的支持(而不是自己构建部署系统)的优势不能被夸大。 Kubernetes用户不必重新发明应用程序部署轮,也不必发现这是一项艰巨的任务。
Kubernetes还具有监视正在进行的部署状态的功能。 尽管您可以像部署过程本身一样在IaaS环境中编写此代码,但是在遇到各种极端情况时,这是一个非常困难的任务。
专为DevOps设计
随着您获得更多有关为Kubernetes开发和部署应用程序的经验,您将走Google和其他公司之前的道路。 您会发现有几种Kubernetes功能对于有效开发和解决多服务应用程序至关重要。
首先,Kubernetes能够轻松地将日志或SSH(安全外壳)检查到正在运行的服务中的能力至关重要。 通过单个命令行调用,管理员可以检查在Kubernetes下运行的服务的日志。 这听起来像是一个简单的任务,但是在IaaS环境中,除非您已经进行了一些工作,否则这并不容易。 大型应用程序通常具有专门用于日志收集和分析的硬件和人员。 登录Kubernetes可能不会替代功能齐全的日志记录和指标解决方案,但它提供了足以进行基本故障排除的功能。
其次,Kubernetes提供内置的秘密管理。 从头开始开发自己的部署系统的团队所知道的另一个难题是,很难将敏感的数据(例如密码和API令牌)安全地部署到VM。 通过使秘密成为一等公民,Kubernetes可以阻止您的团队发明自己的不安全的,错误的,错误的秘密分发系统,或者仅对部署脚本中的凭据进行硬编码。
最后,Kubernetes中有许多功能可用于自动扩展,负载平衡和重新启动应用程序。 同样,这些功能吸引了开发人员在使用IaaS或裸机时编写的目标。 服务定义中声明了Kubernetes应用程序的扩展和运行状况检查,并且Kubernetes确保正确数量的实例正在运行且运行状况良好。
结论
IaaS和PaaS系统之间的巨大差异,包括PaaS可以节省大量的开发和调试时间。 作为PaaS,Kubernetes实现了一系列有效的功能,可帮助您开发,部署和调试云原生应用程序。 它的体系结构和设计代表了数十年来之不易的经验,您的团队可以免费使用这些经验。
翻译自: https://opensource.com/article/17/6/introducing-kubernetes
kubernetes: