超详细 Kubectl 完整命令手册(生产级、全分类、带参数解释+实操示例)
超详细 Kubectl 完整命令手册
(生产级、全分类、带参数解释 + 实操示例)
一、基础语法 & 全局通用参数
1. 标准语法
kubectl 【子命令】【资源类型】【资源名称】【可选参数】2. 全局必用通用参数
| 参数 | 作用 |
|---|---|
| `-n, --namespace | 指定命名空间 |
-A, --all-namespaces | 遍历所有命名空间 |
-o <format> | 指定输出格式 |
-w, --watch | 实时监听资源变化 |
--dry-run=client | 模拟执行,不实际创建资源 |
--show-labels | 显示资源标签 |
-l key=val | 根据标签筛选资源 |
--sort-by=字段 | 结果排序 |
3. 全量资源全称 + 简写对照表(高频)
nodes / no # 节点 namespaces / ns # 命名空间 pods / po # 容器Pod deployments / deploy # 无状态部署 statefulsets / sts # 有状态部署 daemonsets / ds # 守护进程集 services / svc # 服务 ingresses / ing # 路由 ingress configmaps / cm # 配置文件 secrets / sec # 密钥/敏感配置 persistentvolumes / pv # 存储卷 persistentvolumeclaims / pvc # 存储声明 jobs / jb # 一次性任务 cronjobs / cj # 定时任务 endpoints / ep # 服务后端端点 storageclasses / sc # 存储类4. 输出格式-o详解
\# 基础 kubectl get po -o wide # 详细信息:IP、节点、启动时间 kubectl get po -o yaml # 输出原生yaml配置 kubectl get po -o json # 输出json格式 \# 高级自定义 kubectl get po -o jsonpath='{.items\[0].metadata.name}' # 精准取值 kubectl get po -o custom-columns=NAME:.metadata.name,IP:.status.podIP # 自定义列二、集群 & 环境配置(连接 / 上下文 / 权限)
1. 集群基础信息
\# 查看客户端&集群版本 kubectl version \# 查看集群组件状态 kubectl get cs \# 查看集群整体信息 kubectl cluster-info \# 查看所有API资源&权限 kubectl api-resources \# 查看集群API版本 kubectl api-versions2. 多集群 / 多环境 Context 管理
\# 查看所有集群上下文 kubectl config get-contexts \# 切换集群/环境 kubectl config use-context kubernetes-admin@cluster \# 查看当前使用上下文 kubectl config current-context \# 设置默认命名空间(无需每次加 -n) kubectl config set-context --current --namespace=prod \# 查看 kubeconfig 完整配置 kubectl config view三、命名空间 Namespace 操作
K8s 资源默认隔离在命名空间,集群级资源(node/pv)无命名空间。
\# 查看所有命名空间 kubectl get ns \# 查看命名空间详情 kubectl describe ns default \# 创建命名空间 kubectl create ns dev \# 删除命名空间(会清空该ns下所有资源) kubectl delete ns dev \# 查看指定命名空间下全部资源 kubectl get all -n dev四、核心资源:增 / 删 / 改 / 查 全集
1. 查询资源get
\# 查单个类型资源 kubectl get po # 默认命名空间Pod kubectl get deploy -n prod # 指定命名空间deploy \# 一次性查询多种资源 kubectl get po,svc,deploy,ing -n prod \# 所有命名空间资源 kubectl get po -A \# 标签筛选查询 kubectl get po -l app=nginx -n prod \# 排序查看(按创建时间) kubectl get po --sort-by=.metadata.creationTimestamp2. 创建资源create
适合简单快速创建,不推荐复杂资源
\# 创建命名空间 kubectl create ns test \# 创建配置文件cm kubectl create cm app-config --from-literal=env=prod --from-file=app.conf \# 创建密钥secret kubectl create secret generic db-secret --from-literal=user=root --from-literal=pwd=123456 \# 创建service kubectl create svc clusterip nginx-svc --tcp=80:803. 声明式创建 / 更新apply【生产首选】
幂等操作,重复执行无报错,优先使用
\# 单个yaml文件 kubectl apply -f nginx-deploy.yaml \# 批量生效目录下所有yaml kubectl apply -f ./manifests/ \# 在线远程yaml(注:原URL可能存在访问问题,建议替换为有效地址) kubectl apply -f https://xxx/deploy.yaml4. 在线编辑修改edit
直接编辑集群内运行配置,实时生效
kubectl edit deploy nginx -n prod kubectl edit cm app-config -n prod kubectl edit svc nginx-svc -n prod5. 补丁修改patch(无需完整 yaml)
适合局部快速修改
\# 修改Pod资源限制 kubectl patch pod nginx-7f98765432 -p '{"spec":{"containers":\[{"name":"nginx","resources":{"limits":{"cpu":"500m"}}}]}}'6. 删除资源delete
\# 删除指定单个资源 kubectl delete po nginx-xxx -n prod kubectl delete deploy nginx -n prod \# 删除标签匹配的所有资源 kubectl delete po -l app=nginx -n prod \# 清空当前ns下所有Pod kubectl delete po --all -n prod \# 根据yaml文件删除资源 kubectl delete -f nginx-deploy.yaml \# 强制删除卡死Pod(无法自动销毁时) kubectl delete po nginx-xxx --force --grace-period=07. 导出现有资源 YAML
\# 导出运行中资源为yaml(用于备份/复用) kubectl get deploy nginx -n prod -o yaml > nginx-deploy.yaml \# 导出并去除集群独有字段 kubectl get deploy nginx -o yaml | kubectl neat > deploy.yaml五、Pod 容器全操作(日常运维最高频)
1. 查看 Pod 详情 & 排错事件
\# 查看Pod详细状态、启动事件、错误原因 kubectl describe po nginx-xxx -n prod2. 日志查看
\# 查看最新日志 kubectl logs nginx-xxx -n prod \# 实时滚动日志(重点) kubectl logs -f nginx-xxx -n prod \# 查看之前崩溃容器日志 kubectl logs -p nginx-xxx -n prod \# 多容器Pod,指定容器日志 kubectl logs nginx-xxx -c app-container -n prod \# 查看最近100行日志 kubectl logs --tail=100 nginx-xxx3. 进入容器内部
\# 交互式进入容器 bash kubectl exec -it nginx-xxx -n prod -- /bin/bash \# 无bash环境用sh kubectl exec -it nginx-xxx -- /bin/sh \# 直接在容器执行单条命令 kubectl exec nginx-xxx -- ls /data4. 本地 拷贝
\# 本地文件上传到容器 kubectl cp /local/file.txt nginx-xxx:/app/ -n prod \# 容器文件下载到本地 kubectl cp nginx-xxx:/app/logs.log ./ -n prod5. 端口转发(本地访问集群内部)
\# 本地8080 映射 Pod 80端口 kubectl port-forward pod/nginx-xxx 8080:80 -n prod \# 映射service端口 kubectl port-forward svc/nginx-svc 8080:806. 临时运行测试 Pod
\# 快速启动临时调试pod,用完即删 kubectl run debug --image=centos:7 -it --rm -- /bin/bash六、工作负载管理
1. Deployment 无状态应用
\# 查看deploy kubectl get deploy -n prod \# 手动扩缩容 kubectl scale deploy nginx --replicas=5 -n prod \# 动态更新镜像(滚动更新) kubectl set image deploy/nginx nginx=nginx:1.24 -n prod \# 查看滚动更新进度 kubectl rollout status deploy nginx -n prod \# 查看更新历史 kubectl rollout history deploy nginx -n prod \# 一键回滚上一版本 kubectl rollout undo deploy nginx -n prod \# 暂停/恢复发布 kubectl rollout pause deploy nginx kubectl rollout resume deploy nginx2. StatefulSet 有状态应用(数据库、中间件)
kubectl get sts -n middleware kubectl describe sts mysql-sts -n middleware kubectl scale sts mysql-sts --replicas=3 -n middleware3. DaemonSet 节点级守护进程(日志、监控)
kubectl get ds -n kube-system kubectl describe ds fluentd -n kube-system4. Job & CronJob 定时 / 一次性任务
\# 查看一次性任务 kubectl get job -n task \# 查看定时任务 kubectl get cj -n task \# 手动触发一次定时任务 kubectl create job --from=cj/backup-job backup-once七、网络资源:Service & Ingress
1. Service 服务暴露
kubectl get svc -n prod kubectl describe svc nginx-svc -n prod \# 暴露deploy为NodePort服务 kubectl expose deploy nginx --port=80 --type=NodePort -n prod \# 查看服务后端挂载节点 kubectl get ep -n prod2. Ingress 域名路由
kubectl get ing -n prod kubectl describe ing nginx-ing -n prod八、配置与密钥:ConfigMap & Secret
\# 查看 kubectl get cm -n prod kubectl get secret -n prod \# 查看详情(secret默认加密展示) kubectl describe cm app-config -n prod kubectl get secret db-secret -o yaml -n prod \# 编辑配置 kubectl edit cm app-config -n prod九、存储资源:PV / PVC / SC
\# 集群存储卷 kubectl get pv \# 应用存储挂载 kubectl get pvc -n prod \# 存储类 kubectl get sc \# 详情排查 kubectl describe pvc>十、节点 Node 集群运维1. 基础查看
kubectl get nodes kubectl get nodes -o wide kubectl describe node node-101
2. 节点维护操作
\# 标记节点不可调度(维护前禁止新Pod调度) kubectl cordon node-101 \# 驱逐节点上所有Pod(节点下线维护) kubectl drain node-101 --ignore-daemonsets --delete-emptydir-data \# 恢复节点调度 kubectl uncordon node-101
3. 节点标签 & 污点
\# 给节点打标签 kubectl label node node-101 node-role=worker \# 删除节点标签 kubectl label node node-101 node-role- \# 节点打污点(禁止普通Pod调度) kubectl taint node node-101 key=value:NoSchedule
十一、资源监控 & 性能
需集群安装metrics-server
\# 查看Pod CPU/内存占用 kubectl top po -n prod \# 查看节点资源使用率 kubectl top node
十二、全局事件 & 排错神器
\# 查看集群所有事件(排错第一命令) kubectl get events -n prod \# 按时间倒序查看错误事件 kubectl get events --sort-by=.metadata.creationTimestamp -A
十三、高频组合命令(生产常用)
\# 1. 强制重启deploy(重建所有Pod) kubectl rollout restart deploy nginx -n prod \# 2. 查看异常状态Pod kubectl get po -A | grep -E 'Error|CrashLoopBackOff|ImagePullBackOff' \# 3. 导出所有集群资源备份 kubectl get all -A -o yaml > k8s-all-backup.yaml \# 4. 清理所有无效、终止Pod kubectl delete po --field-selector status.phase=Failed -A
十四、补充:别名 + 自动补全(提升效率)
\# 设置别名 k=kubectl echo "alias k=kubectl" >> /etc/profile source /etc/profile \# bash自动补全 echo "source bash)" >> /etc/profile source /etc/profile
设置后直接用k get po、k describe deploy极简操作。
注意:文档中涉及的远程 YAML 文件 URL(https://xxx/deploy.yaml)存在解析失败问题,可能是链接无效或不支持的类型,建议替换为实际可用的 YAML 文件地址后再执行相关命令。
