kubectl get - 显示资源列表
基本语法
bash
kubectl get <资源类型> [资源名称] [选项参数]- 资源类型:支持复数形式(如
pods)、单数形式(如pod)或缩写(如po)。 - 资源名称:可选,指定具体资源名称(支持通配符
*)。 - 选项参数:控制输出格式、过滤条件等。
资源类型
核心工作负载
| 资源类型 | 缩写 | 查询示例 | 关键字段 |
|---|---|---|---|
pods | po | kubectl get po -o wide | status.phase, spec.nodeName |
deployments | deploy | kubectl get deploy -w | spec.replicas, status.availableReplicas |
replicasets | rs | kubectl get rs --show-labels | spec.selector.matchLabels |
statefulsets | sts | kubectl get sts -n db | spec.serviceName, spec.volumeClaimTemplates |
daemonsets | ds | kubectl get ds -A | status.desiredNumberScheduled |
jobs | - | kubectl get jobs -n batch | spec.completions, status.succeeded |
cronjobs | cj | kubectl get cj | spec.schedule, status.lastScheduleTime |
服务与网络
| 资源类型 | 缩写 | 关键用途 | 特殊参数 |
|---|---|---|---|
services | svc | 服务暴露和负载均衡 | -o jsonpath='{.spec.ports[*].targetPort}' |
endpoints | ep | 查看实际服务端点 | kubectl get ep <svc-name> |
ingresses | ing | 7层路由规则 | kubectl get ing -o yaml查看重定向规则 |
networkpolicies | netpol | 网络隔离策略 | kubectl describe netpol |
存储资源
| 资源类型 | 缩写 | 关键命令 | 生产注意点 |
|---|---|---|---|
persistentvolumes | pv | kubectl get pv --sort-by=.spec.capacity.storage | 关注 reclaimPolicy |
persistentvolumeclaims | pvc | kubectl get pvc -n storage | 检查 status.phase 是否为 Bound |
storageclasses | sc | kubectl get sc | 确认 provisioner 类型 |
配置与安全
| 资源类型 | 缩写 | 典型查询 | 重要字段 |
|---|---|---|---|
configmaps | cm | kubectl get cm -o json | data 字段内容 |
secrets | - | kubectl get secrets | 用 -o yaml查看 base64 解码内容 |
serviceaccounts | sa | kubectl get sa -n kube-system | 关联的 secrets |
roles/rolebindings | - | kubectl get rolebindings -A | 检查 subjects.kind |
扩展资源 (CRD)
| 资源类型 | 缩写 | 所属项目 | 生产级查询示例 |
|---|---|---|---|
certificates.cert-manager.io | cert | Cert-Manager | kubectl get cert -n ingress |
virtualservices.networking.istio.io | vs | Istio | kubectl get vs -n istio-system |
prometheuses.monitoring.coreos.com | - | Prometheus Operator | kubectl get prometheus -n monitoring |
核心选项参数详解
输出控制
| 参数 | 说明 | 示例 |
|---|---|---|
-o, --output | 指定输出格式: wide(显示更多字段) yaml/json(原始定义) name(仅资源名称) custom-columns(自定义列) | kubectl get po -o wide kubectl get deploy -o yaml |
--show-labels | 显示资源的标签 | kubectl get po --show-labels |
--no-headers | 隐藏表头 | kubectl get po --no-headers |
命名空间控制
| 参数 | 说明 | 示例 |
|---|---|---|
-n, --namespace | 指定命名空间 | kubectl get po -n dev |
-A, --all-namespaces | 查看所有命名空间 | kubectl get po -A |
过滤与选择
| 参数 | 说明 | 示例 |
|---|---|---|
--field-selector | 按字段过滤(如状态) | kubectl get po --field-selector=status.phase=Running |
-l, --selector | 按标签过滤 | kubectl get po -l app=nginx |
--sort-by | 按字段排序 | kubectl get po --sort-by=.metadata.creationTimestamp |
实时监控
| 参数 | 说明 | 示例 |
|---|---|---|
-w, --watch | 实时监听资源变化 | kubectl get po -w |
--watch-only | 仅监听变化(不显示初始状态) | kubectl get po --watch-only |
经典案例
基础查询
bash
# 查看默认命名空间的所有 Pods
kubectl get pods
# 查看所有命名空间的 Deployments
kubectl get deployments -A
# 查看指定命名空间的 Service 并显示标签
kubectl get svc -n prod --show-labels高级过滤
bash
# 筛选状态为 Running 的 Pods
kubectl get po --field-selector=status.phase=Running
# 按标签筛选(标签键为 app,值为 nginx)
kubectl get po -l app=nginx
# 按创建时间倒序排列 Pods
kubectl get po --sort-by=.metadata.creationTimestamp --no-headers | tac自定义输出格式
bash
# 仅显示 Pod 名称和所在节点
kubectl get po -o=custom-columns=NAME:.metadata.name,NODE:.spec.nodeName
# 输出 JSON 格式(适合脚本处理)
kubectl get po -o json
# 显示 Pod 的 IP 和状态
kubectl get po -o wide实时监控与调试
bash
# 实时监听 Pod 状态变化
kubectl get po -w
# 监听指定命名空间的 Events
kubectl get events -n dev -w跨资源查询
bash
# 同时查看 Pods 和 Services
kubectl get po,svc
# 查看某个 Deployment 关联的 ReplicaSet 和 Pods
kubectl get deploy,rs,po -l app=nginx