K8S学习之体系架构介绍
Posted Charles Yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S学习之体系架构介绍相关的知识,希望对你有一定的参考价值。
K8S学习之体系架构介绍
Kubernetes整体架构
-
内容介绍
每个Kubernetes集群都有两种类型的节点:master 和 worker。
master负责控制和监控worker工作集群
-
整体组成
master构成
-
整体图例
-
etcd
作为数据库,所有kubernetes对象、当前状态、访问信息、集群配置信息…,都存在这。
-
API Server
暴露集群操作的端点,master和worker上的组件都需要访问api server,以便完成自己的工作。
-
Scheduler
调度程序,负责决定哪个工作由哪个机器干。
-
Control Manager
控制管理器,监视集群的状态(通过调用API服务器来获取此数据)并采取措施将其置于预期状态。
worker构成
-
整体图例
-
kubelet
worker节点的核心,与master的api server沟通,运行调度到本节点的容器
-
kube Proxy
使用IP表/IPVS处理Pod的网络需求
-
Pod
kubernetes 运行容器的主力,提供了容器间联网的能力
一个pod可以有多个容器,这些容器中的应用相互间都视为本地。
pod的网络接口提供了一个机制,使其可以与本节点或其他节点上的pod进行网络连接。
每个pod都会被指定一个IP,kube-proxy将使用该IP地址来路由流量,而且此IP地址仅在集群中可见。
一个pod中挂载的数据卷可以被pod内所有容器看到,因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。例如,你的 APP 是一个图片上传应用,把图片保存在一个数据卷中,同一个 pod 中的其他容器可以监控这个数据卷,发现有新图片时,就开始处理,例如缩放多个尺寸的图片、上传到云存储。
Controller控制器
-
内容介绍
kubernetes中有很多控制器,例如ReplicaSet、Replication Controller、Deployments、StatefulSets和Service等。
他们都控制pod的对象,下面介绍几个重点的控制器:
-
ReplicaSet
主要职责是根据给定的Pod创建副本。如果一个pod挂了,这个控制器就会得到通知,立马创建一个新的。
-
Deployment
使用ReplicaSet来管理副本。提供了滚动升级的能力,扩展新的,缩减旧的。
-
Service
类似于一个负载均衡器一样,向相应节点分派包。可以跨worker节点构建一个pod组(通常是根据pod标签)。
例如你的前端应用、后端应用,各自都有很多个实例在运行,前后端怎么沟通?
前端只需要知道后端各个实例的访问地址,硬编码后端IP的方式显然不能用,那么就需要把后端实例组成一个 service,前端只需要访问这个 service,由 service 对其中的后端实例进行流量负载均衡转发。
一旦service被创建,K8S会为其分配一个集群内唯一的IP,叫做ClusterIP,而且在service的整个生命周期中,ClusterIP不会发生变更,这样一来,就可以用与Docker Swarm类似的操作,建立一个ClusterIP到服务名的DNS域映射即可。
-
Ingress
Ingress(入口)控制器是和外部世界沟通的唯一入口。外部世界通过Ingress与集群中的所有服务沟通,就像是一个网关,方便我们在一个地方统一设置安全策略、监控、记录日志。
其他
Label
-
内容介绍
Label本质是一个键值对,具体的值由用户决定。Label就是标签,可以打在Pod上,也可以打到Service上。总结来说,Label与被标记的资源是一个一对多的关系。
-
举例说明
例如,我们给Pod打上了role=serviceA的标签,那么只需要在Service中的Label Selector中加入刚刚那个标签,这样一来,Service就可以通过Label Selector找到打了同一个Label的Pod副本集了。
参考链接
-
图解 Kubernetes
https://www.cnblogs.com/yogoup/p/12122676.html
-
简单了解一下K8S,并搭建自己的集群
https://zhuanlan.zhihu.com/p/97605697
以上是关于K8S学习之体系架构介绍的主要内容,如果未能解决你的问题,请参考以下文章