Kubernetes技术与架构(一)

1     前言

本文主要从传统的软件系统分层架构的角度描述Kubernetes的技术与架构,主要包括服务层/存储层/网络层,由于Kubernetes涉及到容器化技术,因此其网络层涉及到虚拟化网络的技术实现原理,后续章节将展开详细的描述,下面首先介绍一些Kubernetes相关的概念。

1.1   CNCF

Kubernetes技术与架构(一)_第1张图片

CNCF属于非盈利性开源组织Linux基金会,CNCF的英文全称是Cloud Native Computing Foundation,CNCF的中文全称是云原生计算基金会。CNCF目前拥有很多应用于云计算基础设施的关键技术组件(Kubernetes是其中之一),目前CNCF凝聚来自全世界最优秀的开发者、终端用户以及供应商,它们共同维护世界上最大的开源开发者社区联盟。

1.2   云原生

云原生其英文全称是Cloud Native,CNCF对其作出如下定义:云原生技术能为企业组织提供在公有云、私有云以及混合云等现代化的动态环境中构建与运行可拓展的软件应用系统的能力。

云原生技术覆盖容器化、服务网格、微服务、不可变基础设施以及声明式APIs等相关技术领域。同时,云原生技术可以为企业组织创建弹性可伸缩的、可管理的以及可观测的松耦合型软件系统。

此外,结合云原生强大的自动化,云原生技术允许开发者以更小的工作量就能频繁地、可预测地发布重要的软件系统更新版本。在未来,CNCF的目标是不断标准化云原生技术以及维持一个以云原生技术为核心、以供应商为中心(从开源协议的角度称之为供应商中立)、能代表最先进的软件系统革新模式的开源生态系统。

1.3   公有云服务

泛指阿里云、腾讯云或者AWS等相关云服务提供商所提供的云技术或者云服务,其以计量收费方式公开服务于各种不同的个人消费者、开发者以及政企事业单位。

1.4   私有云服务

泛指个人消费者、开发者以及政企事业单位以自建型IDC的运营方式为自己提供云技术或者云服务,其以成本核算方式私自服务于个体或者企业的自有业务。

1.5   混合云服务

泛指消费者、开发者以及政企事业单位根据自身业务需要,综合运用公有云以及私有云提供的云技术或者云服务为个体或者企业的自有业务服务。

2     Kubernetes定义

2.1   基本概念

Kubernetes是一个可移动或可拓展的开源平台,使用该平台可以管理大规模的容器化的工作负载或服务,平台提供声明式配置或者声明式自动化特性。目前,Kubernetes已经发展成为一个大而且快速增长的生态系统,其所支持的服务、技术以及工具无处不在。

Kubernetes的命名取自于希腊,其寓意是舵手或者飞行员。Kubernetes又名K8s,是一个缩略语,首字母与末字母中间包括8个英文字符,所以简称是K8s。

Kubernetes是由谷歌企业在2014年开源,其所包含的技术覆盖谷歌企业15年的最佳研发实践,谷歌企业使用Kubernetes技术与架构运作着大规模的生产级别的工作负载。

2.2   架构演进

Kubernetes技术与架构(一)_第2张图片

从上图提供的部署架构演进历程,从以下三个阶段展开描述:

2.2.1 传统部署(Traditional deployment )

早期,企业直接在物理服务器上部署业务应用,在该使用场景下,企业无法为物理服务器上运行的应用(可能多个应用)定义资源边界,这些应用共享同一台物理服务器上的所有资源,包括内存、处理器、磁盘等资源。因为系统资源竞争,其中一个应用可能占用大部分的资源而其他应用只占用小部分资源,也可能一些应用因为最终无资源可占用而引起应用停止运作。

为解决资源边界定义以及资源竞争的问题,可以将这些应用分开部署在多台物理服务器上,但是这种解决方案不利于系统拓展以及节约资源,也增加了企业的运作成本以及维护成本。

2.2.2 虚拟化部署(Virtualized deployment)

虚拟化部署架构解决了传统部署架构的资源边界问题,企业可以在一台物理服务器上运行多个虚拟机,每个虚拟机是一个虚拟化的独立主机,这些虚拟机使用虚拟化技术合理分配一台物理主机上内存、处理器、磁盘等资源,并且虚拟机之间是安全隔离的,不存在资源竞争问题。

使用虚拟化技术,虚拟机既能解决资源安全隔离的问题,并且准确地定义了一台物理服务器上的资源边界,又能最大化物理资源的利用率。独立部署在每个虚拟机上的应用可以根据业务环境实际需求而增加、删除、更新所依赖的应用资源,也不会影响其他虚拟机上其他应用。

从以上的分析可知,降本增效是虚拟化技术所具备的最大特征。

2.2.3 容器化部署(Container deployment)

容器化技术类似于虚拟机技术,也是使用虚拟化技术以一种更加宽松的实现方式,为运行在同一台物理服务器上的不同应用准确地定义资源边界。也就是,容器化技术为应用提供更加灵活、更加宽松的方式安全地分享同一台物理服务器上的内存、处理器、磁盘等资源。

由于容器化技术是利用云计算基础设施解耦应用的部署,所以容器化的应用可以在云计算基础设施或者分布式操作系统之间实现可移动式的部署。

目前,容器化技术之所以流行,是因为其提供以下好处:

  • 敏捷应用的创建以及部署,相比于虚拟机技术,容器化技术提供的镜像服务更加易用以及高效

  • 持续开发、持续集成、持续部署,能提供可靠的、频繁的容器镜像构建与部署,并且在失败恢复的使用场景中可以快速实行容器镜像的版本回滚(被称之为容器镜像的不可变性)

  • 开发运维(devops)版本独立发布,能提供不同环境下的容器镜像版本,其包括开发环境版、测试环境版、生产环境版或者其他环境版,可以高效地在不同环境中部署不同的版本

  • 可观察性,提供操作系统级别的监控以及统计信息展示,包括应用的健康状态信息与其他信号

  • 环境一致性,提供开发、测试、生产不同环境中一致性的体验,也就是,运行在移动笔记本或者平板电脑中与运行在云环境中的体验保持一致

  • 跨平台,可以在云环境或者分布式操作系统之间实现可移动式部署,支持Ubuntu、RHEL、CoreOS、 自建型IDC(私有云)、公有云或者其他云环境中部署运行

  • 以应用为中心的管理体系,相比于虚拟机技术,容器化技术将虚拟化技术的抽象级别提升到更高的层次,容器化技术仅在物理主机上定义一个逻辑资源的集合供应用共享使用

  • 支持松耦合、分布式、弹性、细粒度的微服务,大应用被分割成小而且灵活的微服务,被独立地、动态地、分片式地部署与管理

  • 资源隔离,可预测应用性能

  • 资源利用,高效而且密集型

(未完待续)

你可能感兴趣的:(Kubernetes技术与架构,kubernetes,架构,云原生)