Roy学Kubernetes(2):Kubernetes组件
K8s本身有许多二进制组件,用于提供完整的功能,我们初学者可能会觉得组件太多,眼花瞭乱;我们必须要了解这些组件的作用,才能更好理解K8s的工作原理。在了解K8s组件之前,我们先需要知道K8s部署在节点后有二种类型的角色:
- Master
- Node(或worker)
我们按节点角色来讲各个组件
Master节点组件
Master节点是K8s的管理节点,相当于K8s的大脑,控制着整个集群。Master组件对集群做出全局性决策(例如:调度),以及检测和响应集群事件(例如 副本控制器的replicas字段不满足时,启动新的副本)。Master组件可以在集群中的任何节点上运行,但是默认的初始化K8s集群后,Master节点会启动所有除用户容器外的所有Master组件。
kube-apiserver
kube-apiserver对外暴露了Kubernetes API。它是的Kubernetes前端控制层。支持水平扩展,即通过部署更多实例来缩放kube-apiserver服务。
etcd
etcd相当于一个数据库,用于Kubernetes的后端存储。所有集群数据都存储在此处,所以最好为Kubernetes集群的etcd数据提供完善的备份计划
。
kube-controller-manager
kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成独立的可执行文件,并在单个进程中运行。这些控制器包括:
- 节点控制器: 当节点移除时,负责注意和响应。
- 副本控制器: 负责维护系统中每个副本控制器对象正确数量的Pod。
- 端点控制器: 填充端点(Endpoints)对象(即连接Services & Pods)。
- 服务帐户和令牌控制器: 为新的命名空间创建默认帐户和API访问令牌。
cloud-controller-manager(基本用不到)
用于与底层云提供商交互的控制器。云控制器管理器可执行组件是Kubernetes v1.6版本中引入的Alpha功能。
kube-scheduler
kube-scheduler监视没有分配节点的新创建的Pod,选择一个节点供他们运行,即Pod调度作用。
插件
插件是实现集群功能的Pod和Service。 Pods可以通过Deployments,ReplicationControllers管理。插件对象本身是受命名空间限制的,被创建于 kube-system命名空间。例如DNS插件,网络插件Calico,Web管理面板Kubernetes Dashboard,容器资源监控heapster/metric-server等。
Node节点组件
节点组件在每个节点上运行,维护运行的Pod并提供Kubernetes运行环境。
kubelet
kubelet是主要的节点代理服务,以系统服务方式运行。它监测已分配给其节点的Pod(通过apiserver或通过本地配置文件),提供如下功能:
- 挂载Pod所需要的数据卷(Volume)。
- 下载Pod的secrets。
- 通过Docker运行(或通过 rkt)运行Pod的容器。
- 周期性的对容器生命周期进行探测。
- 如果需要,通过创建镜像Po(Mirror Pod)将Pod 的状态报告回系统的其余部分。
- 将节点的状态报告回系统的其余部分。
kube-proxy
kube-proxy通过维护主机上的网络规则并执行连接转发,实现了Kubernetes服务抽象。
docker
Docker用于运行容器。另外,Kubernetes还支持rkt运行容器作为Docker的试验性替代方案。
supervisord(可自定义)
supervisord是一个轻量级的进程监控系统,可以用来保证kubelet和docker运行。
fluentd(可自定义)
fluentd是一个守护进程,它有助于提供集群层面日志 集群层面的日志。
- 本文链接:http://www.whyvv.top/k8s2.html
- 版权声明:版权所有,转载请注明出处。
分享