凡心所向,素履以往;生如逆旅,一苇以航

Kubectl 常用命令大全

以下是一个较为全面的 kubectl 常用命令大全,按功能分类整理,涵盖日常开发、运维、排障中常见的使用场景。


🧭 基础命令

kubectl version                  # 查看版本信息
kubectl config view              # 查看 kubeconfig 配置
kubectl config use-context xxx   # 切换集群上下文
kubectl cluster-info             # 查看集群信息
kubectl get all                  # 查看当前 namespace 下所有资源
kubectl get ns                   # 获取所有命名空间
kubectl get nodes                # 获取所有节点
kubectl get pods -A              # 获取所有命名空间下的 Pod
kubectl get events --sort-by='.lastTimestamp'  # 按时间排序事件

📦 资源管理

获取资源

kubectl get pod                                # 获取当前 namespace 的 Pod
kubectl get svc                                # 获取服务
kubectl get deployment                         # 获取部署
kubectl get ingress                            # 获取 ingress
kubectl get pod -n kube-system                 # 指定命名空间
kubectl get pod -o wide                        # 显示更多字段
kubectl describe pod POD_NAME                  # 查看详细信息
kubectl explain pod                            # 查看 pod 字段定义

创建与删除

kubectl apply -f xxx.yaml                      # 创建或更新资源
kubectl create -f xxx.yaml                     # 创建资源
kubectl delete -f xxx.yaml                     # 删除资源
kubectl delete pod POD_NAME                    # 删除 Pod
kubectl delete pod --grace-period=0 --force    # 强制删除 Pod
kubectl delete ns NAMESPACE                    # 删除命名空间

🛠️ 排障与调试

kubectl logs POD_NAME                          # 查看日志
kubectl logs -f POD_NAME                       # 实时日志
kubectl logs POD_NAME -c CONTAINER_NAME        # 指定容器日志
kubectl exec -it POD_NAME -- /bin/bash         # 进入 Pod 容器
kubectl cp POD_NAME:/path/in/container /host   # 从 Pod 拷贝文件
kubectl top pod                                # 查看 Pod 资源使用
kubectl top node                               # 查看 Node 资源使用
kubectl get events                             # 查看事件

📋 状态监控

kubectl rollout status deployment DEPLOY_NAME          # 查看部署状态
kubectl rollout history deployment DEPLOY_NAME         # 查看历史版本
kubectl rollout undo deployment DEPLOY_NAME            # 回滚部署

🚀 滚动更新 & 回滚

kubectl set image deployment/DEPLOY_NAME \
  container-name=image:tag                         # 更新镜像
kubectl rollout restart deployment DEPLOY_NAME     # 重新部署
kubectl rollout undo deployment DEPLOY_NAME        # 回滚上一个版本

🧾 Label、Annotation、Selector

kubectl label pod POD_NAME key=value                     # 添加 Label
kubectl annotate pod POD_NAME key=value                  # 添加注解
kubectl get pods -l key=value                            # 根据 label 过滤
kubectl delete pod -l key=value                          # 删除带特定 label 的 pod

🧱 资源编辑

kubectl edit deployment DEPLOY_NAME                      # 编辑资源
kubectl patch deployment DEPLOY_NAME -p '{"spec":{...}}' # 修改资源

🗂️ 命名空间相关

kubectl get ns
kubectl create ns my-namespace
kubectl delete ns my-namespace
kubectl config set-context --current --namespace=my-namespace

🧪 创建临时 Pod 做调试

kubectl run debug --rm -i -t --image=busybox -- sh
kubectl run -i --tty temp --image=alpine -- sh

🧱 PVC、PV 相关

kubectl get pvc
kubectl get pv
kubectl describe pvc PVC_NAME

🔐 Secret 与 ConfigMap

kubectl get secret
kubectl get configmap
kubectl create secret generic my-secret --from-literal=key1=val1
kubectl create configmap my-config --from-file=path/to/file

📤 导出与备份

kubectl get deployment my-deploy -o yaml > backup.yaml
kubectl get all --all-namespaces -o yaml > all.yaml

🧹 清理

kubectl delete pod --all                         # 删除所有 Pod
kubectl delete deployment --all                  # 删除所有 Deployment
kubectl delete all --all                         # 删除所有资源

⚙️ CRD 自定义资源管理

kubectl get crd
kubectl get <custom-resource> -A
kubectl describe <custom-resource> NAME

如需长期参考,我也可以为你整理成 Markdown 或 PDF 文档,是否需要?

自定义

读取目录到 configmap

将本地目录 /etc/openresty/conf.d 下的所有 .conf 文件读入并创建一个 Kubernetes ConfigMap,你可以使用以下方法:

kubectl create configmap openresty-config \
  --namespace forward \
  --from-file=/etc/openresty/conf.d \
  --dry-run=client -o yaml > openresty-configmap.yaml

# 直接读取到 configmap 中
kubectl create configmap openresty-config \
  --namespace forward \
  --from-file=/etc/openresty/conf.d \
  --dry-run=client -o yaml | kubectl apply -f -

评论栏