Linux云计算虚拟化-Kubernetes 容器集群管理系统基础概念讲述
1. kubernetes简介
Kubernetes
是Google开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。
Kubernetes
是基于docker容器的云平台,简写为:k8s
OpenStack
是基于kvm虚拟机云平台。
k8s官网:https://kubernetes.io/
2. k8s常见组件介绍
①Master:提供k8s集群的管理控制中心,可以在集群中任何节点上运行。通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。
②Api Server:提供接口服务,用户通过apiserver来管理整个容器集群平台。API Server负责和etcd交互(其他组件不会直接操作etcd,只有API Server这么做),整个kubernetes 集群的所有的交互都是以API Server为核心的。
- 任何的资源请求/调用操作都是通过apiserver提供的接口进行。
- 所有模块之间并不会互相调用,而是通过和API Server交互完成自己的那部分工作。
- API Server 提供的验证和授权保证了整个集群的安全。
③Scheduler:k8s的调度服务,监视新创建没有分配到Node的Pod,为Pod选择一个Node。
④Replication Controllers:Kubernetes 系统中最有用的功能,实现复制多个 Pod 副本,往往一个应用需要多个 Pod 来支撑,并且可以保证其复制的副本数,即使副本所调度分配的宿主机出现异常,通过 Replication Controller 可以保证在其它宿主机启用同等数量的 Pod。Replication Controller 可以通过 repcon 模板来创建多个 Pod 副本,同样也可以直接复制已存在 Pod,需要通过 Label selector 来关联。
⑤minion:真正用来运行容器container的物理机,在k8s中需要多个minion机器来提供运算。
⑥container:容器,用来运行服务和程序。【豌豆】
⑦pod:在k8s系统中,调度的最小颗粒不是容器,而是一个pod,pod是一个可以被创建、销毁、调度、管理的最小的部署单元,pod可以包括一个或一组容器。【一群鲸鱼(docker容器)或豌豆荚】
⑧kube_proxy:端口转发,相当于lvs-nat模式中的负载调度器。proxy解决了同一宿主机,相同服务端口冲突的问题,提供了对外服务的能力,proxy的后端使用了随机、轮询负载均衡算法。实现 Kubernetes 网络相关内容。
⑨etcd:是kubernetes提供的默认存储系统。存储 kubernetes 集群的所有数据, 可以理解为是 k8s 的数据库,存储着 k8s 容器云平台中所有节点、pods、网络等信息。使用时需要为etcd数据提供备份计划。
⑩controller manager:控制器管理器,是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。
- 节点(Node)控制器
- 副本(Replication)控制器:负责维护系统中每个副本中的pod。
- 端点(Endpoints)控制器:填充Endpoints对象(即连接Services和Pods)。
- Service Account和Token控制器:为新的Namespace创建默认账户访问API Token
其他概念:
①service:Services 是 Kubernetes 最外围的单元,通过虚拟一个访问 IP 及服务端口,可以访问我们定义好的 Pod 资源,目前的版本是通过 iptables 的 nat 转发来实现,转发的目标端口为Kube_proxy 生成的随机端口。
②lables:用于区分 Pod、Service、Replication Controller 的 key/value 键值对,仅使用在Pod、Service、 Replication Controller 之间的关系识别,但对这些单元本身进行操作时得使用 name标签。
③deployment:用于更新 Pod 和 Replica Set(下一代的 Replication Controller)。可以在 Deployment 对象中只描述你所期望的理想状态(预期的运行状态),Deployment 控
制器会将现在的实际状态转换成期望的状态。
④kubelet命令:管理 Pod、Pod 中容器及容器的镜像和卷等信息。
Kubelet 和 Kube-proxy 都运行在 minion 节点上。
⑤cloud-controller-manager:云控制器管理器,负责与底层云提供商的平台交互。在1.6版本引入。
各组件的关系:
①Kubernetes
的架构由一个master
和多个minion
组成,master
通过 api
提供服务,接受kubectl
的请求来调度管理整个集群。
②Replication controller
定义了需要运行的多个pod
或者容器,如果当前集群中运行的 pod
或容器达不到配置的数量,replication controller
会调度容器在多个 minion
上运行,保证集群中的pod
数量。
③service
则定义真实对外提供的服务,一个 service
会对应后端运行的多个 container
。
④Kubernetes
是个管理平台,minion
上的kube-proxy
拥有提供真实服务公网 IP。客户端访问kubernetes
中提供的服务,是直接访问到kube-proxy
上的。
⑤在 Kubernetes
中 pod
是一个基本单元,一个pod
可以是提供相同功能的多个 container
,这些容器会被部署在同一个 minion
上。minion
是运行Kubelet
中容器的物理机。minion
接受master
的指令创建pod
或者容器。