当前位置: 首页 > news >正文

K8s 核心三组件:kubelet、kubeadm、kubectl 知识点梳理​

在 Kubernetes(简称 K8s)生态中,kubeletkubeadmkubectl 是三个最基础且核心的组件 —— 它们分工明确又协同工作,支撑起 K8s 集群的部署、运行与管理。本文将系统梳理这三个组件的核心知识点,帮你快速掌握其定位与用法。​

一、先搞懂:三者的核心定位与关系​

在开始细分前,先建立一个整体认知:​

  • kubeadm:「集群搭建工具」—— 负责初始化 K8s 集群、添加节点、升级集群等 “搭建层面” 的操作;​
  • kubelet:「节点管家」—— 运行在每个 K8s 节点(Master/Worker)上,负责管理 Pod、容器的生命周期,确保容器按预期运行;​
  • kubectl:「命令行客户端」—— 用户与 K8s 集群交互的 “入口”,通过命令向集群发送指令,实现资源查询、创建、删除等操作。​

简单说:用 kubeadm 搭好集群,用 kubelet 维持节点 / 容器运行,用 kubectl 管理集群资源。​

二、组件详解:从功能到实操​

1. kubeadm:K8s 集群的 “搭建助手”​

(1)核心定位​

kubeadm 是官方提供的集群部署工具,旨在简化 K8s 集群的初始化与节点管理流程(替代手动部署 etcd、API Server 等组件的复杂操作)。它遵循 K8s 最佳实践,确保集群组件的版本兼容与配置规范。​

(2)核心功能​

  • 初始化 Master 节点:生成集群证书、启动 API Server、etcd、Controller Manager 等核心组件;​
  • 添加 Worker 节点:生成节点加入集群的令牌(Token),实现节点快速接入;​
  • 集群升级:一键升级 K8s 版本(如从 1.27 升级到 1.28),自动处理组件依赖;​
  • 证书管理:生成、续约集群所需的 TLS 证书(如 API Server 与 kubelet 的通信证书)。​

(3)常用实操命令​

命令​

作用​

kubeadm init​

初始化 Master 节点(需指定 Pod 网段,如--pod-network-cidr=10.244.0.0/16)​

kubeadm join <MasterIP:6443> --token <令牌> --discovery-token-ca-cert-hash <哈希值>​

将 Worker 节点加入集群(命令由kubeadm init执行后输出)​

kubeadm token create --print-join-command​

重新生成节点加入命令(旧令牌过期时使用)​

kubeadm upgrade plan​

检查可升级的 K8s 版本​

kubeadm upgrade apply <版本号>​

执行集群升级​

kubeadm reset​

重置节点(从集群移除时使用,会清理证书、配置文件等)​

(4)注意事项​

  • kubeadm 仅负责 “搭建集群”,不包含网络插件(需手动部署 Calico、Flannel 等);​
  • 初始化前需确保节点满足基础条件(如关闭 Swap、配置内核参数、安装容器运行时)。​

2. kubelet:节点上的 “容器管家”​

(1)核心定位​

kubelet 是运行在每个 K8s 节点上的代理程序,是节点与集群控制平面(API Server)的 “桥梁”。它的核心目标是:确保 Pod 中定义的容器都正常运行。​

(2)核心功能​

  • 接收 API Server 指令:从 K8s API Server 获取节点上的 Pod 配置(Pod Spec),并按配置启动 / 停止容器;​
  • 容器生命周期管理:通过容器运行时(如 containerd、CRI-O)创建容器、监控容器状态(如健康检查、存活探针),若容器异常则重启;​
  • 节点状态上报:定期向 API Server 汇报节点的资源使用情况(CPU、内存)、节点健康状态(Ready/NotReady);​
  • 资源约束:确保容器不超出 Pod Spec 中定义的资源限制(如resources.limits.cpu)。​

