Kubernates——概述

Kubernates是什么

Kubernetes是Google开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一整套功能,本质上可看作是基于容器技术的Micro-PaaS平台,即第三代PaaS的代表性项目。

Google从2004年起就已经开始使用容器技术了,于2006年发布了Cgroup,而且内部开发了强大的集群资源管理平台Borg和Omega,这些都已经广泛使用在Google的各个基础设施中,而Kubernetes的灵感来源于Google的内部Borg系统,更是吸收了包括Omega在内的容器管理器的经验和教训。

Kubernetes,古希腊语是舵手的意思,也是Cyber的词源,Kubernetes 利用Google在容器技术上的实践经验和技术积累,同时吸取Docker 社区的最佳实践,已经成为云计算服务的舵手。

Kubernates有着如下的优秀特性:

  • 强大的容器编排能力
    Kubernetes可以说是同Docker一起发展起来的,深度集成了Docker,天然适应容器的特点,设计出强大的容器编排能力,比如容器组合、标签选择和服务发现等,可以满足企业级需求。

  • 轻量级
    Kubernetes遵循微服务架构理论,整个系统划分出各个功能独立的组件,组件之间边界清晰,部署简单,可以轻易地运行在各种系统和环境中。同时,Kubernetes中的许多功能都实现了插件化,可以非常方便地进行扩展和替换。

  • 开放开源
    Kubernetes顺应了开放开源的趋势,吸引了大批开发者和公司参与其中,协同工作共同构建生态圈。同时,Kubernetes 同OpenStack、Docker 等开源社区积极合作、共同发展,企业和个人都可以参与其中并获益。

Kubernates的核心概念

  • Pod
    Pod是若干相关容器的组合,Pod包含的容器运行在同–台宿主机上,这些容器使用相同的网络命名空间、IP 地址和端口,相互之间能通过localhost来发现和通信。另外,这些容器还可共享-块存储卷空间。在Kubernetes中创建、调度和管理的最小单位是Pod,而不是容器,Pod通过提供更高层次的抽象,提供了更加灵活的部署和管理模式。

  • Replication Controller
    Replication Controller 用来控制管理Pod副本( Replica,或者称为实例),ReplicationController确保任何时候Kubernetes集群中有指定数量的Pod副本在运行。如果少于指定数量的Pod副本,Replication Controller 会启动新的Pod副本,反之会杀死多余的副本以保证数量不变。另外,Replication Controller是弹性伸缩、滚动升级的实现核心。

  • Service
    Service是真实应用服务的抽象,定义了Pod的逻辑集合和访问这个Pod集合的策略。Service将代理Pod对外表现为-一个单–访问接口,外部不需要了解后端Pod如何运行,这给扩展和维护带来很多好处,提供了–套简化的服务代理和发现机制。

  • Label
    Label是用于区分Pod、 Service、 Replication Controller 的Key/Value 对,实际上,Kubernetes中的任意API对象都可以通过Label进行标识。每个API对象可以有多个Label,但是每个Label的Key只能对应一个 Value。Label 是Service和Replication Controller 运行的基础,它们都通过Label来关联Pod,相比于强绑定模型,这是一种非常好的松耦合关系。

  • Node
    Kubernetes属于主从分布式集群架构,Kubernetes Node (简称为Node,早期版本叫作Minion)运行并管理容器。Node 作为Kubernetes 的操作单元,用来分配给Pod ( 或者说容器)进行绑定,Pod 最终运行在Node.上,Node 可以认为是Pod的宿主机。

Kubernates的架构和组件

Kubernates属于主从分布式架构,节点在角色上分为Master和Node:

在这里插入图片描述

Kubernetes使用Eted作为存储中间件,Etcd 是一个高可用的键值存储系统,灵感来自于ZooKeeper和Doozer,通过Raft一致性算法处理日志复制以保证强一致性。

Kubernetes使用Eted作为系统的配置存储中心,Kubernetes中的重要数据都是持久化在Etcd中的,这使得Kubernetes架构的各个组件属于无状态,可以更简单地实施分布式集群部署。

Kubernetes Master作为控制节点,调度管理整个系统,包含以下组件。

  • Kubernetes API Server: 作为Kubernetes 系统的入口,其封装了核心对象的增删改查操作,以RESTAPI接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到Etcd中。
  • Kubernetes Scheduler: 负责集群的资源调度,为新建的Pod分配机器。这部分工作分出来变成-一个组件,意味着可以很方便地替换成其他的调度器。
  • Kubernates Controller Manager:负责执行各种控制器,目前已经实现很多控制器来保证Kubernates的正常运行,主要包含的控制器如下表:

在这里插入图片描述
在这里插入图片描述

Kubernates Node是运行节点,用于运行管理业务的容器,包含以下组件:

  • Kubelet: 负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。

  • Kubernetes Proxy: 负责为Pod创建代理服务,Kubernetes Proxy 会从Kubernetes APIServer获取所有的Service,并根据Service 信息创建代理服务,实现Service 到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。

  • Docker: Kubernetes Node是容器运行节点,需要运行Docker服务,目前Kubernetes也支持Rocket,这是一款CoreOS开发的类Docker 的开源容器引擎,本书只说明Docker。

Guess you like

Origin blog.csdn.net/cold___play/article/details/108277511
Recommended