在K8S中,集群相关组件有哪些?
在 Kubernetes(K8s)中,集群相关的组件主要分为两类:控制平面组件和节点组件。
控制平面组件(Master Components):
-
kube-apiserver:它是整个系统的入口,提供 RESTful API 接口供用户和内部组件与集群进行交互。所有资源的增删改查操作都通过它来完成,并将状态持久化存储在 etcd 中。
-
etcd:一个分布式键值存储系统,用于存储集群的所有重要配置数据和状态信息,保证了数据的一致性和高可用性。
-
kube-scheduler:负责监控新创建但未调度的Pod,根据调度策略为其选择合适的节点进行分配。
-
kube-controller-manager:运行多个控制器进程,这些控制器包括节点控制器、副本集控制器、端点控制器等,它们确保集群的实际状态与用户的期望状态保持一致。
-
cloud-controller-manager(可选):与云服务商的基础设施集成,管理如节点自动注册、负载均衡器、存储卷等外部依赖资源。
节点组件(Worker Node Components):
- 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 集群。