架构如图:
master节点:主要是集群控制面板的功能,来管理整个集群,包括全局的角色,调度,都是在master节点进行控制
有三个组件:
- API Server: 是 k8s提供的一个统一入口,它是提供http,RESETful,api的一种方式
- scheduler: 集群的调度,将容器分配到哪个节点上,就是它
- controller-manager:来负责你的任务的,其实就是控制器,这些控制器,来帮助你去管理你要做哪些任务,比如管理pod,service,节点的控制器,主要就是进一步解藕,为每个功能,做每件事
kubectl:直接是客户端的管理工具,直接管理这个apiserver,提交一个请求在apiserver,在这期间有一个认证授,看看你是不是有权限访问,apiserver将授权信息存储到etcd中
etcd:是key value的数据库,存储的是k8s的一些状态,一些数据的信息进行持久化,apiserver存储来之后,schedule会各自负责各自的事情
node:
- kubelet:好比是一个agent,主要接受k8s下发的任务,主要是管理k8s容器的创建和生命周期的管理
pod是k8s集群中最小部署单元,而不是容器,所以kubelet就是管理pod的,pod可以有一个容器或者多个容器组成,比如pod挂载数据卷,获取一些容器的状态,都是由kubelet操作的,然后汇报给master
- kube-proxy :主要负责网络规则和负载均衡的,因为里面会有多个容器,例如:container pod。pod。将pod怎么让用户访问,pod就是实际的部署程序,从互联网来到防火墙,到kube-proxy,再到具体的pod
- container runtime
这个是master的单节点,如果要做到高可用,master节点肯定也需要至少两个以上,中间会有一个负载均衡,来帮助负载到哪台master,master的负载,主要是apiserver,另外两个组件scheduler,controller已经具备高可用
这个是整个集群架构与组件
简而言之:简单的访问架构如下
总结一下: