考点精讲
- Label 是附加在 Kubernetes 对象上的键值对(key: value),用于标识和归类对象;Label Selector 则依据标签来筛选对象,是控制器与 Service 关联后端 Pod 的核心机制。选择器分两种:等值选择器(=、==、!=)和集合选择器(in、notin、exists)。Service 通过 selector 匹配后端 Pod,Deployment 通过 selector 关联 ReplicaSet,ReplicaSet 再通过 selector 管理 Pod。日常筛选可用 kubectl get pods -l app=nginx。理解了「标签是贴纸、选择器是按贴纸找人」这个比喻,就能明白为什么 Service 的 selector 和 Pod 的 label 必须严格匹配,否则服务无法访问。
记忆技巧
标签是贴纸,选择器是按贴纸找人
等值用 =,集合用 in
等值用 =,集合用 in
常见误区
- Service 的 selector 与 Pod 的 label 不匹配导致无法访问
- 用错选择器语法(= 与 == 可混用但建议统一)
- 标签不唯一导致选择器误选多个对象
真题思路
- 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 Service 的 selector 与后端 Pod 的 label 不匹配时,最可能出现的现象是?
Service 仍能正常访问但延迟变高 Service 的 endpoints 为空,无法转发流量 Pod 无法被创建 节点自动重启
答案:B
解析:selector 匹配不到任何 Pod 时,Service 的 endpoints 为空,流量无法转发到后端;Pod 创建与节点重启与此无关。
常见问题
Q:等值选择器和集合选择器怎么用
A:等值用 =、==、!=,集合用 in、notin、exists。
Q:Service 访问不通先查什么
A:先查 Service 的 selector 与后端 Pod 的 label 是否匹配,以及 endpoints 是否为空。
Q:怎么按标签筛选 Pod
A:kubectl get pods -l 标签键=标签值。
相关知识
教材出处:第7章 Label与标签选择器 Label与标签选择器