K8S核心组件
# 一、Master组件
# 1、API Server
API Server 是 Kubernetes 的核心组件之一,作为集群的前端,它提供了所有操作的RESTful API。用户、管理员以及其他组件通过API Server进行交互。API Server接收REST请求,并将其转发给合适的组件处理,同时还负责认证、授权、API注册和发现等功能。
# 2、ETCD
etcd 是一个高可用的分布式键值存储系统,用于存储K8s集群的所有数据,包括集群的配置、状态信息等。etcd的高可用性和一致性保证了K8s集群的可靠运行。
# 3、Controller Manager
Controller Manager 是K8s中的核心控制循环机制,负责管理控制器,确保集群的期望状态与实际状态一致。常见的控制器包括:
- Replication Controller:确保指定数量的Pod副本运行。
- Endpoints Controller:填充Service和Pod之间的关联信息。
- Namespace Controller:处理命名空间的生命周期。
# 4、Scheduler
Scheduler 是负责将新创建的Pod分配到合适节点上的组件。调度器根据预定义的策略(如资源需求、硬件/软件/策略约束、亲和性和反亲和性规则等)选择最佳的节点。
# 二、Node组件
# 1、Kubelet
Kubelet 是运行在每个节点上的代理,负责确保Pod和它们的容器正常运行。Kubelet接收来自API Server的PodSpec,按照指定的配置创建和管理容器。
# 2、Kube Proxy
Kube Proxy 是负责维护网络规则的组件,提供集群内的服务发现和负载均衡。Kube Proxy会监视K8s API Server中的Service和Endpoints变化,并动态更新网络规则。
# 3、Container Runtime
Container Runtime 是具体执行容器创建、启动、停止等操作的底层软件。K8s支持多种容器运行时,包括Docker、containerd、CRI-O等。Kubelet通过CRI(容器运行时接口)与容器运行时进行通信。
# 三、辅助组件
# 1、DNS
K8s内置了DNS服务,用于为每个Service创建DNS记录。容器可以使用这些DNS名称来发现和访问Service。
# 2、Dashboard
Dashboard 是K8s的Web UI,用户可以通过它管理和监控集群资源,查看日志,进行故障排查等操作。
# 3、Ingress Controller
Ingress Controller 是一种允许外部HTTP和HTTPS流量进入集群的组件。它管理Ingress资源,提供URL路由、负载均衡、SSL终止等功能。
# 总结
Kubernetes 的核心组件紧密协作,确保集群的高可用性和弹性扩展。API Server 提供统一的接口,etcd 保证数据的一致性,Controller Manager 和 Scheduler 确保集群状态与期望状态一致,Kubelet 和 Kube Proxy 在节点上执行具体操作。理解这些核心组件及其工作原理,是掌握Kubernetes的关键。