Welcome to Firefly
切换语言
Firefly文档中心
最近更新: 2026-09-08 14:03:53

kubectl 常用命令

以下命令均在运行 K3s Server 的 bmc 节点上执行。由于 K3s Server 运行在 Docker 容器中,命令统一使用以下前缀:

sudo docker exec k3s-server kubectl

集群信息

命令用途
sudo docker exec k3s-server kubectl cluster-info查看集群 API Server 和核心组件信息
sudo docker exec k3s-server kubectl get nodes查看节点列表、状态、角色和版本
sudo docker exec k3s-server kubectl get nodes -o wide查看节点 IP、操作系统和容器运行时等详细信息
sudo docker exec k3s-server kubectl describe node <节点名称>查看节点资源、标签、污点和事件

Pod 管理

命令用途
sudo docker exec k3s-server kubectl get pods查看当前命名空间中的 Pod
sudo docker exec k3s-server kubectl get pods -n <命名空间>查看指定命名空间中的 Pod
sudo docker exec k3s-server kubectl get pods -A查看所有命名空间中的 Pod
sudo docker exec k3s-server kubectl get pods -o wide查看 Pod 的 IP 和所在节点
sudo docker exec k3s-server kubectl describe pod <Pod 名称>查看 Pod 详情、事件和容器配置
sudo docker exec k3s-server kubectl logs <Pod 名称>查看 Pod 日志
sudo docker exec k3s-server kubectl logs <Pod 名称> -f持续跟踪 Pod 日志
sudo docker exec k3s-server kubectl logs <Pod 名称> -c <容器名称>查看指定容器的日志
sudo docker exec k3s-server kubectl delete pod <Pod 名称>删除指定 Pod;由 Deployment 管理的 Pod 会自动重建

Service 管理

Service 用于为一组 Pod 提供稳定的访问入口。Pod 创建、删除或重启后,IP 地址可能发生变化,其他应用不应直接依赖 Pod IP。Service 会根据标签选择器找到对应的 Pod,并将请求转发到可用的 Pod。

简单来说:

  • Pod:实际运行应用的容器实例。
  • Service:为 Pod 提供稳定的名称和访问地址。
  • 客户端:通过 Service 访问应用,不需要关注 Pod 的具体 IP。

常见的 Service 类型如下:

类型访问范围适用场景
ClusterIP仅集群内部服务之间相互调用,默认类型
NodePort集群外部通过节点 IP 和端口访问测试或简单对外提供服务
LoadBalancer通过负载均衡器对外提供服务云环境或已配置负载均衡器的集群

在当前 K3s 环境中,可以使用 NodePort 将 Web 服务暴露给集群外部。例如,Service 将容器的 80 端口映射到节点上的一个端口后,可以通过 http://<节点 IP>:<NodePort> 访问应用。

命令用途
sudo docker exec k3s-server kubectl get svc查看当前命名空间中的 Service
sudo docker exec k3s-server kubectl get svc -n <命名空间>查看指定命名空间中的 Service
sudo docker exec k3s-server kubectl get svc -A查看所有命名空间中的 Service
sudo docker exec k3s-server kubectl describe svc <Service 名称>查看 Service 端口映射和后端 Pod
sudo docker exec k3s-server kubectl expose deployment <部署名称> --type=NodePort --port=80 --target-port=80 --name=<Service 名称>根据 Deployment 创建 NodePort Service

Deployment 管理

Deployment 用于管理需要持续运行的应用,例如 Web 服务、API 服务和后台服务。它通过 ReplicaSet 维护指定数量的 Pod 副本,并支持滚动更新、故障自动恢复和副本扩缩容。

适用场景:

  • 长期运行的无状态服务
  • 需要多个 Pod 副本的应用
  • 需要滚动更新或快速回滚的应用
命令用途
sudo docker exec k3s-server kubectl get deploy查看当前命名空间中的 Deployment
sudo docker exec k3s-server kubectl get deploy -n <命名空间>查看指定命名空间中的 Deployment
sudo docker exec k3s-server kubectl apply -f <YAML 文件>根据 YAML 文件创建或更新资源
sudo docker exec k3s-server kubectl delete -f <YAML 文件>根据 YAML 文件删除资源
sudo docker exec k3s-server kubectl scale deploy <部署名称> --replicas=<数量>调整 Deployment 的 Pod 副本数量
sudo docker exec k3s-server kubectl rollout status deploy/<部署名称>查看 Deployment 更新状态
sudo docker exec k3s-server kubectl rollout restart deploy/<部署名称>重启 Deployment 管理的 Pod

Job 管理

Job 用于执行一次性或有限时长的任务,例如数据处理、初始化操作和批量任务。Job 会创建 Pod,并持续重试,直到任务成功完成或达到配置的重试次数。

