总结一下这次在项目中经常使用的一些 K8s 的命令。
K8s 常用命令总结
1. 获取 Kubernetes 集群信息
1 | kubectl cluster-info |
场景: 查看 Kubernetes 集群的基本信息,包括 API 服务器的地址。
2. 获取节点信息
1 | kubectl get nodes |
场景: 查看集群中所有节点的状态,帮助确认节点是否健康,以及节点资源的使用情况。
3. 获取 Pod 列表
1 | kubectl get pods |
场景: 查看指定命名空间中的所有 Pod 的状态,检查 Pod 是否正在运行。
4. 获取 Pod 的详细信息
1 | kubectl describe pod <pod-name> -n <namespace> |
场景: 获取 Pod 的详细描述,包括状态、事件、日志等,帮助进行故障排查。
5. 获取 Pod 的标签
1 | kubectl get pod <pod-name> -o=jsonpath='{.metadata.labels}' |
场景: 获取某个 Pod 的标签,方便进行标签筛选和调度管理。
6. 删除 Pod
1 | kubectl delete pod <pod-name> -n <namespace> |
场景: 删除指定的 Pod。常用于清理挂掉或无用的 Pod。
7. 强制删除 Pod
1 | kubectl delete pod <pod-name> --grace-period=0 --force -n <namespace> |
场景: 强制删除 Pod,适用于无法正常删除的 Pod。注意,这种操作会跳过 Pod 的优雅终止过程。
8. 获取 Pod 的日志
1 | kubectl logs <pod-name> -n <namespace> |
场景: 查看 Pod 中容器的日志,帮助排查应用问题或容器启动失败的原因。
9. 查看 Pod 的实时日志(带容器名)
1 | kubectl logs -f <pod-name> -c <container-name> -n <namespace> |
场景: 实时查看指定容器的日志,适用于跟踪应用程序运行中的问题。
10. 进入 Pod 内部
1 | kubectl exec -it <pod-name> -n <namespace> -- /bin/bash |
场景: 进入 Pod 内部,执行交互式命令,适用于调试和手动操作。
11. 执行 Pod 内部命令
1 | kubectl exec <pod-name> -n <namespace> -- <command> |
场景: 在 Pod 内部执行一次性命令,适用于临时操作。
12. 查看命名空间中的所有资源
1 | kubectl get all -n <namespace> |
场景: 查看命名空间中的所有资源(Pod、Service、Deployment 等),用于快速浏览资源状态。
13. 部署应用(使用 YAML 配置)
1 | kubectl apply -f <file.yaml> |
场景: 根据指定的 YAML 文件创建或更新资源,常用于部署应用、配置服务等。
14. 删除命名空间
1 | kubectl delete namespace <namespace> |
场景: 删除指定命名空间及其资源,适用于清理整个环境。
15. 查看服务的详细信息
1 | kubectl describe svc <service-name> -n <namespace> |
场景: 查看服务的详细信息,包括端口、选择器等,适用于调试服务访问问题。
16. 获取集群的 ConfigMap 列表
1 | kubectl get configmap -n <namespace> |
场景: 查看命名空间中所有的 ConfigMap,帮助管理配置文件。
17. 创建 ConfigMap
1 | kubectl create configmap <configmap-name> --from-file=<path-to-file> -n <namespace> |
场景: 创建 ConfigMap 资源并从文件中导入配置,常用于存储配置文件或密钥。
18. 获取所有 Pod 的标签
1 | kubectl get pods --show-labels -n <namespace> |
场景: 获取所有 Pod 的标签信息,便于筛选和管理。
19. 获取某个资源的版本
1 | kubectl version |
场景: 查看 kubectl 客户端和 Kubernetes 服务端的版本信息,帮助确认版本兼容性。
20. 使用 Port Forward 转发端口
1 | kubectl port-forward pod/<pod-name> 8080:80 -n <namespace> |
场景: 将 Pod 的端口转发到本地,适用于访问集群内的应用(如本地访问 Pod 中的 Web 服务)。
21. 查看 Pod 的状态
1 | kubectl get pod <pod-name> -n <namespace> -o wide |
场景: 查看 Pod 的状态和其他详细信息,如 IP 地址、节点等,帮助诊断 Pod 问题。
22. 查看 Deployment 状态
1 | kubectl get deployment <deployment-name> -n <namespace> |
场景: 查看某个 Deployment 的状态,帮助确认应用是否按预期运行。
23. 获取 Kubernetes 的 Config 配置文件
1 | kubectl config view |
场景: 查看当前的 Kubernetes 配置,帮助查看已配置的集群和上下文。
24. 修改 kubectl 使用的 Config 文件
1 | export KUBECONFIG=<path-to-kubeconfig> |
场景: 指定自定义的 kubeconfig 文件位置,避免使用默认的 ~/.kube/config
。
25. 等待 Pod 删除完成
1 | kubectl wait --for=delete pod <pod-name> -n <namespace> --timeout=60s |
场景: 等待指定的 Pod 删除完成,用于确保 Pod 被完全删除。
26. 查看 Pod 的进程
1 | kubectl top pod <pod-name> -n <namespace> |
场景: 查看 Pod 中的资源使用情况(CPU、内存等),适用于性能调优和资源监控。
27. 查看命名空间的资源
1 | kubectl get all -n <namespace> |
场景: 查看某个命名空间中的所有资源,帮助管理和维护集群。
28. 监控服务的状态
1 | kubectl rollout status deployment/<deployment-name> -n <namespace> |
场景: 查看 Deployment 的发布状态,适用于查看应用更新或滚动升级的进度。
29. 更新资源
1 | kubectl apply -f <file.yaml> |
场景: 更新现有的 Kubernetes 资源,适用于应用更新或配置变更。
30. 获取 Helm 安装的 Release 列表
1 | helm list -n <namespace> |
场景: 获取 Helm 安装的所有 Release,帮助管理 Helm 部署的应用。