1图
openstack是kvm的管理集群,k8s是docker的管理集群,一个k8s节点可以管理n多个宿主机节点,master节点控制node节点,node节点负责工作,etcd做数据库,k8s里面最核心的就是API Server ,我们操作就是通过API Server来控制k8s ;研发人员来操作我们的k8s,只能命令API Server,剩下的组件命令不了。多个节点,每个节点里面有容器,我要创建一个容器,谁来启动这个容器,这个时候就需要调度了,那么Scheduler就来调度,有了Scheduler之后,就可以选择一个合适的节点之后,之后API Server命令哪个node节点上的kubelet服务,kubelet在调用docker,docker去启动容器,每个node节点上都得安装一个kubelet服务。这些容器都运行在node节点上,和master节点没有关系。外界用户访问的就是node节点上的容器,node节点上的Kube-Proxy服务帮我们的容器做了自动端口映射。容器运行着一旦内存不够了就自动挂了,容器比较容易挂,K8s的master节点有一个巡查组件Controller Manager ,每个node节点的容器每秒中都会检查一次,只要挂了,就给你再启动起来。如果发现这个node节点都挂了,这个节点上的容器都锁了。不要担心,我全部迁移到其他节点上,在把这些容器都启动起来。因为要启动哪些容器,数据库etcd里面都有。Controller Manager一读数据库etcd,发现这个node节点的容器没启动起来,就是找一个node节点来帮他启动起来,始终保证容器的高可用,保证服务的高可用。这就是k8s的主要架构。k8s的这个架构要比openstack简略很多。组件比较少功能也比较简单。如1图所示
2图
master节点上需要搭建四个服务,API Server ,Controller Manager,Scheduler,etcd;node节点上搭建两个服务,Kubelet,Kube-Proxy;装好kubelet服务的时候会自动把docker装上。以上这些都是核心组件。如2图所示
3图
还有附加组件 kube-dns可以做集群服务,负责为整个集群提供DNS服务,DNS就是做域名解析的;默认k8s里面容器之间有个负载均衡调度,是基于四层负载的;Ingress controller,后期可以提供一个七层负载均衡,就是通过这个Ingress controller来实现的;后期弹性伸缩里面就需要用到heapster监控。Dashboard提供一个友好的图形web界面,方便点击,只需要通过鼠标点击就可以控制k8s里面的所有资源;搭建多个k8s集群的时候,Federation可以集中起来管理;Fluentd-elasticsearch提供日志收集,存储日志与查询日志,在物理机上用的是elk,在容器里面用的就是Fluentd-elasticsearch。如图3所示
标签:node,容器,架构,API,组件,k8s,节点 From: https://www.cnblogs.com/ypyyds/p/16801094.html