以下是一份 Kubernetes (k8s) 常用指令速查表,涵盖集群管理、资源操作、故障排查等场景,适合日常运维和开发使用:
1. 集群与节点管理
命令 | 说明 |
---|---|
kubectl cluster-info | 查看集群基本信息 |
kubectl get nodes | 查看所有节点状态 |
kubectl describe node <node-name> | 查看节点详细信息(资源、事件等) |
kubectl cordon <node-name> | 标记节点为不可调度(维护用) |
kubectl uncordon <node-name> | 恢复节点为可调度 |
kubectl drain <node-name> --ignore-daemonsets | 排空节点(驱逐Pod) |
2. 命名空间 (Namespace)
命令 | 说明 |
---|---|
kubectl get ns | 查看所有命名空间 |
kubectl create ns <namespace> | 创建命名空间 |
kubectl config set-context --current --namespace=<ns> | 切换当前操作的命名空间 |
3. Pod 操作
命令 | 说明 |
---|---|
kubectl get pods [-n <namespace>] | 查看所有 Pod(默认当前命名空间) |
kubectl describe pod <pod-name> | 查看 Pod 详细信息(事件、状态等) |
kubectl logs <pod-name> [-c <container>] | 查看 Pod 日志(指定容器) |
kubectl exec -it <pod-name> -- /bin/sh | 进入 Pod 的 Shell |
kubectl delete pod <pod-name> | 删除 Pod |
4. Deployment 管理
命令 | 说明 |
---|---|
kubectl get deploy | 查看所有 Deployment |
kubectl scale deploy <deploy-name> --replicas=3 | 扩缩容 Pod 副本数 |
kubectl rollout status deploy/<deploy-name> | 查看 Deployment 发布状态 |
kubectl rollout undo deploy/<deploy-name> | 回滚到上一个版本 |
kubectl edit deploy <deploy-name> | 直接编辑 Deployment 配置 |
5. Service 与 Ingress
命令 | 说明 |
---|---|
kubectl get svc | 查看所有 Service |
kubectl get ingress | 查看所有 Ingress |
kubectl expose deploy <deploy-name> --port=80 --target-port=8080 | 创建 Service 暴露 Deployment |
6. 配置与存储
命令 | 说明 |
---|---|
kubectl get configmap | 查看所有 ConfigMap |
kubectl get secret | 查看所有 Secret |
kubectl create secret generic <name> --from-file=key=path | 创建 Secret |
kubectl get pv | 查看持久卷(PersistentVolume) |
kubectl get pvc | 查看持久卷声明(PersistentVolumeClaim) |
7. 调试与故障排查
命令 | 说明 |
---|---|
kubectl get events --sort-by=.metadata.creationTimestamp | 按时间排序查看事件 |
kubectl top pod/node | 查看 Pod/节点的资源使用(需 metrics-server) |
kubectl api-resources | 查看所有支持的资源类型 |
kubectl explain <resource> | 查看资源定义(如 kubectl explain pod.spec ) |
8. 快捷技巧
-
别名简化:
bash
复制
alias k=kubectl alias kgp="kubectl get pods"
-
字段过滤:
bash
复制
kubectl get pods -o wide # 显示更宽字段(如IP、节点) kubectl get pods --field-selector status.phase=Running # 过滤运行中的 Pod
-
格式化输出:
bash
复制
kubectl get pods -o jsonpath='{.items[*].metadata.name}' # 仅输出 Pod 名称 kubectl get pods -o yaml > pod.yaml # 导出 YAML 配置
常用资源类型缩写
缩写 | 全称 |
---|---|
po | pods |
deploy | deployment |
svc | service |
ing | ingress |
cm | configmap |
ns | namespace |
注意:
-
所有命令默认使用当前上下文(Context)和命名空间(Namespace),可通过
kubectl config
管理上下文; -
复杂操作建议结合 YAML 文件(如
kubectl apply -f deploy.yaml
)。