在kubernetes中,集群相关的组件主要分为两类:控制平面组件和节点组件
控制平面组件(Master Components):
- kube-apiserver:它是整个系统的入口,提供
RESTful API接口
供用户和内部组件与集群进行交互。所有资源的增删改查操作都通过它来完成,并将状态持久化存储到etcd
中。 - etcd:一个分布式键值对存储系统,用于存储集群的所有重要配置数据和状态信息,保证了数据的一致性和高可用性
- kube-scheduler:负责监控新创建但未调度的Pod,根据调度策略为其选择合适的节点进行分配。
- kube-controller-manager:运行多个控制器进程,这些控制器包括节点控制器、副本控制器、端点控制器等,确保集群的实际状态与用户的期望状态保持一致。
- cloud-controller-manager(可选):与云服务商的基础设施集成,管理如节点自动注册、负载均衡器、存储卷等外部依赖资源。
节点组件(Worker Node Comp)
- kubelet:在每个工作节点上运行,负责维护容器运行时环境并在节点上执行Pod的生命周期管理。
- container runtime(如Docker、containerd或CRI-O):实际负责下载镜像并运行容器。
- kube-proxy:实现kubernetes服务代理和网络策略,负责在节点上维护网络规则和服务代理。
- runtime configuration:例如CNI(Container Network Interface),提供了容器间的网络连接方案。
- volume plugins:处理持久化存储卷的挂载和卸载
应用组件
- Container Runtime:例如Docker或containerd,负责在节点上运行容器。
- CoreDNS:提供DNS服务,解析服务名称到它们的IP地址。
- Ingress Controller:管理外部访问集群内部服务的入口。
综上所述,还有身份认证和授权组件(如 kube-auth)、日志记录和监控组件(如 kube-state-metrics 和 Prometheus 等)以及其他辅助工具和服务,共同构成了功能完备的 Kubernetes 集群