(3)工作原理​

  1. kubelet 启动后,会持续向 API Server “监听”(Watch)当前节点的 Pod 资源;​
  1. 当收到新的 Pod 调度指令时,通过CRI(容器运行时接口) 调用容器运行时(如 containerd)创建容器;​
  1. 定期检查容器状态,若容器退出且符合重启策略(如restartPolicy: Always),则重新启动容器;​
  1. 将容器 / 节点的状态通过 API Server 上报到 etcd(K8s 的数据库)。​

(4)常用实操命令​

命令​

作用​

systemctl status kubelet​

查看 kubelet 服务状态​

systemctl restart kubelet​

重启 kubelet 服务(配置修改后需执行)​

journalctl -u kubelet -f​

实时查看 kubelet 日志(排查问题常用)​

kubelet --version​

查看 kubelet 版本​

(5)关键配置​

kubelet 的配置文件通常位于 /var/lib/kubelet/config.yaml,核心配置项包括:​

  • clusterDNS:Pod 的 DNS 服务器地址(如 K8s 的 coredns 服务地址);​
  • clusterDomain:K8s 集群的域名(默认cluster.local);​
  • cgroupDriver:与容器运行时一致的 cgroup 驱动(如systemd,需与 containerd 配置匹配)。​

3. kubectl:用户与集群的 “交互入口”​

(1)核心定位​

kubectl 是 K8s 的命令行客户端工具,用户通过 kubectl 向 K8s API Server 发送请求,实现对集群中资源(Pod、Service、Deployment 等)的查询、创建、更新、删除等操作。​

(2)核心原理​

kubectl 的本质是 “API 请求封装器”:​

  1. 用户输入 kubectl 命令(如kubectl get pods);​
  1. kubectl 将命令转换为 K8s API 请求(如 GET /api/v1/namespaces/default/pods);​
  1. 通过kubeconfig文件(默认~/.kube/config)中的认证信息(证书、令牌)与 API Server 建立连接;​
  1. 接收 API Server 返回的结果,并以友好格式(如表格、JSON)展示给用户。​

(3)常用命令分类​

① 资源查询类(最常用)​

命令​

作用​

kubectl get pods​

查看当前命名空间的所有 Pod​

kubectl get pods -n <命名空间>​

查看指定命名空间的 Pod(如-n kube-system查看系统组件)​

kubectl get pods -o wide​

查看 Pod 详情(包含节点、IP 地址)​

kubectl get deployment​

查看 Deployment 资源​

kubectl get service​

查看 Service 资源(暴露 Pod 的网络服务)​

kubectl get nodes​

查看集群所有节点状态​

② 资源创建 / 删除类​

命令​

作用​

kubectl create deployment <名称> --image=<镜像>​

创建 Deployment(如kubectl create deployment nginx --image=nginx)​

kubectl apply -f <yaml文件>​

通过 YAML 文件创建 / 更新资源(推荐生产环境使用)​

kubectl delete pod <Pod名称>​

删除指定 Pod​

kubectl delete deployment <名称>​

删除指定 Deployment​

③ 资源操作类​

命令​

作用​

kubectl exec -it <Pod名称> -- /bin/bash​

进入 Pod 的容器内部(交互式终端)​

kubectl logs <Pod名称>​

查看 Pod 的日志​

kubectl logs <Pod名称> -f​

实时查看 Pod 日志​

kubectl describe pod <Pod名称>​

查看 Pod 的详细状态(排查故障常用,如启动失败原因)​

kubectl scale deployment <名称> --replicas=<数量>​

扩缩容 Deployment(如--replicas=3表示 3 个副本)​

④ 集群管理类​

命令​

作用​

kubectl config view​

查看当前 kubeconfig 配置​

kubectl config use-context <上下文名称>​

切换集群上下文(多集群管理时使用)​

kubectl top pod​

查看 Pod 的 CPU / 内存使用情况(需部署 metrics-server)​

