【Kubernetes】 常用命令速查与参数详解 文章目录1. 环境管理 (Minikube)核心命令minikube startminikube imageminikube docker-envminikube tunnel2. 资源查看与基础管理 (Basic Operations)kubectl getkubectl describekubectl deletekubectl explain3. Pod 生命周期与调试 (Debugging)kubectl runkubectl logskubectl execkubectl port-forwardkubectl cp4. 标签与筛选 (Labels Selectors)kubectl labelSelector 参数 (-l)5. 控制器与应用管理 (Deployments ReplicaSets)kubectl applykubectl scalekubectl rolloutkubectl patch6. Helm 包管理核心命令helm repohelm searchhelm installhelm upgradehelm pull7. 总结常用的参数组合本文档基于Kubernetes Up Running学习笔记Chapter 3 - 10对学习过程中涉及的minikube、kubectl及helm命令进行系统性总结。文档旨在不仅列出命令更重点解释核心参数Flags的含义与使用场景帮助理解命令背后的机制。1. 环境管理 (Minikube)Minikube 是我们在 macOS 上运行本地 Kubernetes 集群的工具。它在 Docker 容器中封装了一个单节点或多节点的 K8s 集群。核心命令minikube start启动集群。-p name: 指定配置文件的名称Profile用于同时管理多个集群。--nodes n: 指定启动节点的数量。--memory,--cpus: 限制虚拟机的资源注意集群创建后无法直接修改需重建。# 启动一个名为 k8s-demo 的集群包含 2 个节点minikube start-pk8s-demo--nodes2minikube image管理 Minikube 内部 Docker 环境的镜像。由于 Minikube 与宿主机 Docker 环境隔离大镜像建议先下载到宿主机再导入 Minikube。load: 将宿主机 Docker 镜像导入 Minikube。ls: 列出 Minikube 内的镜像。# 将宿主机的 starrocks/fe-ubuntu:latest 导入 Minikubeminikube image load starrocks/fe-ubuntu:latestminikube docker-env配置当前 Shell 终端的环境变量使其直接指向 Minikube 内部的 Docker Daemon。作用执行后宿主机的docker build命令会直接构建镜像到 Minikube 中无需推送到远程仓库。退出关闭终端或执行eval $(minikube docker-env -u)。# 切换 Docker 环境指向 Minikubeeval$(minikube docker-env)minikube tunnel创建一个网络隧道用于向宿主机暴露 LoadBalancer 类型的 Service。注意该命令会独占一个终端窗口且需要sudo权限。sudominikube tunnel2. 资源查看与基础管理 (Basic Operations)这是与 K8s 交互最高频的命令组。kubectl get列出资源列表。-o wide:最常用。显示更多列信息如 Pod IP、所在 Node 节点、镜像名称。-o yaml/-o json: 输出资源的完整定义常用于导出配置或查看系统添加的默认字段。--show-labels: 显示资源绑定的所有标签。-w/--watch: 持续监听资源变化类似于tail -f。-A/--all-namespaces: 列出所有命名空间的资源。# 查看 Pod 运行在哪个节点上排查调度问题kubectl get pods-owide# 实时监控 Pod 创建过程kubectl get pods-w# 导出 Deployment 配置用于备份kubectl get deploy my-app-oyamlmy-app-backup.yamlkubectl describe查看资源的详细描述是排错Troubleshooting的第一手工具。核心关注点底部的Events区域。这里记录了调度成功、镜像拉取失败、探针检查失败等关键事件。# 查看 Pod 启动失败的具体原因如 ImagePullBackOffkubectl describe pod my-pod-namekubectl delete删除资源。-f file: 删除文件中定义的所有资源。--now: 立即删除忽略宽限期强制终止。# 根据配置文件删除资源kubectl delete-fnginx-pod.yamlkubectl explain内置的 API 文档手册。当忘记 YAML 字段层级时非常有用。# 查看 Pod 的 spec.containers 字段下有哪些属性kubectl explain pod.spec.containers3. Pod 生命周期与调试 (Debugging)kubectl run快速创建一个单 Pod非 Deployment。常用于临时测试或排错。--image: 指定镜像。--restart: 重启策略Never创建普通 PodOnFailure创建 Job。--port: 指定容器暴露端口。--dry-runclient -o yaml:技巧。不实际创建而是生成 YAML 模板。# 生成一个简单的 Pod YAML 模板kubectl run temp-pod--imagenginx--restartNever --dry-runclient-oyamlpod.yamlkubectl logs查看容器日志。-f: 持续流式输出Follow。-c container: 当 Pod 包含多个容器如 Sidecar时必须指定容器名称。--previous: 查看上一次崩溃前的日志排查 CrashLoopBackOff。# 查看 starrocks namespace 下带有特定标签的 Pod 日志kubectl logs-nstarrocks-lapp.kubernetes.io/componentoperator-fkubectl exec在运行的容器中执行命令。-it: 分配交互式终端Interactive TTY。--: 分隔符用于区分 kubectl 参数和容器内命令。# 进入容器内部 Shellkubectlexec-itmy-pod -- /bin/bashkubectl port-forward将集群内部端口映射到本地localhost用于调试未暴露公网的服务。# 将 Pod 的 80 端口映射到本地 8080kubectl port-forward pod/nginx-pod8080:80kubectl cp在本地与容器之间复制文件。# 将本地配置文件复制到容器内kubectlcp./config.toml my-pod:/etc/config/config.toml4. 标签与筛选 (Labels Selectors)标签Labels是 K8s 组织资源的核心机制Service 和 Deployment 均通过 Selector 关联 Pod。kubectl label添加或修改标签。--overwrite: 覆盖已存在的标签值。-: 移除标签如key-。# 给 Pod 打上 envproduction 标签kubectl label pods barenvproduction# 移除 env 标签kubectl label pods bar env-Selector 参数 (-l)几乎所有 kubectl 命令都支持-l参数用于批量操作。# 删除所有 appnginx 的 Podkubectl delete pods-lappnginx# 查看 releasecanary 的所有资源kubectl get all-lreleasecanary5. 控制器与应用管理 (Deployments ReplicaSets)涉及 Chapter 9 (ReplicaSets) 和 Chapter 10 (Deployments) 的核心内容。kubectl apply声明式配置的核心。根据文件内容创建或更新资源。-f file/dir: 指定文件或目录。kubectl apply-f./deployment.yamlkubectl scale手动调整副本数。--replicasn: 目标副本数。# 将 Nginx 扩容到 3 个副本kubectl scale deployment nginx-deploy--replicas3kubectl rollout管理 Deployment 的滚动更新。status: 查看更新进度。history: 查看历史版本。undo: 回滚到上一个版本。pause/resume: 暂停/恢复更新常用于金丝雀发布。# 检查更新状态kubectl rollout status deployment/nginx-deploy# 回滚到上一个版本kubectl rollout undo deployment/nginx-deploykubectl patch动态修改资源的特定字段无需编辑完整 YAML。--typemerge: 合并模式默认。--typejson: JSON Patch 模式支持更复杂的数组操作。# 修改 Deployment 的镜像拉取策略kubectl patch deployment my-dep-p{spec:{template:{spec:{containers:[{name:app,imagePullPolicy:IfNotPresent}]}}}}6. Helm 包管理Helm 是 K8s 的包管理器用于管理复杂的应用集合Chart。核心命令helm repo管理 Chart 仓库。add name url: 添加仓库。update: 更新本地缓存。helm search查找 Chart。repo keyword: 在已添加的仓库中搜索。helm install安装 Chart。-n ns --create-namespace: 指定并自动创建命名空间。-f values.yaml: 使用自定义配置文件覆盖默认值。helminstallstarrocks starrocks/kube-starrocks-nstarrocks-fmy-values.yamlhelm upgrade更新已安装的 Release。幂等性如果配置未变Helm 不会执行多余操作如果变了只更新差异部分。避坑不要使用--force已废弃。如有冲突建议先 delete 冲突资源再 install/upgrade。helm upgrade starrocks starrocks/kube-starrocks-nstarrocks-fmy-values.yamlhelm pull下载 Chart 到本地查看。--untar: 下载并自动解压。# 下载并解压以便查看其中的 values.yaml 默认配置helm pull starrocks/kube-starrocks--untar7. 总结常用的参数组合场景推荐命令组合作用日常巡检kubectl get pods -o wide查看 Pod IP 分布和所在节点排查崩溃kubectl describe pod name查看 Events 事件和状态原因排查应用kubectl logs -f pod实时查看应用日志生成模板kubectl run tmp --imageimg --dry-runclient -o yaml快速生成 YAML 骨架批量清理kubectl delete pod -l appdemo按标签批量删除强制删除kubectl delete pod name --grace-period0 --force强制删除卡死的 Pod (慎用)