什么是kubernetes?
首先,我们先看如下两张图片:
对比docker和kubernetes的图标,我们会发现,容器的图标是一个鲸鱼,这条金鱼的背上驮着一个个的集装箱。这条鲸鱼就代表了容器运行的环境,在实际环境中我们可以把它类比成一个装了docker环境的操作系统,这个操作系统既可以是windows的操作系统,又可以是linux的操作系统,这一个个的集装箱就是实际环境中的容器-container。如果不知道docker是什么,可以参考:http://www.dockerinfo.net/document
从Kubernetes本身的定位来看,它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。kubernetes一词,来源于希腊语,其意思为操作员,飞行员。Kubernetes图标是一个舵,在我们的常识中,舵是用来操作船只的。其图标也很好的展示了其作为容器集群管理工具的这一本质功能。
kubernetes可以做什么?
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
kubernetes可以用来,进行容器集群的维护管理,实现容器应用的自动化部署。通过容器的快速启动实现应用的快速扩展。通过其提供的滚动升级等能力实现无缝升级应用系统。
kubernetes不是什么?
- Kubernetes并不是传统的PaaS(平台即服务)系统。
- Kubernetes不限制支持应用的类型,不限制应用框架。限制受支持的语言runtimes (例如, Java, Python,
Ruby),满足12-factor applications 。不区分 “apps” 或者“services”。
Kubernetes支持不同负载应用,包括有状态、无状态、数据处理类型的应用。只要这个应用可以在容器里运行,那么就能很好的运行在Kubernetes上。 - Kubernetes不提供中间件(如message
buses)、数据处理框架(如Spark)、数据库(如Mysql)或者集群存储系统(如Ceph)作为内置服务。但这些应用都可以运行在Kubernetes上面。 - Kubernetes不部署源码不编译应用。持续集成的 (CI)工作流方面,不同的用户有不同的需求和偏好的区域,因此,我们提供分层的
CI工作流,但并不定义它应该如何工作。 - Kubernetes允许用户选择自己的日志、监控和报警系统。
- Kubernetes不提供或授权一个全面的应用程序配置 语言/系统(例如,jsonnet)。
- Kubernetes不提供任何机器配置、维护、管理或者自修复系统。