Kubernetes (k8s) 命令大全
以下是 Kubernetes 常用命令分类整理,涵盖集群管理、Pod、Deployment、Service、ConfigMap、Secret 等核心资源操作。
一、基础命令
1. 查看集群信息
kubectl cluster-info # 查看集群信息
kubectl get nodes # 查看所有节点
kubectl describe node <节点名> # 查看节点详情
2. 查看资源
kubectl get pods # 查看所有 Pod
kubectl get pods -o wide # 查看 Pod 详细信息(包括 IP 和节点)
kubectl get deployments # 查看所有 Deployment
kubectl get services # 查看所有 Service
kubectl get configmaps # 查看所有 ConfigMap
kubectl get secrets # 查看所有 Secret
kubectl get all # 查看所有核心资源(Pod、Deployment、Service 等)
3. 查看资源详情
kubectl describe pod <Pod名> # 查看 Pod 详情
kubectl describe deployment <Deployment名> # 查看 Deployment 详情
kubectl logs <Pod名> # 查看 Pod 日志
kubectl logs -f <Pod名> # 实时查看 Pod 日志(类似 tail -f)
4. 删除资源
kubectl delete pod <Pod名> # 删除 Pod
kubectl delete deployment <Deployment名> # 删除 Deployment
kubectl delete service <Service名> # 删除 Service
kubectl delete configmap <ConfigMap名> # 删除 ConfigMap
kubectl delete secret <Secret名> # 删除 Secret
二、Pod 相关命令
1. 创建 Pod
kubectl run <Pod名> --image=<镜像名> --port=<端口> # 创建单个 Pod(不推荐生产使用)
⚠️ 注意:直接创建 Pod 在生产环境中不推荐,应使用 Deployment 管理 Pod。
2. 查看 Pod 状态
kubectl get pods # 查看所有 Pod
kubectl get pods -w # 实时监控 Pod 状态变化
kubectl get pods --all-namespaces # 查看所有命名空间的 Pod
3. 进入 Pod
kubectl exec -it <Pod名> -- /bin/sh # 进入 Pod 的 Shell(Alpine 镜像用 `/bin/sh`,Ubuntu 用 `/bin/bash`)
kubectl exec <Pod名> -- ls / # 在 Pod 内执行命令(如 `ls`)
4. 删除 Pod
kubectl delete pod <Pod名> # 删除单个 Pod
kubectl delete pod <Pod名> --grace-period=0 --force # 强制删除卡住的 Pod
三、Deployment 相关命令
1. 创建 Deployment
kubectl create deployment <Deployment名> --image=<镜像名> --replicas=<副本数>
示例:
kubectl create deployment nginx --image=nginx --replicas=3
2. 查看 Deployment
kubectl get deployments # 查看所有 Deployment
kubectl describe deployment <Deployment名> # 查看 Deployment 详情
3. 更新 Deployment(滚动更新)
kubectl set image deployment/<Deployment名> <容器名>=<新镜像名> # 更新镜像
示例:
kubectl set image deployment/nginx nginx=nginx:1.25
4. 回滚 Deployment
kubectl rollout status deployment/<Deployment名> # 查看滚动更新状态
kubectl rollout undo deployment/<Deployment名> # 回滚到上一个版本
kubectl rollout undo deployment/<Deployment名> --to-revision=<版本号> # 回滚到指定版本
5. 扩缩容 Deployment
kubectl scale deployment/<Deployment名> --replicas=<副本数> # 手动扩缩容
示例:
kubectl scale deployment/nginx --replicas=5
四、Service 相关命令
1. 创建 Service
kubectl expose deployment <Deployment名> --type=<类型> --port=<端口> --target-port=<目标端口>
示例(创建 ClusterIP 类型 Service):
kubectl expose deployment nginx --type=ClusterIP --port=80 --target-port=80
示例(创建 NodePort 类型 Service,用于外部访问):
kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80
2. 查看 Service
kubectl get services # 查看所有 Service
kubectl describe service <Service名> # 查看 Service 详情
3. 删除 Service
kubectl delete service <Service名> # 删除 Service
五、ConfigMap 和 Secret
1. 创建 ConfigMap
kubectl create configmap <ConfigMap名> --from-literal=<键>=<值> # 从键值对创建
kubectl create configmap <ConfigMap名> --from-file=<文件路径> # 从文件创建
示例:
kubectl create configmap my-config --from-literal=app.name=myapp
2. 查看 ConfigMap
kubectl get configmaps # 查看所有 ConfigMap
kubectl describe configmap <ConfigMap名> # 查看 ConfigMap 详情
3. 删除 ConfigMap
kubectl delete configmap <ConfigMap名> # 删除 ConfigMap
4. 创建 Secret
kubectl create secret generic <Secret名> --from-literal=<键>=<值> # 从键值对创建
kubectl create secret generic <Secret名> --from-file=<文件路径> # 从文件创建
示例:
kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=123456
5. 查看 Secret
kubectl get secrets # 查看所有 Secret
kubectl describe secret <Secret名> # 查看 Secret 详情
kubectl get secret <Secret名> -o yaml # 以 YAML 格式查看 Secret(内容会加密显示)
6. 删除 Secret
kubectl delete secret <Secret名> # 删除 Secret
六、Namespace 相关命令
1. 查看 Namespace
kubectl get namespaces # 查看所有 Namespace
2. 创建 Namespace
kubectl create namespace <Namespace名> # 创建 Namespace
3. 删除 Namespace
kubectl delete namespace <Namespace名> # 删除 Namespace(会删除该 Namespace 下的所有资源)
4. 在指定 Namespace 中操作
kubectl get pods -n <Namespace名> # 查看指定 Namespace 的 Pod
kubectl apply -f <文件名> -n <Namespace名> # 在指定 Namespace 中应用配置
七、其他常用命令
1. 应用 YAML 文件
kubectl apply -f <文件名>.yaml # 应用 YAML 文件(创建或更新资源)
kubectl delete -f <文件名>.yaml # 删除 YAML 文件定义的资源
2. 查看事件
kubectl get events --sort-by='.metadata.creationTimestamp' # 查看集群事件
3. 清理资源
kubectl delete all --all # 删除当前 Namespace 下的所有资源(慎用!)
kubectl delete all --all -n <Namespace名> # 删除指定 Namespace 下的所有资源
4. 查看节点资源使用情况
kubectl top nodes # 查看节点 CPU 和内存使用情况
kubectl top pods # 查看 Pod CPU 和内存使用情况
⚠️ 注意:需要安装
metrics-server
才能使用kubectl top
命令。
八、总结
类别 | 常用命令 |
---|---|
基础操作 | kubectl get , kubectl describe , kubectl logs , kubectl delete |
Pod 管理 | kubectl run , kubectl exec , kubectl delete pod |
Deployment | kubectl create deployment , kubectl set image , kubectl scale |
Service | kubectl expose , kubectl get services |
ConfigMap | kubectl create configmap , kubectl get configmaps |
Secret | kubectl create secret , kubectl get secret |
Namespace | kubectl get namespaces , kubectl create namespace , kubectl delete ns |
YAML 操作 | kubectl apply -f , kubectl delete -f |
适用场景:
- 开发测试:快速创建和管理 Pod、Deployment、Service。
- 生产环境:使用 Deployment 管理 Pod,配置 ConfigMap/Secret 管理配置和敏感信息。
- 集群管理:查看节点状态、清理资源、应用 YAML 文件。
注意事项:
- 生产环境避免直接操作 Pod,应使用 Deployment 管理。
- 敏感信息(如密码)应使用 Secret 而非 ConfigMap。
- 使用
kubectl apply
而非kubectl create
,以便支持更新操作。