基本概念:
k8s是docker容器用来编排和管理的工具.注:(管理多主机上的Docker容器的工具)
主要节点:
Master和Node
Master主要提供 API server、Scheduler、Controller组件
Node主要存放每一个docker.
各组件的作用:
API server (Master)
主要职责是认证和授权,提供了http Rest 接口的关键服务过程,是k8s里所有资源的增删改查等操作的唯一入口,也是集群的入口进程.
Controller-manager (Master)
k8s里所有资源对象的自动化控制中心,可以理解为资源对象的"大总管"
Scheduler (Master)
负责资源调度的进程,相当于公交公司的"调度室"
Node
是k8s集群工作负载节点,Master为其分配工作,当某个Node宕机时,Master会将其工作负载自动转移到其他节点.
Docker Engine (Node)
docker 引擎,负责本机的容器创建和管理工作.
Kubelet (Node)
负责pod对应的容器的创建、启停等任务,同时与master节点密切协作,实现集群管理的基本功能
kube-proxy (Node)
实现k8s的service的通信与负载均衡机制的重要组件,Node节点可动态增加到k8s集群中,前提是这个节点已经正确安装配置和启动了 默认情况下,kublet会向Master注册自己,这也是k8s推荐的Node管理方式.一旦Node被纳入集群管理范围,kublet会定时向Master汇报自身的情况,以及之前有哪些pod在运行等,这样Master可以获知每个Node的资源使用情况,并实现高效均衡的资源调度策略.如果Node没有按时上报信息,则会被Master判断失联,Node状态会被标记为Not Ready,随后Master 会触发工作负载转移流程.
Pod
是k8s最重要也是最基本的概念.每个Pod都会包含一个"根容器",还会包含一个或者多个紧密相连的业务容器.k8s为每个Pod 都分配了唯一的Ip地址,称之为:PodIp,一个Pod里的多个容器共享PodIp地址.要求底层网络支持集群内任意两个Pod之间的直接通信,通常用虚拟二层网络技术来实现.
Label
是一个key=value 的键值对,其中key与value 由用户自己指定,可以附加到各种资源对象上,一个资源对象可以定义任意数量的Label.可以通过LaberSelector(标签选择器)查询和筛选资源对象.
RC
Replication Controller 声明某个pod的副本数在任意时刻都符合某个预期值.定义包含: 1.pod期待的副本数 2.用于筛选目标pod的Laber selector 3.当pod副本数小于期望时,用于新的创建pod的模板
注: 通过改变RC里的pod副本数量,可以实现pod的扩容和缩容功能;通过改变RC里的pod模板中的镜像版本,可以实现pod的滚动升级功能.
Service
"微服务",k8s中的核心.通过分析、识别并建模系统中的所有服务为微服务,最终系统有多个提供不同业务能力而又彼此独立的微服务单元所组成,服务之间通过TCP/IP进行通信.每个Pod都会被分配一个单独的IP地址,而且每个Pod都提供了一个独立的EndPoint以被客户端访问.,部署负载均衡器,为Pod开启对外服务端口,将Pod的Endpoint列表加入转发列表中,客户端通过负载均衡器的对外IP+Port来访问此服务,每个service都有一个全局唯一的虚拟ClusterIp,这样每个服务就变成了具备唯一IP地址的"通信节点",服务调用就变成最基础的TCP网络通信问题.
Volume
是Pod中能够被多个容器访问的共享目录,定义Pod之上,被一个pod里的多个容器挂载到具体的文件目录下;与pod生命周期相同,可以让一个pod的多个容器共享文件,让容器的数据写到宿主机的磁盘上或者写到文件到网络存储中.