以下是 Kubernetes (K8s) 的常用命令整理,涵盖集群管理、资源操作、调试、日志查看、扩缩容等常见场景,适合快速查阅和使用:

一、集群管理

  1. 查看集群信息

    kubectl cluster-info          # 查看集群基本信息
    kubectl version               # 查看 kubectl 客户端和集群版本
    kubectl api-versions          # 查看支持的 API 版本
    kubectl api-resources         # 查看支持的资源类型
    
  2. 节点管理

    kubectl get nodes             # 查看所有节点
    kubectl describe node <node-name>  # 查看节点详细信息
    kubectl top nodes             # 查看节点资源使用(需 metrics-server)
    kubectl cordon <node-name>    # 标记节点为不可调度(维护模式)
    kubectl uncordon <node-name>  # 取消节点不可调度
    kubectl drain <node-name>     # 排空节点(驱逐 Pod,用于维护)
    

二、命名空间管理

kubectl get namespaces          # 查看所有命名空间
kubectl create namespace <ns-name>  # 创建命名空间
kubectl delete namespace <ns-name>  # 删除命名空间及资源
kubectl config set-context --current --namespace=<ns-name>  # 切换当前命名空间

三、资源管理

1. 资源查看
kubectl get pods                # 查看 Pod
kubectl get pods -n <ns>        # 查看指定命名空间的 Pod
kubectl get pods -o wide        # 查看更详细的 Pod 信息
kubectl get pods -l app=nginx   # 通过标签筛选资源
kubectl get all                 # 查看所有资源(Pod、Service、Deployment 等)
kubectl get all --all-namespaces  # 查看所有命名空间的资源
2. 资源描述
kubectl describe pod <pod-name>  # 查看 Pod 详细信息
kubectl describe service <svc-name>  # 查看 Service 详细信息
kubectl describe deployment <dep-name>  # 查看 Deployment 详细信息
3. 资源创建/更新
kubectl apply -f <file.yaml>    # 创建或更新资源(推荐)
kubectl create -f <file.yaml>   # 创建资源
kubectl replace -f <file.yaml>  # 替换资源
4. 资源删除
kubectl delete pod <pod-name>   # 删除 Pod
kubectl delete -f <file.yaml>   # 根据文件删除资源
kubectl delete pods --all       # 删除所有 Pod
kubectl delete all --all        # 删除所有资源(谨慎使用)

四、调试与日志

1. 日志查看
kubectl logs <pod-name>        # 查看 Pod 日志
kubectl logs -f <pod-name>     # 实时查看日志
kubectl logs <pod-name> -c <container-name>  # 查看多容器 Pod 中某个容器的日志
2. 进入容器
kubectl exec -it <pod-name> -- /bin/sh  # 进入容器(alpine/busybox)
kubectl exec -it <pod-name> -- /bin/bash  # 进入容器(常见 Linux 发行版)
3. 端口转发
kubectl port-forward service/<svc-name> 8080:80  # 本地访问集群服务

五、部署与扩缩容

1. Deployment 操作
kubectl get deployments         # 查看所有 Deployment
kubectl create deployment <name> --image=<image>  # 创建 Deployment
kubectl scale deployment <name> --replicas=3  # 扩缩容
kubectl rollout status deployment/<name>  # 查看滚动更新状态
kubectl rollout undo deployment/<name>    # 回滚 Deployment
2. 自动扩缩容
kubectl autoscale deployment <name> --min=2 --max=5 --cpu-percent=80  # 基于 CPU 的自动扩缩容

六、服务与网络

1. Service 操作
kubectl get services            # 查看所有 Service
kubectl expose deployment <name> --type=NodePort --port=80  # 创建 Service
kubectl describe service <svc-name>  # 查看 Service 详细信息
2. 网络策略
kubectl get networkpolicy       # 查看网络策略
kubectl apply -f networkpolicy.yaml  # 应用网络策略

七、配置与存储

1. ConfigMap 和 Secret
kubectl get configmaps          # 查看 ConfigMap
kubectl create configmap <name> --from-file=...  # 创建 ConfigMap
kubectl get secrets             # 查看 Secret
kubectl create secret generic <name> --from-literal=key=value  # 创建 Secret
2. PVC 和 PV
kubectl get pvc,pv              # 查看 PVC 和 PV
kubectl describe pvc <pvc-name>  # 查看 PVC 详细信息

八、高级命令技巧

  1. 标签筛选

    kubectl get pods -l app=nginx  # 通过标签筛选 Pod
    
  2. 字段筛选

    kubectl get pods --field-selector=status.phase=Running  # 筛选运行中的 Pod
    
  3. 输出格式

    kubectl get pod <pod-name> -o yaml  # 输出 YAML 格式
    kubectl get pod <pod-name> -o json  # 输出 JSON 格式
    
  4. 强制删除

    kubectl delete pod <pod-name> --force --grace-period=0  # 强制删除 Pod
    
  5. 调试容器

    kubectl debug <pod-name> -it --image=busybox  # 调试容器
    

九、常见问题排查

  1. 查看事件

    kubectl get events -n <ns>    # 查看命名空间事件
    kubectl describe pod <pod-name>  # 查看 Pod 事件
    
  2. 节点资源监控

    kubectl top nodes             # 查看节点资源(CPU/内存)
    kubectl top pods              # 查看 Pod 资源
    
  3. 查看系统组件状态

    kubectl get pods -n kube-system  # 查看系统组件
    kubectl logs <component-pod> -n kube-system  # 查看系统组件日志
    

十、其他实用命令

kubectl config view             # 查看当前 kubeconfig 配置
kubectl config use-context <context-name>  # 切换集群上下文
kubectl explain <resource-type>  # 查看资源字段说明(如 kubectl explain pod)
kubectl run <name> --image=<image> --restart=Never  # 创建一次性 Pod

总结

  • 基础操作kubectl getkubectl describekubectl logs 是最常用的命令。
  • 调试场景:结合 kubectl execkubectl port-forward 可快速定位问题。
  • 生产环境:注意使用 -n 指定命名空间,避免误操作默认命名空间。

如果需要更详细的命令帮助,可以使用 kubectl help <command> 或查阅 Kubernetes 官方文档

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