Kubernetes 常用命令速查表
Kubernetes 常用命令速查表
1. 基础信息
| 命令 | 说明 |
|---|---|
kubectl version |
查看客户端和服务端版本信息 |
kubectl version --short |
查看简化的版本信息 |
kubectl cluster-info |
查看集群信息 |
kubectl cluster-info dump |
导出集群详细信息 |
kubectl get componentstatuses |
查看各组件状态(缩写:kubectl get cs) |
kubectl api-resources |
查看所有支持的 API 资源类型 |
kubectl api-versions |
查看所有 API 版本 |
kubectl explain <资源> |
查看资源定义说明(如 kubectl explain pod) |
2. 上下文与配置
| 命令 | 说明 |
|---|---|
kubectl config view |
查看 kubeconfig 配置 |
kubectl config view --minify |
查看当前上下文配置 |
kubectl config get-contexts |
查看所有上下文 |
kubectl config current-context |
查看当前上下文 |
kubectl config use-context <上下文名> |
切换上下文 |
kubectl config set-context --namespace=<命名空间> |
设置当前上下文的默认命名空间 |
kubectl config set-context <上下文名> --namespace=<ns> |
设置指定上下文的命名空间 |
kubectl config set-credentials <用户名> --token=<token> |
设置用户凭证 |
kubectl config set-cluster <集群名> --server=<apiserver地址> |
设置集群信息 |
kubectl config delete-cluster <集群名> |
删除集群配置 |
kubectl config delete-user <用户名> |
删除用户配置 |
kubectl config delete-context <上下文名> |
删除上下文 |
3. 查看资源
3.1 通用查看命令
| 命令 | 说明 |
|---|---|
kubectl get <资源> |
列出指定资源 |
kubectl get all |
列出所有常见资源 |
kubectl get <资源> -o wide |
显示更多信息(如 Pod IP、所在节点) |
kubectl get <资源> -o yaml |
以 YAML 格式输出 |
kubectl get <资源> -o json |
以 JSON 格式输出 |
kubectl get <资源> -o name |
只输出资源名称 |
kubectl describe <资源> <名称> |
查看资源的详细信息 |
kubectl get <资源> --watch |
实时监控资源变化 |
kubectl get <资源> -l <标签选择器> |
按标签筛选(如 -l app=nginx) |
kubectl get <资源> --field-selector=<字段选择器> |
按字段筛选 |
3.2 常用资源查看
| 命令 | 说明 |
|---|---|
kubectl get nodes |
查看节点 |
kubectl get nodes -o wide |
查看节点详细信息 |
kubectl get pods |
查看 Pod |
kubectl get pods -n <命名空间> |
查看指定命名空间的 Pod |
kubectl get pods --all-namespaces |
查看所有命名空间的 Pod |
kubectl get pods -A |
同上(缩写) |
kubectl get deployments |
查看 Deployment |
kubectl get services |
查看 Service |
kubectl get svc |
同上(缩写) |
kubectl get configmap |
查看 ConfigMap |
kubectl get cm |
同上(缩写) |
kubectl get secrets |
查看 Secret |
kubectl get ingress |
查看 Ingress |
kubectl get pv |
查看 PersistentVolume |
kubectl get pvc |
查看 PersistentVolumeClaim |
kubectl get namespace |
查看命名空间 |
kubectl get ns |
同上(缩写) |
kubectl get events |
查看事件(按时间排序) |
kubectl get events --sort-by='.lastTimestamp' |
按时间排序事件 |
kubectl top nodes |
查看节点资源使用(需 metrics-server) |
kubectl top pods |
查看 Pod 资源使用 |
kubectl top pods -n <命名空间> |
查看指定命名空间的 Pod 资源使用 |
4. 创建与更新资源
| 命令 | 说明 |
|---|---|
kubectl create -f <文件.yaml> |
创建资源(文件方式) |
kubectl apply -f <文件.yaml> |
创建或更新资源(声明式) |
kubectl apply -f <目录> |
批量应用目录下所有 yaml 文件 |
kubectl apply -k <目录> |
使用 kustomize 应用配置 |
kubectl create deployment <名称> --image=<镜像> |
创建 Deployment |
kubectl create namespace <名称> |
创建命名空间 |
kubectl create configmap <名称> --from-literal=<key>=<value> |
创建 ConfigMap |
kubectl create configmap <名称> --from-file=<文件> |
从文件创建 ConfigMap |
kubectl create secret generic <名称> --from-literal=<key>=<value> |
创建 Secret |
kubectl create secret docker-registry <名称> --docker-server=<server> --docker-username=<user> --docker-password=<pass> |
创建镜像拉取 Secret |
kubectl edit <资源> <名称> |
编辑资源(实时修改) |
kubectl patch <资源> <名称> -p '{"spec":{...}}' |
部分更新资源 |
kubectl replace -f <文件.yaml> |
替换资源(需先存在) |
kubectl set image deployment/<名称> <容器名>=<新镜像> |
更新 Deployment 镜像 |
kubectl set resources deployment/<名称> --limits=cpu=200m,memory=512Mi |
设置资源限制 |
5. 删除资源
| 命令 | 说明 |
|---|---|
kubectl delete -f <文件.yaml> |
删除文件中定义的资源 |
kubectl delete <资源> <名称> |
删除指定资源 |
kubectl delete pod <名称> |
删除 Pod |
kubectl delete deployment <名称> |
删除 Deployment |
kubectl delete service <名称> |
删除 Service |
kubectl delete namespace <名称> |
删除命名空间(会删除其下所有资源) |
kubectl delete all --all |
删除当前命名空间下所有资源 |
kubectl delete <资源> -l <标签选择器> |
按标签删除 |
kubectl delete <资源> --field-selector=<字段选择器> |
按字段筛选删除 |
kubectl delete pod --force --grace-period=0 |
强制删除 Pod(立即删除) |
6. Pod 操作与调试
| 命令 | 说明 |
|---|---|
kubectl logs <pod名称> |
查看 Pod 日志 |
kubectl logs -f <pod名称> |
实时跟踪日志 |
kubectl logs <pod名称> -c <容器名> |
查看指定容器的日志(多容器 Pod) |
kubectl logs --tail=100 <pod名称> |
查看最后 100 行日志 |
kubectl logs --since=1h <pod名称> |
查看最近 1 小时的日志 |
kubectl logs <pod名称> --previous |
查看 Pod 上一次运行的日志 |
kubectl exec <pod名称> -- <命令> |
在 Pod 中执行命令 |
kubectl exec -it <pod名称> -- /bin/bash |
进入 Pod 的 shell |
kubectl exec -it <pod名称> -c <容器名> -- /bin/sh |
进入指定容器 |
kubectl port-forward <pod名称> 本地端口:Pod端口 |
端口转发到本地 |
kubectl port-forward service/<服务名> 本地端口:服务端口 |
转发 Service 端口 |
kubectl cp <pod名称>:<容器路径> <本地路径> |
从 Pod 复制文件到本地 |
kubectl cp <本地路径> <pod名称>:<容器路径> |
从本地复制文件到 Pod |
kubectl attach <pod名称> |
连接到 Pod 的标准输入/输出 |
kubectl run -it --rm --image=<镜像> <临时pod名> -- /bin/bash |
启动临时交互式 Pod(自动清理) |
kubectl debug <pod名称> -it --image=busybox |
创建调试容器(需 1.18+) |
7. 扩缩容与更新策略
| 命令 | 说明 |
|---|---|
kubectl scale deployment <名称> --replicas=<数量> |
扩缩容 Deployment |
kubectl scale --replicas=<数量> -f <文件.yaml> |
扩缩容(文件方式) |
kubectl autoscale deployment <名称> --min=<最小> --max=<最大> --cpu-percent=<阈值> |
创建水平自动伸缩(HPA) |
kubectl get hpa |
查看水平自动伸缩配置 |
kubectl rollout status deployment/<名称> |
查看滚动更新状态 |
kubectl rollout history deployment/<名称> |
查看滚动更新历史 |
kubectl rollout undo deployment/<名称> |
回滚到上一版本 |
kubectl rollout undo deployment/<名称> --to-revision=<版本号> |
回滚到指定版本 |
kubectl rollout pause deployment/<名称> |
暂停滚动更新 |
kubectl rollout resume deployment/<名称> |
恢复滚动更新 |
kubectl rollout restart deployment/<名称> |
重启 Deployment(滚动重启) |
8. 存储管理
| 命令 | 说明 |
|---|---|
kubectl get pv |
查看 PersistentVolume |
kubectl get pvc |
查看 PersistentVolumeClaim |
kubectl get storageclass |
查看 StorageClass |
kubectl get sc |
同上(缩写) |
kubectl describe pv <名称> |
查看 PV 详情 |
kubectl describe pvc <名称> |
查看 PVC 详情 |
kubectl delete pvc <名称> |
删除 PVC |
kubectl create pv -f <文件.yaml> |
创建 PV |
kubectl create pvc -f <文件.yaml> |
创建 PVC |
9. 网络管理
| 命令 | 说明 |
|---|---|
kubectl get svc |
查看 Service |
kubectl get endpoints |
查看 Endpoints |
kubectl get ep |
同上(缩写) |
kubectl get ingress |
查看 Ingress |
kubectl get networkpolicy |
查看 NetworkPolicy |
kubectl expose deployment <名称> --port=<端口> --target-port=<容器端口> --type=<类型> |
创建 Service 暴露 Deployment |
kubectl create service clusterip <名称> --tcp=<端口>:<目标端口> |
创建 ClusterIP Service |
kubectl create service nodeport <名称> --tcp=<端口>:<目标端口> |
创建 NodePort Service |
kubectl create ingress <名称> --rule=<主机>/<路径>=<服务名>:<端口> |
创建 Ingress |
10. 命名空间管理
| 命令 | 说明 |
|---|---|
kubectl get ns |
查看所有命名空间 |
kubectl create ns <名称> |
创建命名空间 |
kubectl delete ns <名称> |
删除命名空间 |
kubectl config set-context --current --namespace=<ns> |
切换当前命名空间 |
kubectl run <pod名> --image=<镜像> -n <命名空间> |
在指定命名空间创建 Pod |
11. 标签与注解
| 命令 | 说明 |
|---|---|
kubectl label <资源> <名称> <标签键>=<标签值> |
添加标签 |
kubectl label <资源> <名称> <标签键>- |
删除标签 |
kubectl label <资源> <名称> <标签键>=<标签值> --overwrite |
覆盖已有标签 |
kubectl annotate <资源> <名称> <注解键>=<注解值> |
添加注解 |
kubectl annotate <资源> <名称> <注解键>- |
删除注解 |
kubectl get <资源> --show-labels |
查看标签 |
kubectl get <资源> -l <标签选择器> |
按标签筛选 |
12. 节点管理
| 命令 | 说明 |
|---|---|
kubectl get nodes |
查看节点 |
kubectl describe node <节点名> |
查看节点详细状态 |
kubectl top node |
查看节点资源使用 |
kubectl cordon <节点名> |
标记节点不可调度 |
kubectl uncordon <节点名> |
标记节点可调度 |
kubectl drain <节点名> --ignore-daemonsets |
驱逐节点上的 Pod(维护前操作) |
kubectl drain <节点名> --delete-emptydir-data |
驱逐时删除 emptyDir 数据 |
kubectl label node <节点名> <标签键>=<标签值> |
给节点添加标签 |
13. 常用组合命令
| 命令 | 说明 |
|---|---|
kubectl get pods --field-selector=status.phase=Running |
筛选运行中的 Pod |
kubectl get pods --field-selector=status.phase!=Running |
筛选非运行中的 Pod |
kubectl get pods -o custom-columns=NAME:.metadata.name,IP:.status.podIP |
自定义输出列 |
kubectl get pods -o jsonpath='{.items[*].metadata.name}' |
使用 jsonpath 提取数据 |
kubectl get all -A | grep <关键词> |
在所有命名空间搜索资源 |
kubectl delete pod --force --grace-period=0 |
强制删除 Pod |
kubectl get pods -n <命名空间> -o wide | grep <关键词> |
在命名空间中搜索 Pod |
14. 故障排查命令
| 命令 | 说明 |
|---|---|
kubectl get events --sort-by='.lastTimestamp' |
查看最近事件 |
kubectl get events -n <命名空间> --watch |
实时监控事件 |
kubectl describe node <节点名> |
查看节点详细状态 |
kubectl describe pod <pod名> |
查看 Pod 详细事件和状态 |
kubectl describe svc <服务名> |
查看 Service 详情 |
kubectl logs <pod名> --previous |
查看 Pod 上一次运行的日志 |
kubectl run temp-pod --rm -it --restart=Never --image=<镜像> -- <命令> |
临时调试 Pod |
kubectl proxy |
启动 API Server 代理(本地访问 apiserver) |
kubectl get csr |
查看证书签名请求 |
kubectl certificate approve <csr名> |
批准证书签名请求 |
15. 常用资源类型缩写
| 完整名称 | 缩写 |
|---|---|
| pods | po |
| services | svc |
| deployments | deploy |
| replicasets | rs |
| namespaces | ns |
| nodes | no |
| configmaps | cm |
| secrets | - |
| persistentvolumes | pv |
| persistentvolumeclaims | pvc |
| ingresses | ing |
| endpoints | ep |
| events | ev |
| serviceaccounts | sa |
| statefulsets | sts |
| daemonsets | ds |
| cronjobs | cj |
| horizontalpodautoscalers | hpa |
16. 常用别名配置
| 命令 |
|---|
| # 建议添加到 ~/.bashrc 或 ~/.zshrc |
| alias k='kubectl' |
| alias kg='kubectl get' |
| alias kgp='kubectl get pods' |
| alias kgs='kubectl get svc' |
| alias kgd='kubectl get deployments' |
| alias kgn='kubectl get nodes' |
| alias kgns='kubectl get ns' |
| alias kd='kubectl describe' |
| alias kdel='kubectl delete' |
| alias kl='kubectl logs' |
| alias klf='kubectl logs -f' |
| alias kx='kubectl exec -it' |
| alias kxsh='kubectl exec -it -- /bin/sh' |
| alias kgpo='kubectl get pods -o wide' |
| alias kgall='kubectl get all -A' |
| alias kctx='kubectl config current-context' |
| alias kns='kubectl config set-context --current --namespace' |
| alias ktop='kubectl top pods' |
| alias ktopn='kubectl top nodes' |
17. 命令自动补全
17.1 Bash 补全
安装 bash-completion(如果没有)
apt-get install bash-completion # Debian/Ubuntu
yum install bash-completion # CentOS/RHEL
添加 kubectl 补全到 bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc
设置别名补全
echo 'complete -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
17.2 Zsh 补全
添加 kubectl 补全到 zshrc
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc
设置别名补全
echo 'compdef __start_kubectl k' >> ~/.zshrc
source ~/.zshrc
17.3 手动生成补全文件
生成 bash 补全文件
kubectl completion bash > /etc/bash_completion.d/kubectl
生成 zsh 补全文件
kubectl completion zsh > /usr/local/share/zsh/site-functions/_kubectl
18. 常见场景示例
18.1 快速排查 Pod 启动失败
1. 查看 Pod 状态
kubectl get pods
2. 查看 Pod 详细事件(定位问题)
kubectl describe pod <pod名>
3. 查看容器日志
kubectl logs <pod名>
4. 查看上一次运行的日志(容器崩溃时)
kubectl logs <pod名> --previous
5. 进入容器调试
kubectl exec -it <pod名> -- /bin/sh
6. 查看 Pod 资源使用情况
kubectl top pod <pod名>
18.2 服务暴露与访问
1. 创建 NodePort 服务暴露 Deployment
kubectl expose deployment <名称> --type=NodePort --port=80 --target-port=8080
2. 查看服务信息
kubectl get svc <名称>
3. 端口转发到本地访问
kubectl port-forward service/<服务名> 8080:80
4. 查看服务端点(检查后端 Pod)
kubectl get endpoints <服务名>
5. 创建 Ingress 暴露服务
kubectl create ingress <名称> --rule=<域名>/<路径>=<服务名>:<端口>
18.3 滚动更新与回滚
1. 更新 Deployment 镜像
kubectl set image deployment/<名称> <容器名>=<新镜像>
2. 查看更新状态
kubectl rollout status deployment/<名称>
3. 查看更新历史
kubectl rollout history deployment/<名称>
4. 回滚到上一版本
kubectl rollout undo deployment/<名称>
5. 回滚到指定版本
kubectl rollout undo deployment/<名称> --to-revision=<版本号>
6. 暂停更新(用于金丝雀发布)
kubectl rollout pause deployment/<名称>
7. 恢复更新
kubectl rollout resume deployment/<名称>
8. 重启 Deployment(不修改配置)
kubectl rollout restart deployment/<名称>
18.4 资源配额与限制
1. 创建命名空间时设置资源配额
kubectl create namespace <命名空间>
kubectl create quota <名称> --hard=cpu=2,memory=4Gi,pods=10 -n <命名空间>
2. 设置 LimitRange(默认资源限制)
kubectl create -f limitrange.yaml
3. 查看资源配额
kubectl get quota -n <命名空间>
4. 查看资源使用情况
kubectl describe quota -n <命名空间>
18.5 多集群管理
1. 查看当前集群上下文
kubectl config current-context
2. 查看所有上下文
kubectl config get-contexts
3. 切换集群
kubectl config use-context <上下文名>
4. 添加新集群配置
kubectl config set-cluster <集群名> --server=https://<apiserver> --insecure-skip-tls-verify
5. 添加用户凭证
kubectl config set-credentials <用户名> --token=<token>
6. 添加上下文
kubectl config set-context <上下文名> --cluster=<集群名> --user=<用户名> --namespace=<命名空间>
7. 切换命名空间(当前上下文)
kubectl config set-context --current --namespace=<命名空间>
18.6 备份与恢复
1. 备份所有资源(YAML 格式)
kubectl get all --all-namespaces -o yaml > backup-all.yaml
2. 备份特定资源类型
kubectl get deployments,services,configmaps --all-namespaces -o yaml > backup.yaml
3. 恢复资源
kubectl apply -f backup.yaml
4. 备份 etcd(需要 etcdctl)
ETCDCTL_API=3 etcdctl snapshot save snapshot.db
5. 恢复 etcd
ETCDCTL_API=3 etcdctl snapshot restore snapshot.db
18.7 调试网络问题
1. 启动临时调试 Pod
kubectl run -it --rm debug --image=nicolaka/netshoot -- /bin/bash
2. 测试 Service DNS 解析
nslookup <service-name>.<namespace>.svc.cluster.local
3. 测试 Service 连通性
curl http://<service-name>:<port>
4. 查看网络策略
kubectl get networkpolicy -A
5. 查看 Service 和 Endpoints
kubectl get svc,endpoints <服务名>
19. 常用 kubectl 插件
| 插件名称 | 安装命令 | 说明 |
|---|---|---|
| krew | (cd /tmp && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/krew.tar.gz" && tar -zxvf krew.tar.gz && ./krew install) kubectl |
插件管理器 |
| ns | kubectl krew install ns |
快速切换命名空间 |
| ctx | kubectl krew install ctx |
快速切换上下文 |
| tree | kubectl krew install tree |
以树形结构查看资源关系 |
| view-utilization | kubectl krew install view-utilization |
查看资源利用率 |
| neat | kubectl krew install neat |
清理 kubectl get 输出 |
| access-matrix | kubectl krew install access-matrix |
查看 RBAC 权限矩阵 |
| who-can | kubectl krew install who-can |
查看谁能访问某个资源 |
插件使用示例
| 命令 | 说明 |
|---|---|
kubectl ns <命名空间> |
切换命名空间 |
kubectl ctx <上下文名> |
切换集群上下文 |
kubectl tree deployment <名称> |
查看 Deployment 依赖关系 |
kubectl view-utilization |
查看集群资源利用率 |

浙公网安备 33010602011771号