
Kubernetes(k8s)是一个容器编排平台,其核心架构由多个组件组成,分为控制平面(Control Plane)和工作节点(Worker Node)两部分。以下是基础组成及其作用:
1. 控制平面(Control Plane,也叫做master节点)
负责集群的全局决策和调度,是集群的“大脑”:
kube-apiserver
集群的唯一入口,提供 RESTful API,所有组件间的通信都通过它。
验证请求合法性,并将数据持久化到
etcd。
etcd
分布式键值存储数据库,保存集群的所有状态数据(如Pod、Service、ConfigMap等)。
支持watch机制,当服务注册信息发生变化的时候,可以实时的更新并且获取最新的服务,不用像传统一样重启服务。
使用了Raft算法,在分布式环境下保证了强制一致性
kube-scheduler
负责将Pod调度到合适的Node上,根据资源需求、亲和性等策略选择节点。
kube-controller-manager
运行多个控制器,确保集群状态与预期一致,例如:
Node Controller:监控节点状态,当节点出现故障、添加或移除时,采取相应措施,如标记故障节点,将该节点上的 Pod 重新调度到其他健康节点。
Deployment Controller:管理 Deployment 资源,确保实际运行的 Pod 副本数量与 Deployment 中定义的副本数一致。当有 Pod 崩溃或者用户修改了 Deployment 的副本数时,它会自动创建或删除 Pod,以实现自愈和弹性伸缩 。
Service Controller:负责处理 Service 和 Endpoint 的关系,当 Endpoint(Pod 的 IP 和端口)发生变化时,更新 Service 的负载均衡配置,保证服务访问的连续性。
cloud-controller-manager(可选)
与云厂商(AWS、GCP等)交互,管理负载均衡、存储卷等云资源。
2. 工作节点(Worker Node,也叫计算节点)
运行容器化应用的机器,每个节点包含以下组件:
kubelet
节点上的“代理”,负责与控制平面通信,管理Pod的生命周期(创建、销毁、监控)。
确保Pod中的容器处于运行状态。
kube-proxy
维护节点上的网络规则(如iptables/IPVS),实现Service的负载均衡和网络代理。
容器运行时(Container Runtime)
负责运行容器(如Docker、containerd、CRI-O等),支持OCI标准。
3. 附加组件(Addons)
非核心但常用的扩展功能:
CNI插件(如Calico、Flannel)
实现Pod间的网络通信和IP分配。
CoreDNS
为集群提供DNS解析服务,使Service可通过域名访问。
Ingress Controller(如Nginx、Traefik)
管理外部访问集群的入口(HTTP/HTTPS路由)。
Metrics Server
收集资源监控数据,供
kubectl top和HPA(自动扩缩容)使用。
Dashboard
Web可视化界面,用于管理集群。
4. 核心抽象对象(API Resources)
用户通过操作这些对象定义应用:
Pod:最小的部署单元,包含一个或多个容器。
Deployment:管理Pod的无状态应用,支持滚动更新。
Service:定义一组Pod的访问策略(如负载均衡)。
Volume/PersistentVolume:存储卷声明。
Namespace:逻辑隔离集群资源(如开发、生产环境)。
5.Deployment与Service的作用

交互流程示例
用户通过
kubectl向kube-apiserver提交一个Deployment请求。kube-scheduler选择合适节点,kubelet在该节点创建Pod。kube-proxy为Pod配置网络规则,etcd记录集群状态。
评论