从高空俯视kubernetes
概述
本篇文章首先简要介绍kubernetes的基本面貌,让不熟悉kubernetes的读者对其有一个轮廓上认知,然后再从宏观上结合个人理解来分析kubernetes在软件领域中的定位。
适合的读者
kubernetes初级玩家
什么是kubernetes?
首先来看看官网对kubernetes的介绍 — kubernetes是一个具有自动化部署、自动化扩缩容、容器化应用管理能力的 开源容器编排引擎1。这句话浓缩了许多kubernetes里面的许多概念,初学者理解起来可能不是很友好。为了帮助理解,我们从中抽取两个角色:容器、编排引擎(kubernetes),所以这句话其实表达了kubernetes与容器之间的关系,即可以理解kubernetes是一种管理容器的方法论。
什么是容器?
我们可以把容器比作一个个独立的工人,每个工人具有一定的劳动能力(容器具有一定的计算能力),具有特定的职责(容器里面有不同的应用),能够通过劳动产出劳动成果(容器通过内部的应用以及其计算能力完成业务逻辑),当我们需要高效完成一个大型工程时,仅仅靠堆人力,增加工人的数量自然不够,还需要一个管理团队依据一定的方法论对工人进行组织管理、合理分工,才能高效完成任务,这个管理团队的职责便如同kubernetes的职责。
容器与虚拟机在应用上有什么不同?
1.容器化代表技术:docker、podman,虚拟化代表技术: kvm、vmware
2.容器启动非常快(通常不包含内核模块,镜像非常精简),可以达到毫秒级启动,虚拟机启动往往要几十秒(包含完整的操作系统,较为臃肿)
3.容器启动后占用资源很少,虚拟机启动后占用资源大
4.容器镜像可以很小,小的容器只有几M左右,虚拟机镜像大,通常达到GB级别
5.虚拟机关注的是基础设施问题,容器关注的是微服务应用问题,两者都可以提高资源的利用率2
6.容器安全性差(共享宿主机内核,镜像来源不统一等原因造成),虚拟机安全性较高(完全独立内核,镜像来源统一)
还有其他的一些差异在后续随着我们对容器化理解的深入后再做介绍
有哪些与kubernetes相似的容器编排或资源编排技术?
- Apache mesos :相对于kubernetes,mesos的社区活跃度较低,但有apple,twiter等大公司支持,kubernetes社区活跃度非常高,主要有google公司支持,在国内特别是近几年kubernetes在阿里,京东等各大公司应用广泛
- Apache Yarn :大数据hadoop体系使用较多,功能较为简单,其他领域几乎很少使用
- Docker swarm::docker公司的容器编排系统,不太适合较为复杂的容器编排场景
- Openshift:redhat公司推出的企业级Paas平台,功能完整成熟,扩展性上没有kubernetes灵活
- 其他:参考 Compare Container Orchestration Software 3
kubernetes可以在哪些场景使用?
- 微服务编排,结合云原生服务治理等多种优秀开源组件能够对大量微服务进行编排治理
- 大数据计算,当前主流大数据计算引擎如spark,flink等都已经原生支持在kubernetes上进行调度
- 构建容器云平台,亚马逊、腾讯云、阿里云等公有云上都已经提供kubernetes托管平台,能够在云上快速创建kubernetes集群
- 构建serverless平台,knative支持在kubernetes中快速构建serverless应用
- AI计算,当前AI分布式训练框架如horovod等都已经支持kubernetes调度,且kubernetes支持对GPU资源进行调度,结合knative以及serving技术能够快速对外发布模型服务
- 边缘计算,kubernetes精简版本k3s能够支持在边缘端进行部署和调度,可用于物联网设备以及弱网环境
- 其他…
创作中,欢迎提出相关建议~