Kubernetes概述
< 返回列表时间: 2018-05-17来源:OSCHINA
什么是Kubernetes?
Kubernetes是一个便携式的、可扩展的开源平台,用于管理容器化的工作负载和服务,这有助于声明式配置和自动化。它有一个巨大的,快速增长的生态系统。Kubernetes的服务、支持和工具被广泛使用。
2014年,谷歌开源了Kubernetes项目。Kubernetes建立在 谷歌大规模运行生产工作负载的十年半的经验之上 ,并结合社区的最佳思想和实践。
为什么我需要Kubernetes,它能做什么?
Kubernetes有许多特性。它可以被认为是:*一个容器平台*一个微服务平台*一个移动的云平台,还有更多。
Kubernetes提供了一个以容器为中心的管理环境。它代表用户工作负载协调计算、网络和存储基础设施。这提供了许多简单的平台作为服务(PaaS),以基础设施的灵活性作为服务(IaaS),并支持跨基础设施提供商的可移植性。
Kubernetes是怎样一个平台的?
尽管Kubernetes提供了很多功能,但是仍然有一些新的场景会从新特性中受益。应用程序特定的工作流可以简化,以加速开发人员的速度。最初可以接受的特别编排通常需要在规模上实现健壮的自动化。这就是为什么Kubernetes也被设计为构建组件和工具的生态系统的平台,使其更易于部署、扩展和管理应用程序。
标签 授权用户组织他们的资源。 注释 使用户可以用定制的信息来装饰资源,以方便他们的工作流程,并为管理工具提供一种方便的检查点状态的方法。
此外, Kubernetes控制plane 是建立在开发人员和用户可用的相同 api 之上的。用户可以编写自己的控制器,比如 调度程序 ,使用 自己的api ,这些api可以被通用 命令行工具 作为目标.
这个 设计 使许多其他系统能够在Kubernetes之上构建。
Kubernetes不做的事
Kubernetes并不是一个传统的、包罗万象的PaaS(平台作为服务)系统。由于Kubernetes在容器级别而不是在硬件级别上运行,所以它提供了一些通常适用的特性,比如部署、扩展、负载平衡、日志记录和监视。然而,Kubernetes并不是单一的,这些默认的解决方案是可选的和可插入的。Kubernetes为构建开发者平台提供了构建模块,但保留了用户的选择和灵活性。
Kubernetes: 不限制所支持的应用程序的类型。Kubernetes的目标是支持极其多样化的工作负载,包括无状态、有状态和数据处理工作负载。如果一个应用程序可以在容器中运行,它应该在Kubernetes上运行得很好。 不部署源代码,也不构建应用程序。持续集成、交付和部署工作流是由组织文化和偏好以及技术需求决定的。 不提供应用程序级的服务,例如中间件(例如消息总线)、数据处理框架(例如Spark)、数据库(如mysql)、缓存和集群存储系统(例如Ceph)作为内置服务。这样的组件可以在Kubernetes上运行,也可以通过在Kubernetes上运行的应用程序访问,比如开放服务代理。 不指定日志、监视或警报解决方案。它提供了一些集成作为概念的证明,以及收集和导出度量的机制。 不提供或授权配置语言/系统(例如, jsonnet )。它提供了一个声明性的API,它可以被任意形式的声明性规范作为目标。 不提供或采用任何综合的机器配置、维护、管理或自修复系统。
此外,Kubernetes不只是一个编排系统。事实上,它消除了编排的需要。编排的技术定义是执行定义的工作流:首先是a,然后是B,然后是C。相反,Kubernetes由一组独立的、可组合的控制过程组成,这些过程不断地将当前状态驱动到所提供的期望状态。怎么从A到C都不重要。也不需要集中控制。用它得到一个更容易使用、更强大、更健壮、更有弹性和可扩展的系统。
为什么使用容器?
比对以下图片可找到你应该使用容器的理由

部署应用程序的旧方法是使用操作系统包管理器在主机上安装应用程序。这样做的缺点是将应用程序、配置、库和生命周期与主机操作系统纠缠在一起。
新的方法是基于操作系统级虚拟化(而不是硬件虚拟化)部署容器。这些容器彼此隔离,从主机上分离:它们有自己的文件系统,它们不能看到彼此的进程,而且它们的计算资源使用也可以被限制。它们比vm更容易构建,而且由于它们与底层基础结构和主机文件系统之间的解耦,它们在云和OS分布中是可移植的。
因为容器小而快速,所以一个应用程序可以在每个容器映像中打包。这种一对一的应用程序对图像的关系释放了容器的全部好处。使用容器,可以在构建或发布时创建不可变容器映像,而不是部署时间,因为每个应用程序不需要与应用程序堆栈的其余部分组成,也不需要与生产基础设施环境结合。在构建或发布时生成容器映像,可以使一个一致的环境从开发进入生产。类似地,容器比VMs更加透明,这有助于监视和管理。当容器程序的生命周期由基础结构管理而不是由容器内的程序管理器隐藏时,这一点尤其正确。最后,对于每个容器使用单个应用程序,管理容器就等于管理应用程序的部署。
容器的好处摘要: 敏捷的创建与部署: 与VM镜像使用相比,增加了容器镜像创建的方便性和效率。 持续开发、集成和部署: 提供可靠和频繁的容器镜像构建和部署,快速和简单的回滚(由于镜像的不变性)。 Dev和Ops分离的关注: 在构建或发布时间而不是部署时间创建应用程序容器镜像,从而将应用程序与基础结构解耦。 可观察性: 不仅仅是表面的信息和度量,还包括应用程序的健康和其他信号。 跨开发、测试和生产的环境一致性 :在笔记本电脑上运行和在云中运行一样。 可在 OS distribution 与云之间移植: 在Ubuntu、RHEL、CoreOS、on-prem、谷歌Kubernetes引擎和其他任何地方运行。 以应用程序为中心的管理: 提高抽象级别在虚拟硬件上运行OS以使用逻辑资源在OS上运行应用程序。 松散耦合,分布式,弹性,自由的 微服务: 应用程序被分割成更小的独立的块,并且可以动态地部署和管理,而不是在一个大型的单用途机器上运行一个庞大的整体堆栈。 资源隔离: 可预测的应用程序的性能。 资源利用: 高效率和密度。
Kubernetes是什么意思?K8s?
Kubernetes这个名字源于希腊语,意思是舵手或领航员,是总督和 控制论 的根源。K8s是用8来替换“ubernete” 这8个字母而得到的缩写。
热门排行