kubectl
、kubeadm
和 kubelet,
kube-proxy的概念和关系
一、kubeadm:K8s 集群的 “搭建工程师”
核心定位
如果把 K8s 集群比作一栋大楼,kubeadm
就是负责 “打地基、搭框架” 的工程师,专门用来快速搭建 K8s 集群的工具。
具体工作内容
初始化集群骨架
- 启动集群时,只需要一条命令(比如
kubeadm init
),它就会自动:- 部署控制平面组件(如 API Server、Scheduler、Controller Manager);
- 配置网络插件(让容器能互相通信);
- 生成集群运行所需的证书和配置文件。
- 就像盖楼时先搭好承重柱和横梁,
kubeadm
会确保集群的基础架构能稳定运行。
- 启动集群时,只需要一条命令(比如
添加节点到集群
- 当需要扩展集群(比如增加更多服务器)时,
kubeadm join
命令会生成一个 “入伙凭证”,新节点用这个凭证就能加入集群,就像往大楼里添加更多房间。
- 当需要扩展集群(比如增加更多服务器)时,
简化环境依赖
- 自动处理 K8s 运行所需的依赖(如 Docker、containerd 容器运行时),不用手动逐个安装配置,降低了搭建集群的门槛。
类比理解
kubeadm
就像 “一键安装包”,比如你想搭建一个论坛网站,不需要从零搭建服务器环境,用 kubeadm
类似的工具能快速部署好论坛的基础架构。
二、kubelet:节点上的 “容器管家”
核心定位
每个 K8s 节点(物理机或虚拟机)上都必须运行 kubelet
,它是节点的 “大管家”,负责管理节点上的所有容器。
具体工作内容
接收并执行指令
- 控制平面(如 API Server)会告诉
kubelet
:“在这个节点上运行某个容器应用”,kubelet
就会调用容器运行时(如 Docker、containerd)来启动容器,就像管家按主人的要求安排任务。
- 控制平面(如 API Server)会告诉
监控容器状态
- 持续检查容器是否在运行、资源使用情况(CPU、内存),如果容器挂了,会尝试重启;如果节点资源不足,会向控制平面汇报,避免过载。
节点与集群的 “桥梁”
- 收集节点的健康状态、资源信息(如硬盘空间),反馈给控制平面,让集群知道每个节点的 “健康情况”,以便调度任务。
类比理解
kubelet
类似小区物业管家:
- 业主(控制平面)下达 “安排住户(容器)入住” 的指令,管家负责找房间(节点资源)、安排入住(启动容器);
- 平时监控住户是否正常生活(容器运行状态),有问题及时处理(重启容器),并向业主汇报小区情况(节点状态)。
三、kubectl:用户的 “集群遥控器”
核心定位
kubectl
是用户与 K8s 集群交互的命令行工具,就像电视遥控器,通过它可以向集群发送各种操作指令。
具体工作内容
管理集群资源
- 用
kubectl
可以创建、删除、查看各种 K8s 资源,比如:- 部署应用:
kubectl apply -f app.yaml
(根据配置文件启动容器应用); - 查看状态:
kubectl get pods
(查看所有运行的容器组); - 伸缩应用:
kubectl scale deployment my-app --replicas=5
(把应用副本数增加到 5 个)。
- 部署应用:
- 就像用遥控器切换电视频道、调节音量,
kubectl
让用户能灵活控制集群。
- 用
调试与排查问题
- 当容器应用出问题时,用
kubectl logs pod-name
查看日志,或kubectl exec -it pod-name sh
进入容器内部调试,相当于用遥控器检查电视哪里出了故障。
- 当容器应用出问题时,用
配置集群参数
- 通过修改配置文件,用
kubectl
提交更新,比如调整应用的资源限制、更新镜像版本等,实时修改集群的运行方式。
- 通过修改配置文件,用
类比理解
kubectl
就是用户的 “集群遥控器”:想让集群做什么,直接通过命令告诉它 —— 比如 “我要启动一个微信服务”“我要看当前有多少个容器在运行”,所有操作都通过这个工具来传达。
四、三者的协作关系:从 “搭建” 到 “管理” 的全流程
- 搭建阶段:
kubeadm
负责快速搭好集群框架,初始化控制平面和节点; - 运行阶段:每个节点的
kubelet
负责管理本地容器,与控制平面通信; - 操作阶段:用户通过
kubectl
向集群发送指令,kubelet
接收并执行,实现对容器应用的管理。
类比场景
- 建小区(集群):
kubeadm
负责买地、建楼(初始化集群); - 小区运营:每个楼的管家(
kubelet
)管理住户(容器),处理日常事务; - 业主操作:住户(用户)通过物业系统(
kubectl
)提交需求(如报修、搬家),管家接收并处理。
五,kube-proxy:集群网络的 “交通指挥员”
1. 核心定位:让容器服务能被 “找到”
K8s 集群中,每个容器都有自己的 IP,但当容器被部署在不同节点上时,如何让它们互相访问?kube-proxy
就是解决这个问题的 “网络管家”,负责实现服务的网络通信和负载均衡。
2. 具体工作内容:三种 “交通指挥” 模式
模式 1:iptables 代理(默认)
就像在路口设置路牌,kube-proxy
用 Linux 的iptables
规则,将访问服务 IP 的请求转发到具体的容器 IP 上。例如,当用户访问 “微信服务” 的 IP 时,iptables
规则会告诉网络:“把请求交给节点 A 上的微信容器 1 或节点 B 上的微信容器 2”,实现流量分发。模式 2:ipvs 代理(高性能场景)
比iptables
更高效的 “智能交通系统”,适合大规模集群。它维护一个服务到容器的映射表,像高速路的 ETC 系统一样快速转发流量,减少延迟。模式 3:userspace 代理(旧版本兼容)
相当于 “人工指挥交通”,所有流量先经过kube-proxy
进程再转发给容器,性能较低,现在很少用。
3. 类比理解:快递分拣中心
- 集群中的服务(如 Web 应用)像 “快递公司总部”,有一个对外的地址(服务 IP);
kube-proxy
像分拣中心的工作人员,收到寄给 “总部” 的快递(网络请求)后,根据包裹信息(请求类型),把快递送到具体的分店(容器实例),确保每个请求都能准确到达目的地。