Kubernetes简介

参考:https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

Kubernetes是什么

Kubernetes是一个可移植的、可扩展的、开源的平台解决方案,用于编排容器和管理容器化的工作负载和服务。

Kubernetes的名称源于希腊语,意为“舵手”。Google在2014年将Kubernetes项目开源,此后,Kubernetes一炮而红,迅速成为了当今最为流行和成功的开源项目。

Kubernetes之所以如此成功,是因为它让软件应用部署和运行产生了翻天覆地的变化。

传统部署时代

在IT发展早期,应用程序都运行在物理服务器上,使用者无法为应用程序定义资源边界,如果在同一台物理服务器上运行多个应用程序,很有可能会因某个应用占用大量资源而导致资源分配问题,为了避免这种问题,使用者只能将不同应用程序分别运行在不同的物理服务器上,这导致资源的浪费。

虚拟化部署时代

随着虚拟化解决方案的出现,使用者可以将单个物理服务器拆分成多个虚拟机来进行资源的再分配,虚拟化允许应用程序在虚拟机之间隔离,并提供一定程度的安全保障。

虚拟化技术的出现更好地利用了物理服务器上的资源,并且提供了更好的伸缩性。

容器部署时代

容器是轻量级的虚拟化技术,运行在容器中的应用程序可以共享操作系统,因此,容器比虚拟机占用的资源更少。此外,容器还有一些优点是虚拟机不具有的:

  • 应用程序的敏捷部署
  • 持续开发和集成
  • 分离应用程序和基础环境
  • 跨开发、测试和生产的环境一致性
  • 跨操作系统、本地和云的可移植性
  • 松耦合、分布式、弹性伸缩的微服务
  • 更高效率、高密度的资源利用

那么,既然容器这么厉害,我们又为什么要使用Kubernetes?

我们说过,Kubernetes是容器的编排工具,容器中运行应用程序,如果一个容器故障,我们需要手动启动另一个容器代替它,而Kubernetes能够代替我们完成这种运维工作。

Kubernetes为我们提供了:

  • 服务发现和负载均衡:Kubernetes可以使用Service或Ingress将容器公开,如果容器的负载很高, Kubernetes可以通过弹性伸缩的形式扩充更多容器并实现负载均衡

  • 资源编排:Kubernetes可以编排应用程序所需的资源,例如容器、网络、存储,如果Kubernetes提供的资源不足以满足你的需要,你还可以自定义资源(CRD)

  • 自动部署和回滚:Kubernetes通过和解循环可以快速将容器应用的实际状态想期望状态靠拢

  • 自动完成装箱计算:Kubernetes允许使用者指定每个容器所需的CPU和内存

  • 自我修复:Kubernetes可以自动重启故障容器、更新替换容器

  • 密钥与配置管理:Kubernetes有专门的的资源存储配置信息和敏感信息,使用者可以在不重建容器镜像的情况下更新配置

Kubernetes不是什么

Kubernetes不是传统的PaaS(平台即服务)。Kubernetes提供了PaaS产品共有的一些功能,例如部署、扩展、负载均衡、日志和监控等。但是,Kubernetes不是单体系统,大多数组件是可选和可插拔的。可以说,Kubernetes提供了构建PaaS平台的基础,但是在很多地方保留了用户的选择和灵活性。

Kubernetes与PaaS平台的区别在于:

  • 不限制支持的应用程序类型:Kubernetes支持多种多样的应用程序,只要应用程序可以在容器中运行,那么它就可以在Kubernetes上运行

  • 不部署源代码,也不构建应用程序:持续集成、测试和部署都取决于使用者自己

  • 不提供应用程序级别的服务作为内置服务:比如中间件、数据库、数据处理框架、缓存、分布式存储等,这些组件可以在Kubernetes上运行,并且可以被运行在Kubernetes上的应用程序使用

  • 不指定日志、监控等Addons解决方案:使用者可以根据自己的喜好来选择合适的组件

  • 不指定语言:Kubernetes提供了声明式API,这种API可以被任何能够调用HTTP的编程语言使用

posted @ 2020-12-21 14:03  Freedom2887  阅读(144)  评论(0)    收藏  举报