目录
- 1. 说明
- 2. 起源与发展
- 3. 核心概念
- 4. 架构与组件
- 4.1 控制平面(Control Plane)
- 4.2 工作节点(Worker Nodes)
- 5. 特点与优势
- 6. 应用场景
1. 说明
- 1.Kubernetes(简称K8s)是一个开源的容器编排工具,专为自动化容器化应用程序的部署、扩展和管理而设计。
2. 起源与发展
- 1.Kubernetes起源于2014年,由Google的三位工程师Joe Beda、Brendan Burns和Craig McLuckie创立。
- 2.Kubernetes是Google的Borg系统的开源版本,Borg是一个大规模集群管理系统,对Google服务的稳定性和规模化起到了关键作用。
- 3.Kubernetes采用了Borg的设计理念和最佳实践,但设计得更加灵活和模块化,以适应更广泛的用户群体和工作负载。
- 4.2015年,Google将Kubernetes捐赠给了Cloud Native Computing Foundation(CNCF),以确保其中立性并促进生态系统的健康发展。
3. 核心概念
- 1.Pod:Kubernetes使用Pod来管理容器,每个Pod可以包含一个或多个紧密关联的容器。Pod是一组紧密关联的容器集合,它们共享PID、IPC、Network和UTS namespace,是Kubernetes调度的基本单位。
- 2.Node:Node是Pod真正运行的主机,可以是物理机,也可以是虚拟机。为了管理Pod,每个Node节点上至少要运行container runtime(比如Docker或者rkt)、kubelet和kube-proxy服务。
- 3.Namespace:Namespace是对一组资源和对象的抽象集合,可以用来将系统内部的对象划分为不同的项目组或用户组。
- 4.Service:Service是应用服务的抽象,通过labels为应用提供负载均衡和服务发现。
- 5.Label:Label是识别Kubernetes对象的标签,以key/value的方式附加到对象上。Label不提供唯一性,并且实际上经常是很多对象(如Pods)都使用相同的label来标志具体的应用。
- 6.Annotations:Annotations是key/value形式附加于对象的注解,用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。
4. 架构与组件
4.1 控制平面(Control Plane)
- 1.包括kube-apiserver、etcd、kube-scheduler、kube-controller-manager和cloud-controller-manager。
- 2.控制平面负责管理集群的状态、调度Pod到合适的节点、监控节点和Pod的健康状况等。
- 3.kube-apiserver:API服务器是Kubernetes控制平面的组件,负责公开Kubernetes API,并处理接受请求的工作。它是Kubernetes控制平面的前端。
- 4.etcd:一个分布式键值存储,用于存储Kubernetes集群的所有数据。它是Kubernetes集群的源数据存储系统,所有的配置信息、状态信息都存储在etcd中。
- 5.kube-scheduler:负责将新创建的Pod调度到合适的工作节点上。
- 6.kube-controller-manager:负责运行控制器进程,包括节点控制器、任务控制器、端点分片控制器等。
- 7.cloud-controller-manager:允许将Kubernetes集群连接到云提供商的API之上,并将与该云平台交互的组件同与集群交互的组件分离开来。
4.2 工作节点(Worker Nodes)
- 1.包括kubelet、kube-proxy和容器运行时。工作节点负责运行实际的应用容器。
- 2.kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理。
- 3.kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡。
- 4.容器运行时:负责镜像管理以及Pod和容器的真正运行(CRI)。
5. 特点与优势
- 1.可移植性:支持公有云、私有云、混合云和多重云。
- 2.可扩展性:模块化、插件化、可挂载、可组合。
- 3.自动化:自动部署、自动重启、自动复制、自动伸缩/扩展。
- 4.快速部署与扩展:能够快速部署和扩展应用。
- 5.无缝对接新功能:能够无缝对接新的应用功能。
- 6.资源优化:节省资源,优化硬件资源的使用。
6. 应用场景
- 1.容器编排和管理:Kubernetes可以帮助用户轻松地部署、管理和扩展容器化应用。
- 2.微服务架构:Kubernetes可以支持微服务架构的应用部署和管理,自动管理微服务的部署、扩展和升级,同时还提供了负载均衡、服务发现和服务注册等功能。
- 3.弹性扩展:Kubernetes可以根据应用的负载情况自动进行弹性扩展,提高应用的可用性和性能,同时节省资源和成本。
- 4.高可用性和容错性:Kubernetes提供了一系列的机制来确保应用的高可用性和容错性,如自动重新启动失败的容器、容器自愈和自动修复等。
- 5.多云环境管理:Kubernetes可以帮助用户在多个云平台上管理和部署应用,提供标准化的接口和管理方式。