k8s平面架构来说,一共有两种角色:master角色和node角色(work角色)

  1. master是集群中的大脑,跑着一些主流的服务(做管理),一般不参与运算

  2. node负责提供计算资源 ,会集中式的由maser进行调度以及管理 提供管理K8S的内存和CPU资源
    将内存以及CPU简单的打包,封装成一个对象,这个对象就叫做pod

  3. node节点就是提供pod资源的

  4. pod资源定义:一定量CPU资源和一定量的内存资源进行打包的一个集合就是pod资源

下面说一下master上面四个核心的服务:

  1. controller服务:副本保持机制、管理所有的pod资源(副本保持机制:比如在运行的时候,想保持三个副本 这三个副本放在负载均衡器的后面,当客户端访问他们前面的负载均衡器的时候,通过这个负载均衡器提供RR 通过RR方式访问后端的pod 每个pod单次提供计算,来提供响应)

  2. scheduler:调度(比如有一个场景:一个管理员今天想发布一个应用程序-----就会去问master(master管理了很多的计算节点,但是管理员不知道哪些掌管着系统资源)让master帮忙找一下有系统资源的节点 然后让master帮忙自己记录一下)
    或者说:管理员想发布一个应用程序,在发布应用程序的时候,scheduler出场了,它有自己的一本台账,这本台账记录在etcd这个键值型数据库,它查完之后,发现后面的计算节点,有一个计算节点比较空闲。于是他把当前的这个应用程序发布的任务发布给这个计算节点,并且在自己的台账上面记录

  3. API server
    功能1:对外 给管理员 给用户 一个登陆的入口
    功能2:无论是scheduler还是controller 他们两个都没有权限和能力跟后面的计算节点或者节点上面的资源进行对话,他们需要把自己想要执行的事情告诉API server。由API server来统一联系计算节点的代理端 由代理端去执行事情
    在master节点上,唯一有外联能力的就是API server 并且API server还是多线程的 可以同时并发迎接多个客户端的访问,也可以同时去联系多个计算节点,获取多个节点上面的资源信息。

  4. etcd
    键值型数据库 主要用来记录K8s上所有资源的状态 用key:value方式记录所有资源的信息

通过cli命令行工具或者图形化工具的时候 ,先告诉API server要执行的事情,比如今天想停掉一个容器或者停掉一个资源。 API server 做的第一件事就是去查询etcd 看看你要操作的对象状态是什么样子的,然后会交给controller或者scheduler来完成这次操作

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