# 查看所有命名空间kubectl get namespaces
kubectl get ns
# 创建命名空间kubectl create namespace dev
# 删除命名空间kubectl delete namespace dev
# 在指定命名空间下操作(-n 或 --namespace)kubectl get pods -n dev
# 查看所有命名空间的资源kubectl get pods --all-namespaces
kubectl get pods -A
# 查看资源列表kubectl get <resource> # 如 kubectl get podskubectl get <resource> -o wide # 显示更多信息kubectl get <resource> -o yaml # 输出 YAML 格式kubectl get <resource> -o json # 输出 JSON 格式kubectl get <resource> -o name # 只显示资源名kubectl get <resource> --show-labels # 显示标签kubectl get <resource> --sort-by=.metadata.creationTimestamp # 按创建时间排序# 查看资源详情kubectl describe <resource> <name>
# 创建/更新资源kubectl apply -f manifest.yaml # 推荐,幂等操作kubectl apply -f ./manifests/ # 应用目录下所有文件kubectl apply -f https://url/manifest.yaml # 从 URL 应用# 删除资源kubectl delete -f manifest.yaml # 按文件删除kubectl delete pod <pod-name> # 按名称删除kubectl delete pod <pod-name> --grace-period=0 --force # 强制删除(卡住时用)# 编辑资源kubectl edit <resource> <name> # 打开编辑器修改# 查看资源定义帮助kubectl explain pod
kubectl explain pod.spec.containers
二、Pod 管理
2.1 查看 Pod
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 列出 Podkubectl get pods
kubectl get pods -o wide # 显示 IP 和所在节点kubectl get pods -w # 持续监控变化(watch)kubectl get pods --field-selector status.phase=Running # 按状态过滤# 查看所有命名空间的 Podkubectl get pods -A
# 按标签筛选kubectl get pods -l app=nginx
kubectl get pods -l 'app in (nginx, redis)'# 查看 Pod 详情kubectl describe pod <pod-name>
# 查看 Pod 的 YAMLkubectl get pod <pod-name> -o yaml
# 查看持久卷kubectl get persistentvolumes
kubectl get pv
# 查看持久卷声明kubectl get persistentvolumeclaims
kubectl get pvc
# 查看 PVC 绑定状态kubectl get pvc -o wide
# 查看 PV 详情kubectl describe pv <pv-name>
kubectl describe pvc <pvc-name>
六、排错调试
6.1 排查流程
1
2
3
4
5
Pod 一直 Pending → kubectl describe pod 查看 Events,通常是资源不足
Pod 一直 CrashLoopBackOff → kubectl logs --previous 查看上次崩溃日志
Pod ImagePullBackOff → 检查镜像名和镜像仓库权限
Service 无法访问 → 检查 Endpoints 是否有 Pod,标签是否匹配
Pod 间无法通信 → 检查 NetworkPolicy,检查 DNS 解析
# 查看 Pod 事件(排错第一步)kubectl describe pod <pod-name> | grep -A 20 Events
# 查看 Pod 状态和重启次数kubectl get pods -o wide
# 查看容器日志kubectl logs <pod-name> --previous # 上次崩溃的日志kubectl logs <pod-name> -c <container> -f # 指定容器,实时跟踪# 进入容器排查kubectl exec -it <pod-name> -- sh
# 查看 Pod 失败原因kubectl get pod <pod-name> -o jsonpath='{.status.conditions[?(@.type=="Ready")].message}'# 查看节点事件kubectl get events --sort-by='.lastTimestamp'kubectl get events --field-selector involvedObject.name=<pod-name>
# 查看 API 资源消耗kubectl get --raw /metrics
6.3 资源使用
1
2
3
4
5
6
7
8
9
10
11
# 查看节点资源使用(需要 metrics-server)kubectl top nodes
# 查看 Pod 资源使用kubectl top pods
kubectl top pods -n <namespace>
kubectl top pods --sort-by=memory # 按内存排序kubectl top pods --sort-by=cpu # 按 CPU 排序# 安装 metrics-server(如果 top 命令报错)kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
七、标签与选择器
7.1 标签操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看标签kubectl get pods --show-labels
# 添加标签kubectl label pod <pod-name> env=prod
# 修改标签(覆盖已有值)kubectl label pod <pod-name> env=staging --overwrite
# 删除标签kubectl label pod <pod-name> env-
# 按标签筛选kubectl get pods -l app=nginx
kubectl get pods -l 'tier in (frontend,backend)'kubectl get pods -l 'env!=debug'kubectl get pods -l 'version in (v1, v2),app=nginx'
7.2 注解
1
2
3
4
5
6
7
8
# 添加注解kubectl annotate pod <pod-name> description="测试 Pod"# 查看注解kubectl describe pod <pod-name> | grep -A 5 Annotations
# 删除注解kubectl annotate pod <pod-name> description-
# 查看 API 资源类型kubectl api-resources
# 查看 API 版本kubectl api-versions
# 查看所有资源(包括 CRD)kubectl get all -A
# 查看集群组件状态kubectl get componentstatuses
kubectl get cs
8.3 RBAC
1
2
3
4
5
6
7
8
9
10
11
# 查看角色kubectl get roles
kubectl get clusterroles
# 查看角色绑定kubectl get rolebindings
kubectl get clusterrolebindings
# 查看角色详情kubectl describe role <role-name>
kubectl describe clusterrole <clusterrole-name>