跳到主要内容

spec

2024年11月13日
柏拉文
越努力,越幸运

一、type


二、ports


三、selector


3.1 认识

Kubernetes 中,selectorService 的一个重要属性,用于定义 Service 与一组 Pod 的关联关系。通过 selectorService 可以根据 Pod 上的标签(Label)筛选出需要负载均衡的目标 Pod,从而在这些 Pod 上提供统一的网络访问入口。

selector 的作用:

  • 过滤目标 Podselector 可以指定一组标签,Service 通过这些标签找到符合条件的 Pod,将流量分发给这些 Pod

  • 实现负载均衡Service 会在其选择的 Pod 之间进行负载均衡,以确保流量均匀分布。

  • 动态管理 Pod:如果新创建的 Pod 符合 selector 的标签要求,Service 会自动将其纳入负载均衡;同样,Pod 被删除或标签发生变化时,也会动态地移出 Service 的负载均衡范围。

3.2 语法

创建 Deployment: 先定义一个 DeploymentPod 使用标签 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: nginxPod

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

验证 Serviceselector: 执行以下命令检查 Service 的信息:

kubectl get service nginx-service

可以查看 ServiceENDPOINTS 列,确认它是否正确地关联了带有标签 app=nginxPodService 会自动更新其 Endpoints,确保流量始终分发到符合 selector 条件的 Pod