7-K8S核心技术Service

k8s

概念

在k8s中可以通过pod的ip来进行访问,但是pod的ip不是固定的,而service资源会对提供同一个服务的多个pod进行聚合,提供一个统一的入口,通过访问service的入口地址就能访问到后面的pod服务。

Service存在的意义

防止pod失联(服务发现)

service充当注册中心的作用,当前有多个前端、后端pod时,前端可以通过service访问后端。

定义pod访问策略(负载均衡)

前端pod访问后端pod时,中间会通过service,这里service还能辺负载均衡,将前端请求分发到各个后端pod。

service资源类型

ClusterIP:集群内部访问,默认方式
NodePort:对外访问应用使用
LoadBalancer:对外访问应用使用,公有云

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
~]# kubectl get svc nginx -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2022-07-14T14:01:34Z"
labels:
app: nginx
name: nginx
namespace: default
resourceVersion: "266455"
selfLink: /api/v1/namespaces/default/services/nginx
uid: d45f429a-23b9-435f-a7ed-704996bb1999
spec:
clusterIP: 10.1.160.174
externalTrafficPolicy: Cluster
ports:
- nodePort: 30619 #容器所在节点的端口,即外部机器可以访问的端口
port: 80 #service的端口,即k8s中服务之间的访问端口
protocol: TCP
targetPort: 80 #pod的端口
selector:
app: nginx
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}