- service存在意义
Service是Kubernetes里最核心的资源对象之一,Service定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入口地址访问其背后的一组由Pod副本组成的集群实力。 Service与其后端Pod副本集群之间则是通过Label Selector来实现"无缝对接"。而RC的作用实际上是保证Service 的服务能力和服务质量处于预期的标准。
- 防止Pod失联(服务发现)
定义一组Pod访问策略(负载均衡)
-
- Pod和Service关系(虚拟IP)
根据lable和selector标签建立关联的
service.yaml
selector:
app: nginx
Pod.yaml
lables:
app: nginx
3. 常用Service类型
![图片.png](https://ucc.alicdn.com/pic/developer-ecology/74f60c8de4874805bcf56ff1aff21476.png)
3.1 ClusterIP(集群内部使用)
apiVersion: v1
kind: Service
metadata:
labels:
app: web01
name: web01
spec:
type: ClusterIP
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80 - name: https
port: 8443
protocol: TCP #仅支持TCP和UDP,不写默认TCP
targetPort: 8443
selector:
app: web01
status:
loadBalancer: {}
![图片.png](https://ucc.alicdn.com/pic/developer-ecology/0dfac9aced594976acd8ff1f077b482d.png)
3.2 NodePort(对外访问应用使用)
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: web01
name: web01-nodeport
spec:
type: NodePort
ports:
- name: aaaa
port: 80
nodePort: 23232 # 指定对外提供端口, 不加则随机分配
targetPort: 80 - name: bbb
port: 9090
targetPort: 9090
selector:
app: web01
status:
loadBalancer: {}
3.3 LoadBalancer(对外访问应用使用,公有云)
LadBlancer Service 是Kubernetes深度结合云平台的一个组件;当使用LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务;目前LoadBlancer Service支持的云平台已经相对完善,比如国外的GCE、DigitalOcean,国内的阿里云,私有云(Openstack)等等,由于LoadBlancer Service深度结合了云平台,所以只能在一些云平台上使用