Kubernetes,通称为k8s,是用于自动部署、扩展和管理容器化应用程序的开源系统。Google设计并捐赠给Cloud Native Computing Foudation(现今属于Linux基金会)使用,旨在提供“跨主机集群的自动部署、扩展及运行应用程序容器的平台”。它支持一系列的容器工具,包括Docker等。CNCF于2017年宣布首批Kubernetes认证服务提供商(KCSPs),包括IBM、MIRANTS、华为、inwinSTACK迎栈科技等服务商。

历史

Kubernetes由Joe Beda、Brendan Burns和Craig McLuckie创立,在2014年由google首次对外宣布。

它的开发和设计深受Google的Borg系统影响,许多顶级贡献者之前就是Borg系统的开发者。在Google内部,Kubernetes的原始代号曾经是Seven,也对应标识中的7个轮辐。

2015年7月,Kubernetes 1.0发布;同时Google与Linux基金会组件CNCF,并将Kubernetes作为种子技术提供。

Rancher Labs在其Rancher容器管理平台中包含Kubernetes发布版,而其他公司也在其产品中使用kubernetes,如Red Hat的OpenShift,CoreOS的Tectonic,IBM的IBM云私有产品等。

设计

Kubernetes定义了一组构建块,可以共同提供部署、维护和扩展应用程序的机制。

组件设计为松耦合和可扩展的,满足不同的工作负载。而可扩展性很大程度上由Kubernetes api提供。

Pod

Kubernetes基本调度单元称为Pod。一个Pod一般包含一个或多个容器。在k8s中,每个pod都被分配唯一的集群内IP地址,从而避免应用程序端口冲突。Pod可以定义一个卷,如本地磁盘目录或网络磁盘,并将卷暴露到Pod的一个容器中。

标签和选择器

k8s将标签的键值对附加到系统中的任何API对象,如pod和Node。而标签选择器则对标签进行匹配查询。

标签和选择器是k8s的主要分组机制。比如,选择标签为back-end和canary的节点

tier=back-end AND release_track=canary

控制器

控制器通过管理一组Pod,将实际集群状态转移到所需集群状态。

服务

k8s服务是协同工作的pod,k8s通过给服务分配静态IP地址和域名提供服务发现机制,并以轮询调度方式将流量负载均衡到能与选择器匹配的pod的IP地址的网络连接。

架构

k8s遵循master-slave架构,k8s master是集群的主要控制单元,用于管理其工作负载并指导整个系统的通信。

etcd

etcd是CoreOS开发的,用于可靠的存储集群的配置数据的持久性的、轻量型的、分布式键值数据存储。

API服务器

API服务器通过Kubernetes API和HTTP提供内部和外部接口,主要用于处理和验证REST请求,并更新API对象的状态etcd,允许客户端在Worker节点之间配置工作负载和容器。

调度器

调度器是可插拔组件,是基于资源可用性选择未调度的pod运行在某个节点。

调度程序跟踪每个节点的资源利用率,确保工作负载不会超过可用资源。

results matching ""

    No results matching ""