Kubernetes:基础的架构
kubernetes的一个简单机构图形
k8s 主要分为两个大结构 :
1 控制面:master 是集群的大脑和心脏
2 数据面:worker 主要在master 的指挥下进行工作,也称之为node
kubectl 是k8s的管理工具
我们可以使用kubectl get node来查看节点的状态 因为 Master 和 Node 的划分不是绝对的。当集群的规模较小,工作负载较少的时候,Master 也可以承担 Node 的工作
使用kubectl get pod 来查看pod的状态
master节点内部的结构
Kubernetes 的节点内部也具有复杂的结构,是由很多的模块构成的,这些模块又可以分成组件(Component)和插件(Addon)两类。
组件是k8s的核心功能的特性,而插件是一些附件的功能,是一些锦上添花的作用。
Master的组件构成有哪些?
apiserver 是 Master 节点,是整个 Kubernetes 系统的唯一入口,它对外公开了一系列的 RESTful API,并且加上了验证、授权等功能,所有的组件都必须通过apiserver来沟通。
etcd 是一个高可用的分布式 Key-Value 数据库,用来持久化存储系统里的各种资源对象和状态,主要做K8S的配置。 任何其他组件想要读写ETCD 必须通过apiserver来实现
scheduler 负责容器的编排工作,检查节点的资源状态,把pod调度到合适的节点来运行,因为节点状态和 Pod 信息都存储在 etcd 里,所以 scheduler 必须通过 apiserver 才能获得。
controller-manager 负责维护容器和节点等资源的状态,实现故障检测、服务迁移、应用伸缩等功能。必须通过apiserver 获取etcd中的节点和资源状态来进行工作。
通过 kubectl get pod -n kube-system 我们可以查看组件的状态
node节点内部都有哪些组件?
kubelet 是 Node 节点的代理,负责管理 Node 相关的绝大部分操作,Node 上只有它能够与 apiserver 通信,实现状态报告、命令下发、启停容器等功能,负责Node节点的运行维护。
kube-proxy 的作用有点特别,它是 Node 的网络代理,负责管理容器的网络通信, Pod 转发 TCP/UDP 数据包。
container-runtime 是容器和镜像的实际使用者 ,负责创建容器,管理 Pod 的生命周期。
最后我们总结下整体的调度流程:
kubelet 向 master的apiserver 上报节点的状态,并通过apiserver存入到etcd中
kube-proxy 负责tcp和udp的数据包 让容器可以对外提供服务
scheduler 通过apiserver 从etcd中获取到当前节点的状态,从而调度pod(apiserver 下发命令给某个 Node 的 kubelet,kubelet 调用 container-runtime 启动容器。)
controller-manager apiserver 获得节点状态,监控异常情况。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_37930678/article/details/145192161
版权声明:
作者:SE_Gai
链接:https://www.cnesa.cn/2967.html
来源:CNESA
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论