k8s的组件有哪些
一、在node节点上面
每个节点有个kube-proxy,在每个node上面运行。负责pod和pod之间,pod和外面的网络通信。
每个节点还有kubelet,接收api-server的指令,负责pod的创建/销毁,上报pod的状态给面板。
每个节点还有容器运行时,负责跟容器接口,一般有docker ,contianerd,CRI_O等
二、控制组件
kube-apiserver, 负责认证授权,跟etcd打交道。
etcd,保存集群状态,pod配置,节点信息,服务规则等等。
kube-scheduler,负责pod调度,分配到合适的node上面
kube-controller-manager:
1)node控制器
2)副本控制器
3)部署控制器,负责回滚和部署
4)维护service和pod之间的关系
5)自动更新service和ip之间的对应关系
三、附加组件(Add-ons)
附加组件用于增强集群功能,常见的有:
-
CoreDNS
- 提供集群内部的 DNS 服务,解析 Service 和 Pod 的域名(如
my-service.default.svc.cluster.local),实现 Pod 之间通过服务名通信。
- 提供集群内部的 DNS 服务,解析 Service 和 Pod 的域名(如
-
Ingress Controller
- 实现 Ingress 资源的功能,管理外部访问集群内服务的 HTTP/HTTPS 路由(如 Nginx Ingress、Traefik)。
-
Dashboard
- Kubernetes 的 Web UI,用于可视化查看集群状态、管理资源(如创建 Pod、查看日志)。
-
监控组件
- Prometheus + Grafana:采集和展示集群及应用的监控指标(CPU、内存、响应时间等)。
-
日志组件
- EFK/ELK Stack(Elasticsearch + Fluentd + Kibana):集中收集、存储和查询容器日志。
k8s主要是pause ,pause里面可能有多个pod,共享存储,网络,资源。 k8s的pod是核心,可以是无状态的deployment,可以是有状态的StatefulSet k8s的service 对应很多个pod ,ingress对应service k8s的ingress,配置域名,以及后端服务的node ip, port,实现负载均衡,对外提供服务 k8s的config map,给容器提供环境变量配置 k8s的pvc 对应底层的磁盘,pv是一个商品,比如10GB的容量,一个pvc跟service绑定,service可能不用关心pv, k8s负责为pvc找到合适的pv。实际管理员可以指定。
k8s的每个node最好是一个独立的物理机,上面安装了容器组件,contarind。拉取的镜像会在每个物理机缓存,如果容器pull失败,则去看物理机是否能拉取成功。