kubernetes 整个架构分为master节点和node节点,其中master节点负责pod的调度,pod的replication的数量node,endpoint以及服务帐户以及令牌的管理等等;而node节点主要负责container建立,服务的代理以及其余相关应用。前端
Master 组件提供的集群控制。Master 组件对集群作出全局性决策(例如:调度),以及检测和响应集群事件(副本控制器的replicas字段不知足时,启动新的副本)。node
Master 组件能够在集群中的任何节点上运行。然而,为了简单起见,设置脚本一般会启动同一个虚拟机上全部 Master 组件,而且不会在此虚拟机上运行用户容器(高可用)docker
Master节点包括:kube-apiserver,kube-control-manager,kube-schduler,etcd,相关插件应用以及底层云控制器,其中:shell
kube-apiserver对外暴露了Kubernetes API。它是的 Kubernetes 前端控制层。它被设计为水平扩展,即经过部署更多实例来缩放数据库
etcd主要为kubernetes的后端数据库,就与k/v方式存储,全部的k8s集群数据都存放在此处。后端
kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程。逻辑上,每一个控制器是一个单独的进程,但为了下降复杂性,它们都被编译成独立的可执行文件,并在单个进程中运行。这些控制器包括:api
节点控制器: 当节点移除时,负责注意和响应。 副本控制器: 负责维护系统中每一个副本控制器对象正确数量的 Pod。 端点控制器: 填充 端点(Endpoints) 对象(即链接 Services & Pods)。 服务账户和令牌控制器: 为新的命名空间建立默认账户和 API 访问令牌
cloud-controller-manager是用于与底层云提供商交互的控制器。云控制器管理器可执行组件是 Kubernetes v1.6 版本中引入的 Alpha 功能。服务器
cloud-controller-manager仅运行云提供商特定的控制器循环。您必须在kube-controller-manager 中禁用这些控制器循环,您能够经过在启动 kube-controller-manager 时将 --cloud-provider 标志设置为external来禁用控制器循环。网络
cloud-controller-manager容许云供应商代码和Kubernetes核心彼此独立发展,在之前的版本中,Kubernetes 核心代码依赖于云提供商特定的功能代码。在将来的版本中,云供应商的特定代码应由云供应商本身维护, 并与运行 K8s 的云控制器管理器相关联。具备云提供商依赖关系:架构
节点控制器: 用于检查云提供商以肯定节点是否在云中中止响应后被删除 路由控制器: 用于在底层云基础架构中设置路由 服务控制器: 用于建立,更新和删除云提供商负载平衡器 数据卷控制器: 用于建立,附加和装载卷,并与云提供商进行交互以协调卷
kube-scheduler监视没有分配节点的新建立的 Pod,选择一个节点供他们运行,即pod的调度
插件是实现集群功能的 Pod 和 Service。 Pods 能够经过 Deployments,ReplicationControllers 管理。插件对象自己是受命名空间限制的,被建立于 kube-system 命名空间。Addon 管理器用于建立和维护附加资源。
主要包括如下插件:
为 Kubernetes 服务提供DNS记录,Kubernetes 启动的容器自动将 DNS 服务器包含在 DNS 搜索中。
为kubernetes集群提供一个状态概览的UI界面。
3.容器监控
容器资源监控将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面
4.日志采集
负责将容器的日志数据保存到一个集中的日志存储中,该存储可以提供搜索和浏览接口。
node节点组件在每一个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行时环境。其中包括如下组件:
kubelet是主要的节点代理,它监测已分配给其节点的 Pod(经过 apiserver 或经过本地配置文件),提供以下功能:挂载 Pod 所须要的数据卷(Volume)。
1.下载 Pod 的 secrets。 2.经过 Docker 运行(或经过 rkt)运行 Pod 的容器。 3.周期性的对容器生命周期进行探测。 4.经过建立镜像Pod(Mirror Pod) 将 Pod 的状态报告回系统的其他部分。 5.将节点的状态报告回系统的其他部分
kube-proxy经过维护主机上的网络规则并执行链接转发,实现了Kubernetes服务代理
运行容器的cri,好比:container 或者rkt
supervisord 是一个轻量级的进程监控系统,能够用来保证 kubelet 和 docker 运行。
fluentd 是一个守护进程,它有助于提供集群层面日志 集群层面的日志
全局组件主要指的是CNI,即容器网络,它贯穿整个kubernetes集群,无论master节点应用仍是node节点应用都必须同处于一个网络,从而保证整个服务正常访问!
以上就是整个k8s节点相关的功能介绍,具体介绍请参考kubernetes官方文档!