Wiki LogoWiki - The Power of Many

Kubernetes Cheatsheet

收藏级 kubectl 常用命令手册, 涵盖资源管理、故障排障、网络检查及高级技巧.

熟练掌握 kubectl 是高效运维 K8s 的基础. 本篇总结了生产环境中最常用的高频指令.

1. 基础配置与上下文

# 查看所有上下文 (集群)
kubectl config get-contexts

# 切换到指定上下文
kubectl config use-context <context-name>

# 设置默认命名空间
kubectl config set-context --current --namespace=<namespace>

2. 资源创建与修改

# 声明式应用配置 (最常用)
kubectl apply -f manual.yaml

# 快速部署一个测试 Pod (不使用 YAML)
kubectl run nginx --image=nginx

# 快速创建一个服务
kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort

# 在线编辑资源
kubectl edit svc <service-name>

3. 故障排障 (核心技能)

# 查看资源详情 (可以看到 Events, 查找启动失败原因)
kubectl describe pod <pod-name>

# 查看日志 (实时追踪)
kubectl logs -f <pod-name> -c <container-name>

# 查看上一个崩溃容器的日志
kubectl logs <pod-name> --previous

# 进入容器执行命令
kubectl exec -it <pod-name> -- /bin/sh

# 查看节点资源占用情况 (需安装 metrics-server)
kubectl top node
kubectl top pod

4. 节点与标签管理

# 查看标签
kubectl get nodes --show-labels

# 给节点增加标签
kubectl label nodes <node-name> disk=ssd

# 维护模式: 驱逐节点上的所有 Pod 并标记不可调度
kubectl drain <node-name> --ignore-daemonsets

# 恢复节点调度
kubectl uncordon <node-name>

5. 高级技巧与单行脚本

# 查看所有非 Running 状态的 Pod
kubectl get pods -A | grep -v Running

# 强制删除 Pod (不等待正常关闭)
kubectl delete pod <pod-name> --grace-period=0 --force

# 查看所有资源的 API 版本和缩写
kubectl api-resources

# 端口转发: 将本地 8080 映射到 Pod 的 80
kubectl port-forward <pod-name> 8080:80

# 复制文件到 Pod
kubectl cp /tmp/foo <pod-name>:/tmp/bar

6. 使用别名加速 (Alias)

建议在 .bashrc.zshrc 中添加:

alias k='kubectl'
complete -F __start_kubectl k

永远优先使用 kubectl apply 而非 kubectl create. 前者支持 "三方合并 (Three-way merge)", 是实现 GitOps 的基础.

7. kubecm

kubecm token list
kubecm list
kubectl get nodes -o wide
kubectl cluster-info
kubectl get pods -A -o wide
kubectl get service -o wide
kubectl -n kube-system describe pods kube-proxy-XXXXX

8. Deployment

kubectl get deployments -A -o wide
kubectl scale deployments/kubernetes-bootcamp —replicas=3
kubectl scale deployments/kubernetes-bootcamp —replicas=2
kubectl get replicasets.apps

其他搜集

kubectl get pods -A
kubectl get pods -n kube-system
kubectl get pods -n kube-system -l k8s-app
kubectl get pods -n kube-system -l k8s-app=cilium
kubectl describe pod hubble-relay-6bc74f85f9-zwxfn -n kube-system
kubectl get pods -n monitoring-dev -w

On this page