以下是一份 Kubernetes kubectl
的常用命令总结,涵盖部署、运维、问题排查和资源管理。建议收藏备用:
一、部署与管理资源
1. 基础操作
-
创建资源
kubectl apply -f <manifest.yaml> # 通过 YAML 文件创建/更新资源 kubectl create deployment <name> --image=<image> # 快速创建 Deployment kubectl expose deployment <name> --port=80 --type=LoadBalancer # 创建 Service
-
更新资源
kubectl apply -f <updated-manifest.yaml> # 更新配置 kubectl set image deployment/<name> <container>=<new-image> # 更新镜像 kubectl rollout restart deployment/<name> # 重启 Deployment(触发滚动更新)
-
删除资源
kubectl delete -f <manifest.yaml> # 删除 YAML 中定义的资源 kubectl delete pod <pod-name> # 删除指定 Pod kubectl delete deployment <name> # 删除 Deployment
2. 查看资源状态
-
查看资源列表
kubectl get pods # 查看所有 Pod kubectl get deployments # 查看所有 Deployment kubectl get services # 查看所有 Service kubectl get nodes # 查看集群节点状态 kubectl get configmaps # 查看 ConfigMap kubectl get secrets # 查看 Secret
-
详细信息
kubectl describe pod <pod-name> # 查看 Pod 详细信息(事件、状态等) kubectl describe node <node-name> # 查看节点资源分配情况
-
查看日志
kubectl logs <pod-name> # 查看 Pod 日志 kubectl logs -f <pod-name> # 实时跟踪日志(类似 tail -f) kubectl logs <pod-name> -c <container> # 多容器 Pod 指定容器查看日志
二、运维与调试
1. 扩缩容
-
手动扩缩容
kubectl scale deployment/<name> --replicas=3 # 调整副本数
-
自动扩缩容 (HPA)
kubectl autoscale deployment/<name> --min=2 --max=5 --cpu-percent=80 # 基于 CPU 自动扩缩 kubectl get hpa # 查看 HPA 状态
2. 进入容器调试
- 执行命令
kubectl exec -it <pod-name> -- /bin/sh # 进入容器终端 kubectl exec <pod-name> -- <command> # 在容器内执行单条命令
3. 网络与端口转发
-
端口转发到本地
kubectl port-forward <pod-name> 8080:80 # 将 Pod 的 80 端口转发到本地 8080 kubectl port-forward service/<svc-name> 8080:80 # 转发 Service 端口
-
查看网络策略
kubectl get networkpolicy # 查看网络策略
三、问题排查
1. 资源状态检查
-
查看事件
kubectl get events --sort-by=.metadata.creationTimestamp # 按时间排序查看事件
-
资源使用情况
kubectl top nodes # 查看节点资源(CPU/Memory)使用 kubectl top pods # 查看 Pod 资源使用
2. Pod 故障排查
-
查看 Pod 状态
kubectl get pods -o wide # 查看 Pod 所在节点及 IP kubectl get pods --show-labels # 查看 Pod 的标签
-
常见错误场景
kubectl get pods -w # 实时监控 Pod 状态变化 kubectl describe pod <pod-name> # 检查 Events 中的错误信息(如镜像拉取失败、资源不足)
3. 集群状态检查
- 集群信息
kubectl cluster-info # 查看集群基本信息 kubectl version --short # 查看 kubectl 和集群版本 kubectl get componentstatuses # 查看核心组件状态(如 scheduler、controller-manager)
四、高级操作
1. 配置管理
-
编辑资源
kubectl edit deployment/<name> # 直接编辑 Deployment 配置 kubectl edit configmap/<name> # 编辑 ConfigMap
-
管理 ConfigMap/Secret
kubectl create configmap <name> --from-file=<path> # 从文件创建 ConfigMap kubectl create secret generic <name> --from-literal=key=value # 创建 Secret
2. 资源导出与迁移
-
导出资源配置
kubectl get deployment/<name> -o yaml > deploy.yaml # 导出 YAML
-
跨命名空间操作
kubectl get pods -n <namespace> # 指定命名空间 kubectl config set-context --current --namespace=<ns> # 设置默认命名空间
3. 调试工具
- 临时容器调试(需 Kubernetes v1.23+)
kubectl debug <pod-name> -it --image=busybox # 添加临时调试容器
五、常用命令速查表
场景 | 命令示例 |
---|---|
部署与更新 | kubectl apply -f deploy.yaml |
查看 Pod 日志 | kubectl logs -f <pod-name> |
进入容器 | kubectl exec -it <pod-name> -- /bin/bash |
查看 Service 详情 | kubectl describe svc <service-name> |
删除资源 | kubectl delete pod,svc -l app=myapp (按标签删除) |
查看资源 YAML | kubectl get pod <pod-name> -o yaml |
回滚 Deployment | kubectl rollout undo deployment/<name> |
六、实用技巧
-
别名简化命令:
在~/.bashrc
或~/.zshrc
中添加:alias k=kubectl alias kgp="kubectl get pods" alias kgd="kubectl get deployments"
-
使用
--help
:kubectl <command> --help # 查看子命令帮助(如 `kubectl create --help`)
-
JSONPath 查询:
kubectl get pods -o jsonpath='{.items[*].metadata.name}' # 提取所有 Pod 名称
掌握这些命令后,可以应对 Kubernetes 日常部署、运维和问题排查的绝大多数场景!建议结合官方文档实践:
👉 Kubernetes 官方文档