微信关注运维爱背锅,用通俗易懂的方式教你运维
K8S面试题:K8S架构中每个组件的作用
大家好!今天我们来聊聊Kubernetes(简称K8S)中各个组件的作用,这是一道必问的面试题——各个组件就像一支分工明确的足球队,有人守门、有人射门,还有人负责喊战术。下面咱们就用“人话”拆解一下这些组件的职责。
1.etcd:集群的“八卦的小本本”
- 作用:分布式K-V(键值)存储数据库,专门记录集群的所有“秘密”,比如:Pod配置、节点状态、Service等资源的元数据。
- 冷知识:如果etcd挂了,整个集群会像失忆的鱼一样乱窜。所以它用Raft协议保证数据一致性,确保每个节点都“抄作业抄得一模一样”。
- 人话版:相当于班级的记事本,所有同学(节点)都得按本子上的规则办事。
2.API Server:集群的“前台小哥”
- 作用:提供api接口,所有对K8S集群的请求(比如创建Pod、查询Service)必须经过它,负责处理 RESTful 请求,验证和授权,管理资源状态。
- 冷知识:比如你说“我要删库跑路”,它会先查你的权限,然后告诉其他组件:“这人有问题,快拦住他!”(认证、鉴权)
- 人话版:像食堂打饭阿姨,你说“来份红烧Pod”,她负责确认你卡里有钱,然后把订单递给后厨。
3.Scheduler:金牌中介
- 作用:给新创建的Pod找“房子”(节点)。它会看哪个节点CPU空闲、内存充足,甚至考虑“这Pod喜欢和谁做邻居”(亲和性)。
- 另外一点:面试官很可能需要你回答出“预选”和“优选”这两个打分机制的步骤,所以必要时可以补充提及一下。
- 冷知识:如果所有节点都太忙,Pod会卡在“Pending”状态,像极了租房时中介说“再等等,我帮你找”。
- 人话版:像婚恋网站算法,根据身高(资源)、爱好(标签)、星座(污点)给你匹配对象(节点)。
4.Controller Manager:操碎心的班主任
- 作用:管理一堆“资源控制器”,比如Deployment控制器盯着副本数,Node控制器盯着节点健康状态。
- 冷知识:如果Pod挂了,它会像老妈子一样念叨:“说好的3个副本呢?赶紧再拉一个起来!”
- 人话版:像你手机里的闹钟App,每天定时喊你:“该起床(重启Pod)了!该喝水(扩容)了!”
5.Node(Worker):打工人集合
每个节点都是“干实事”的,包含三个关键角色:
5.1Kubelet:节点监工
- 作用:接收API Server的指令,管理Pod的生命周期,比如“启动容器”“挂掉就重启”。
- 冷知识:如果监工(Kubelet)失联,API Server会认为这个节点“旷工”,把它的任务(Pod)转给其他节点。
- 人话版:像工地包工头,每天拿着图纸(Pod配置)指挥工人(容器)干活。
5.2Kube-proxy:网络接线员
- 作用:负责Service的流量转发,维护ipvs\iptable规则,比如把访问
my-service:80
的请求随机打到后端的某个Pod。 - 冷知识:它不用亲自扛流量,而是修改iptables/IPVS规则,深藏功与名。
- 人话版:像外卖平台,你下单(请求Service)后,它自动分配骑手(Pod)给你送餐。
5.3 CRI容器运行时:搬砖牛马
- 作用:Docker/containerd等工具负责实际运行容器,比如“把镜像跑起来”“给容器联网”。
- 人话版:像咖啡机,你按下按钮(Kubelet指令),它就能吐出一杯热乎的容器咖啡。
CoreDNS:活体导航
- 作用:给Service提供域名解析,比如把
redis-service
翻译成10.96.123.45
。 - 冷知识:没有它,Pod之间只能靠IP喊话,像极了原始人用“啊呜啊呜”交流。
- 人话版:像手机里的地图App,告诉Pod:“你要找的数据库在XX路XX号(IP)!”
总结
- etcd: 分布式键值存储,保存集群状态和配置数据。
- API Server: 集群的前端接口,处理所有请求和资源操作。
- Controller Manager: 运行控制器,确保集群状态与期望一致。
- Scheduler: 将 Pod 调度到合适的节点上运行。
- Kube Proxy: 管理网络规则,实现服务负载均衡。
- Kubelet: 管理节点上的 Pod 和容器,确保它们正常运行。
只有全员配合,才能让集群稳定运行。下次面试被问到这个问题,你可以邪魅一笑:“这题我会” 😎
附:
控制平面(Control Plane) = API Server + Scheduler + Controller Manager + etcd + CRI(可选)
工作节点(Worker Node) = Kubelet + Kube-proxy + 容器运行时(CRI)
学会了?快去实践一下吧! 🚀