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 查看集群资源利用率
posted @ 2026-03-26 11:38  阿宝叔  阅读(113)  评论(0)    收藏  举报