# 什么是Kubernetes

Kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明性配置和自动化。它拥有庞大,快速发展的生态系统。
# 应用部署的演化进程

1. 传统部署时代
传统的部署时代,多个应用运行在一个服务器之上,这样一来无法为物理服务器中的应用程序定义资源边界,这会导致资源分配问题。例如,如果在物理服务器上运行多个应用程序,则可能存在一个应用程序占用大部分资源的情况,因此其他应用程序将表现不佳。
解决方案是在不同的物理服务器上运行每个应用程序,
但是由于资源未得到充分利用,这并没有扩展,组织维护许多物理服务器的成本很高
2. 虚拟化部署时代:作为解决方案,引入了虚拟化。它允许您在单个物理服务器的CPU上运行多个虚拟机(VM)。虚拟化允许应用程序在VM之间隔离,并提供一定程度的安全性,因为另一个应用程序无法自由访问一个应用程序的信息。
3. 容器部署时代:容器类似于VM,但它们具有宽松的隔离属性,可在应用程序之间共享操作系统(OS)。容器被认为是轻质的。与VM类似,容器具有自己的文件系统,CPU,内存,进程空间等。当它们与底层基础架构分离时,它们可以跨云和OS分发进行移植。
# 为什么我需要Kubernetes以及它能做什么
在生产环境中,我们的容器交给它管理。Kubernetes为您提供了一个弹性运行分布式系统的框架。它负责您的扩展要求,故障转移,部署模式等。
* 服务发现和负载平衡
* 存储编排
* 自动部署和回滚
* 自动装箱(可以指定容器的资源,比如多少个cpu等)
* Kubernetes重新启动失败的容器,并有容器监控通知
* Kubernetes允许您存储和管理敏感信息,例如密码,OAuth令牌和ssh密钥。