适用场景:

  • 一次性数据处理
  • 数据库初始化或迁移
  • 批量文件处理
  • 集群或应用初始化任务
命令用途
sudo docker exec k3s-server kubectl create job <Job 名称> --image=<镜像名称>创建一次性 Job
sudo docker exec k3s-server kubectl get jobs查看当前命名空间中的 Job
sudo docker exec k3s-server kubectl get jobs -A查看所有命名空间中的 Job
sudo docker exec k3s-server kubectl describe job <Job 名称>查看 Job 状态、Pod 和事件
sudo docker exec k3s-server kubectl wait --for=condition=complete job/<Job 名称> --timeout=180s等待 Job 执行完成
sudo docker exec k3s-server kubectl logs job/<Job 名称>查看 Job 生成的 Pod 日志
sudo docker exec k3s-server kubectl delete job <Job 名称>删除 Job 及其关联的 Pod
sudo docker exec k3s-server kubectl apply -f <Job YAML 文件>根据 YAML 文件创建或更新 Job

CronJob 管理

CronJob 用于按照预设的时间计划周期性创建 Job,例如定时备份、日志清理和周期性数据同步。每次调度会创建一个 Job,再由 Job 创建并运行 Pod。

适用场景:

  • 定时备份
  • 定时清理临时文件或日志
  • 周期性数据同步
  • 定时生成报表

CronJob 使用标准 Cron 表达式设置执行时间,例如 */5 * * * * 表示每 5 分钟执行一次。

命令用途
sudo docker exec k3s-server kubectl create cronjob <CronJob 名称> --image=<镜像名称> --schedule="*/5 * * * *"创建按计划执行的 CronJob
sudo docker exec k3s-server kubectl get cronjobs查看当前命名空间中的 CronJob
sudo docker exec k3s-server kubectl get cronjobs -A查看所有命名空间中的 CronJob
sudo docker exec k3s-server kubectl describe cronjob <CronJob 名称>查看 CronJob 的调度计划、状态和事件
sudo docker exec k3s-server kubectl get jobs --sort-by=.metadata.creationTimestamp查看 CronJob 创建的 Job
sudo docker exec k3s-server kubectl get pods --sort-by=.metadata.creationTimestamp查看 CronJob 创建的 Pod
sudo docker exec k3s-server kubectl patch cronjob <CronJob 名称> -p '{"spec":{"suspend":true}}'暂停 CronJob 的后续调度
sudo docker exec k3s-server kubectl patch cronjob <CronJob 名称> -p '{"spec":{"suspend":false}}'恢复 CronJob 的调度
sudo docker exec k3s-server kubectl delete cronjob <CronJob 名称>删除 CronJob 及其后续调度
sudo docker exec k3s-server kubectl apply -f <CronJob YAML 文件>根据 YAML 文件创建或更新 CronJob

命名空间和配置

命名空间(Namespace)用于在同一个 K3s 集群中划分相互隔离的资源范围。可以按照项目、团队或业务环境创建不同的命名空间,例如 devtestprod,避免不同应用的资源名称发生冲突,也便于进行权限和资源管理。

ConfigMap 和 Secret 用于保存应用运行所需的配置:

  • ConfigMap:保存普通配置,例如环境变量、配置文件和服务地址。
  • Secret:保存敏感信息,例如密码、Token 和证书。Secret 不是完整的加密存储方案,使用时仍应限制访问权限,避免将敏感内容提交到代码仓库。

创建应用时,可以在资源清单中通过 metadata.namespace 指定命名空间;执行命令时,可以使用 -n <命名空间> 指定目标命名空间。如果未指定命名空间,命令默认作用于当前命名空间,通常为 default

命令用途
sudo docker exec k3s-server kubectl get ns查看所有命名空间
sudo docker exec k3s-server kubectl create ns <命名空间名称>创建命名空间
sudo docker exec k3s-server kubectl get configmap查看当前命名空间中的 ConfigMap
sudo docker exec k3s-server kubectl get secret查看当前命名空间中的 Secret
sudo docker exec k3s-server kubectl get events -A --sort-by=.lastTimestamp按时间顺序查看所有命名空间的事件

资源和故障排查

命令用途
sudo docker exec k3s-server kubectl top nodes查看节点 CPU 和内存使用情况
sudo docker exec k3s-server kubectl top pods -A查看所有 Pod 的 CPU 和内存使用情况
sudo docker exec k3s-server kubectl get pods -A -o wide查看所有 Pod 的状态、IP 和所在节点
sudo docker exec k3s-server kubectl describe pod <Pod 名称> -n <命名空间>查看 Pod 的详细信息和异常事件
sudo docker logs --tail=200 k3s-server查看 K3s Server 容器日志

本页目录