目录
一、Kubernetes集群组件
(一)、控制平面组件(Control Plane Components)
1、kube-apiserver
2、etcd
3、kube-scheduler
4、kube-controller-manager
5、cloud-controller-manager(可选的)
(二)、节点组件
1、kubelet
2、kube-proxy(可选的)
3、容器运行时(Container runtime)
(三)、插件(Addons)
1、DNS
2、Web界面(Dashboard)
3、容器资源监控
4、集群层面日志
5、网络插件
二、Kubernetes核心资源对象
(一)、Namespace
(二)、Pod
(三)、Controller
(四)、Service
(五)、Ingress
(六)、标签(Label)
Kubernetes是当前最热门的开源容器编排框架,其本质是一组服务器集群,通过在集群节点上运行特定的组件程序,来对节点中的容器进行进行声明式配置和自动化管理。主要提供了自动故障修复、服务副本弹性伸缩、请求负载均衡、版本回退等功能。
本文主要介绍了Kubernetes集群中的核心集群组件以及核心资源对象。
一、Kubernetes集群组件
Kubernetes集群由控制平面和一个或多个工作节点组成。在控制平面和工作节点上,分布着不同的集群组件,各司其职共同支撑集群地运转。
(一)、控制平面组件(Control Plane Components)
控制平面组件用于管理Kubernetes集群的整体状态,为集群做出全局决策,比如资源调度以及检测和响应集群事件等。控制平面组件可以运行在集群的任意节点中,然而为了方便管理与维护,通常将控制平面组件部署在同一个节点上,可称为控制节点。
1、kube-apiserver
Kubernetes API服务器是控制平面的前端,该组件负责公开了Kubernetes API,负责处理接受请求的工作。Kubernetes API服务器的主要实现是kube-apiserver组件。
2、etcd
etcd组件是一个一致且高可用的键值存储系统,用作Kubernetes集群中各种资源对象数据存储的后台数据库。
3、kube-scheduler
kube-scheduler组件负责将新创建的或者未指定工作节点的Pod,按照预定的策略,将其调度至相应的工作节点运行。
4、kube-controller-manager
kube-controller-manager组件负责运行控制器进程。从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都在同一个进程中运行。控制器有不同的类型,例如:
- Node 控制器:负责在节点出现故障时进行通知和响应。
- Job 控制器:监测代表一次性任务的Job对象,然后创建Pod来运行这些任务直至完成。
- EndpointSlice控制器:填充EndpointSlice对象(以提供Service和Pod之间的链接)。
- ServiceAccount控制器:为新的命名空间创建默认的ServiceAccount。
5、cloud-controller-manager(可选的)
cloud-controller-manager组件允许将你的Kubernetes集群连接到云提供商的API,并将与该云平台交互的组件和你的Kubernetes集群交互的组件分离开来。如果你的Kubernetes集群仅仅运行在独立的环境中,则不需要部署cloud-controller-manager组件。
(二)、节点组件
运行节点组件的节点,可称为工作负载节点。节点组件会在每个工作负载节点上运行,负责维护运行的Pod并提供Kubernetes运行时环境。
1、kubelet
kubelet组件在Kubernetes集群的每个工作负载节点上运行,负责维护容器(containers)的生命周期,保证容器(containers)都运行在Pod中。