spec
2024年11月13日
一、type
二、ports
三、selector
3.1 认识
在 Kubernetes
中,selector
是 Service
的一个重要属性,用于定义 Service
与一组 Pod
的关联关系。通过 selector
,Service
可以根据 Pod
上的标签(Label
)筛选出需要负载均衡的目标 Pod
,从而在这些 Pod
上提供统一的网络访问入口。
selector
的作用:
-
过滤目标
Pod
:selector
可以指定一组标签,Service
通过这些标签找到符合条件的Pod
,将流量分发给这些Pod
。 -
实现负载均衡:
Service
会在其选择的Pod
之间进行负载均衡,以确保流量均匀分布。 -
动态管理
Pod
:如果新创建的Pod
符合selector
的标签要求,Service
会自动将其纳入负载均衡;同样,Pod
被删除或标签发生变化时,也会动态地移出Service
的负载均衡范围。
3.2 语法
创建 Deployment
: 先定义一个 Deployment
,Pod
使用标签 app: nginx
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
创建 Service
并使用 selector
: 定义一个 Service
,通过 selector
匹配 app: nginx
的 Pod
:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
app: nginx # 匹配 Pod 的标签 app: nginx
ports:
- protocol: TCP
port: 80 # Service 的端口
targetPort: 80 # Pod 的端口
应用 Service
kubectl apply -f nginx-service.yaml
验证 Service
和 selector
: 执行以下命令检查 Service
的信息:
kubectl get service nginx-service
可以查看 Service
的 ENDPOINTS
列,确认它是否正确地关联了带有标签 app=nginx
的 Pod
。Service
会自动更新其 Endpoints
,确保流量始终分发到符合 selector
条件的 Pod
。