(4)实用技巧​

  • 别名简化:在~/.bashrc中添加alias k=kubectl,后续可用k get pods替代kubectl get pods;​
  • YAML 模板生成:用kubectl create deployment nginx --image=nginx -o yaml --dry-run=client > nginx.yaml生成 YAML 模板,避免手动编写;​
  • 格式转换:用kubectl get pods -o json或kubectl get pods -o yaml将结果转为 JSON/YAML 格式,方便后续处理。​

三、三者协同:一个完整的集群操作流程​

最后用一个简单案例,看三者如何协同工作:​

  1. 用 kubeadm 搭建集群:​
  • 执行kubeadm init初始化 Master 节点,生成集群配置;​
  • 在 Worker 节点执行kubeadm join加入集群;​
  • 部署 Calico 网络插件,确保 Pod 间通信。​
  1. 用 kubectl 创建资源:​
  • 执行kubectl create deployment nginx --image=nginx,向 API Server 发送创建 Deployment 的请求;​
  • API Server 将请求存入 etcd,并通知 Controller Manager 创建 Pod。​
  1. 用 kubelet 运行容器:​
  • Worker 节点的 kubelet 监听 API Server,发现新的 Pod 调度到本节点;​
  • 通过 CRI 调用 containerd 创建 nginx 容器;​
  • 定期检查容器状态,若容器异常则重启,并将状态上报给 API Server。​
  1. 用 kubectl 查看结果:​
  • 执行kubectl get pods,kubectl 向 API Server 请求 Pod 状态;​
  • API Server 从 etcd 读取数据,返回给 kubectl,用户看到 “Running” 状态的 nginx Pod。​

总结​

kubelet、kubeadm、kubectl 是 K8s 的 “基石三组件”:​

  • 没有kubeadm,集群部署会变得繁琐复杂;​
  • 没有kubelet,节点无法运行容器,集群就是 “空壳”;​
  • 没有kubectl,用户无法高效管理集群资源。​

掌握这三个组件的核心用法,是入门 K8s 的关键一步。后续可结合实际场景(如部署应用、排查故障)进一步深化理解,让理论落地为实操能力。​

http://www.dtcms.com/a/512708.html

相关文章:

  • 网站设计的目的和意义seo是什么意思教程
  • 超低延迟与高并发:视频直播点播平台EasyDSS在游戏直播场景的技术实践
  • AIDD - 前沿生物科技 虚拟细胞 (Virtual Cells) 的头部公司
  • 做网站能带来什么问题数字创意设计包括哪些案例
  • 网络练习(选择题)
  • [环境配置]C4D OC渲染器解决缺少cudnn_9_7_0Octance正版缺少cudnn_9_7_0_win文件解决方法
  • 文档流程做网站深圳营销网站建设报价
  • 网站建设的认可正规的网站建设公
  • window 10 11 系统通知中心的消息捕获和转发 附exe文件和代码
  • IDEA集成GitHub
  • 青岛建韩国网站的公司企业网站备案是什么意思
  • 垫江网站建设费用浙江义乌网络科技有限公司
  • 【LNMP平台架构】之Discuz站点搭建
  • YOLOv4 全面解析:核心改进、数据增强与网络架构
  • 网页开发一:设计登录页
  • 智能网站搭建平台湛江网站建设湛江
  • 设计师网站推荐做网站里面的图片像素要求
  • C语言需要掌握的基础知识点之数组
  • DeepSeek-OCR可能成为开启新时代的钥匙
  • C++11:可变参数模板,lambda,function包装器
  • 商城网站建设要多少钱域名备案查询最新消息
  • 企业网站优化的方式我的家乡ppt模板免费下载
  • 算法-每日一题(DAY18)多数元素
  • 清远专业网站建设服务阿里云个人网站制作
  • 河北省保定市唐县城乡建设网站wordpress仿异次元下载页
  • springboot优雅停止的流程梳理
  • 音视频开发远端未发布视频占位图
  • 贵阳网站开发推荐你的网站赚钱吗
  • 上海备案证查询网站查询网站查询系统桂林论坛网站建设
  • QT6中三种设置控件及窗口大小的函数