K8s核心命令详解(kubectl、kubelet、kubeadm)------ 新手必看
在GitLab CI/CD + K3s实践过程中,常会接触到kubectl、kubelet、kubeadm,三者分工明确、缺一不可,以下从作用、应用场景、核心区别三方面详细拆解,结合CI/CD实践场景说明,帮助快速理解并落地使用。
先澄清:常见拼写误区
日常实践中,新手易将核心命令拼错,明确以下3个核心组件:
-
kubectl:K8s/K3s 命令行客户端(最常用,用于操作集群) -
kubelet:K8s/K3s 节点上的核心代理组件(运行在每个节点,负责容器管理) -
kubeadm:K8s 集群初始化/管理工具(用于部署、升级集群,K3s中可简化使用)
一、三大核心组件(命令)详细解析
1. kubectl ------ 集群"操作终端"(你最常用的命令)
核心定位:Kubernetes/K3s 的命令行客户端工具,是开发者/运维人员与K8s集群交互的"桥梁",相当于"集群遥控器",所有集群操作(创建、删除、查看资源)均通过它执行。
核心作用:向K8s集群的API Server发送指令,管理集群内所有资源(Pod、命名空间、部署、服务等),无需直接操作集群节点或容器。
应用场景(贴合CI/CD实践):
-
CI/CD流水线中,部署应用:
kubectl apply \-f 部署配置文件\.yaml -
查看Pod状态(排查部署问题):
kubectl get pods \-n 命名空间 -
查看Pod日志(排查应用报错):
kubectl logs \-n 命名空间 Pod名称 -
删除异常资源:
kubectl delete pods \-n 命名空间 \-\-all
关键特点:客户端工具,可安装在集群节点,也可安装在本地(配置kubeconfig后远程连接集群);仅负责"发送指令",不负责"执行指令"。
2. kubelet ------ 节点"管家"(集群底层核心组件)
核心定位 :运行在K8s/K3s集群的每一个节点(主节点+从节点)上的守护进程(后台服务),是节点与集群控制平面(API Server)通信的核心,相当于"节点的管家"。
核心作用:监听API Server下发的指令(如"启动一个Pod""停止一个容器"),执行具体操作,确保节点上的容器按照预期运行;同时向API Server汇报节点和容器的状态。
应用场景(无需手动频繁操作,却至关重要):
-
自动启动Pod:当你用kubectl下发"部署应用"指令后,kubelet会接收指令,拉取镜像、启动容器,确保Pod正常运行。
-
监控容器状态:若容器崩溃,kubelet会根据配置(如重启策略)自动重启容器,保障应用可用性。
-
汇报节点状态:向API Server上报节点的资源使用情况(CPU、内存)、健康状态,若节点故障,集群会及时感知。
关键特点:底层组件,默认随K3s/K8s一起安装,后台自动运行,新手无需手动操作;若kubelet故障,该节点会被集群标记为"不可用",无法部署新Pod。
3. kubeadm ------ 集群"搭建工具"(集群初始化专用)
核心定位:Kubernetes官方提供的集群初始化和管理工具,用于快速搭建、升级、重置K8s集群,简化集群部署流程(K3s中已集成类似功能,可简化使用)。
核心作用:自动生成集群所需的证书、配置文件,初始化集群控制平面(API Server、etcd等),添加节点到集群,升级集群版本等。
应用场景(集群部署/维护阶段使用):
-
初始化K8s集群(主节点):
kubeadm init(K3s中用k3s server替代,更简洁) -
将从节点加入集群:
kubeadm join(K3s中可通过复制token快速加入) -
升级K8s集群版本:
kubeadm upgrade -
重置集群(彻底清理集群配置):
kubeadm reset(类似你之前清理K3s配置的操作)
关键特点:集群部署专用工具,仅在搭建、升级、重置集群时使用;不参与日常的Pod管理、容器运行,与你的CI/CD日常操作关联度较低,但集群搭建离不开它。
二、三大组件核心区别(表格对比,一目了然)
| 组件(命令) | 核心定位 | 核心作用 | 应用场景 | 是否手动频繁操作 |
|---|---|---|---|---|
kubectl |
集群命令行客户端(遥控器) | 向API Server发送指令,管理集群资源 | CI/CD部署、日常排查、资源管理 | 是(高频使用,如查看Pod、部署应用) |
kubelet |
节点守护进程(管家) | 执行指令、管理容器、汇报节点状态 | 后台运行,保障容器正常运行 | 否(仅故障时需排查,无需日常操作) |
kubeadm |
集群部署/管理工具(搭建器) | 初始化、升级、重置集群 | 集群搭建、版本升级、集群重置 | 否(仅集群维护时使用) |
三、新手避坑&实践总结(贴合CI/CD场景)
-
- 日常CI/CD操作,重点掌握
kubectl:kubectl delete、kubectl describe等命令,都是kubectl的核心用法,后续部署应用、排查问题,它是核心工具。
- 日常CI/CD操作,重点掌握
-
kubelet无需手动操作,但要知道它的作用:若出现"Pod一直处于Pending状态""容器无法启动",可排查kubelet状态(systemctl status kubelet),大概率是kubelet故障导致。
-
- K3s中可简化
kubeadm的使用:K3s是轻量级K8s,已集成集群初始化功能,无需用kubeadm init,直接用k3s server即可启动主节点,更适合新手。
- K3s中可简化
-
- 三者关系总结:用
kubeadm(或K3s自带命令)搭建集群 →kubelet在每个节点后台运行,负责执行指令 → 用kubectl发送指令,管理集群,完成CI/CD部署。
- 三者关系总结:用
四、高频实用命令汇总
bash
# 1. kubectl(日常高频)
kubectl get pods -n 命名空间 # 查看命名空间下所有Pod状态
kubectl describe pod Pod名称 -n 命名空间 # 查看Pod详细信息(排查故障)
kubectl logs Pod名称 -n 命名空间 --tail=50 # 查看Pod最近50行日志
kubectl apply -f 部署文件.yaml # 部署应用(CI/CD流水线常用)
kubectl delete pod Pod名称 -n 命名空间 # 删除指定Pod
# 2. kubelet(排查故障用)
systemctl status kubelet # 查看kubelet运行状态
systemctl restart kubelet # 重启kubelet(故障时尝试)
# 3. kubeadm(集群维护用,K3s可简化)
kubeadm init # 初始化K8s主节点
kubeadm join 主节点IP:端口 --token 令牌 # 加入从节点
kubeadm reset # 重置K8s集群