Skip to content

kubectl run - 创建pod

kubectl run 是 Kubernetes 命令行工具中用于快速创建并运行单个 Pod 的命令。它简化了临时 Pod 的启动过程,适合快速测试和调试场景。

基本语法

bash
kubectl run <POD_NAME> --image=<IMAGE> [其他参数]
  • <POD_NAME>:要创建的 Pod 名称(需唯一)。
  • --image:必填,指定容器镜像(如 nginx:1.23)。

核心参数详解

容器配置

参数说明示例
--image指定容器镜像--image=nginx:1.23
--port暴露容器端口--port=80
--env设置环境变量--env=KEY=VALUE
--command覆盖容器的默认启动命令--command -- sleep 3600
--args传递命令参数--args="--verbose"

Pod 控制

参数说明示例
--restart重启策略: Never(不重启) OnFailure(失败时重启) Always(默认)--restart=Never
--rm退出后自动删除 Pod(需与 -it 共用)--rm -it --image=busybox
--dry-run模拟运行(不实际创建)--dry-run=client -o yaml

交互与调试

参数说明示例
-it交互式终端(需配合 --command-it --image=alpine -- sh
--overrides动态覆盖 Pod 配置(JSON 格式)--overrides='{"spec": {"nodeSelector": {"env": "dev"}}}'

资源限制

参数说明示例
--requests设置资源请求--requests=cpu=100m,memory=256Mi
--limits设置资源上限--limits=cpu=1,memory=1Gi

经典案例

快速启动一个 Pod

bash
kubectl run nginx --image=nginx:1.23 --port=80
  • 创建一个名为 nginx 的 Pod,使用 Nginx 镜像,暴露 80 端口。

启动临时调试 Pod

bash
kubectl run debug-tool -it --image=alpine --rm -- sh
  • 启动一个临时 Alpine 容器,进入交互式 Shell,退出后自动删除。

覆盖默认命令

bash
kubectl run busybox --image=busybox --command -- sleep 3600
  • 运行 BusyBox 容器,覆盖默认命令为 sleep 3600

生成 YAML 模板

bash
kubectl run test --image=nginx --dry-run=client -o yaml > pod.yaml
  • 生成 Pod 的 YAML 模板并保存到文件,不实际创建。

带资源限制的 Pod

bash
kubectl run stress --image=stress-ng --limits=cpu=1,memory=512Mi --requests=cpu=0.5,memory=256Mi
  • 启动一个压力测试容器,限制 CPU 和内存使用。