Service与Ingress

  1. Service
  2. Ingress

Service

service主要是为了解决POD的IP不固定,以及将请求负载给多个POD的4层负载,实际上Service 是由 kube-proxy 组件,加上 iptables 来共同实现的,一个典型的YAML配置如下

1
2
3
4
5
6
7
8
9
10
11
12
kind: Service
apiVersion: v1
metadata:
name: ks-xx-xx-service
namespace: default
spec:
selector:
proj_name: xxx-xxx-server
ports:
- name: default
targetPort: 8080
port: 8080

上面文件将请求服务负载到含有标签proj_name的值为xxx-xxx-server的POD上,targetPort指定POD的端口,port为service的端口

1
2
3
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
xxxx-xxx-server-service ClusterIP 10.102.57.167 <none> 8080/TCP 6d19h

“CLUSTER-IP”所显示的ip仅仅可以在集群内使用,如果需要对外暴露需要指定为NodePort,样例如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kind: Service
apiVersion: v1
metadata:
name: ks-xx-xxx-service
namespace: default
spec:
type: NodePort
clusterIP: 10.96.0.100
selector:
proj_name: ks-xxxx-xx
ports:
- nodePort: 8080
targetPort: 8080
port: 8080

“nodePort: 8080”这样所有K8S节点都会监听8080,无论从哪个节点访问都能访问到对应的服务,这有个问题,如果随着对外开放的业务越多,为了保持端口服务的唯一,”nodePort”参数每新建一个业务就要修改一次,k8s节点上监听的端口也就越多,前端Ng代理的upstream也同时也要新增一次,因为端口号不一样,随着端口越来越多维护起来也越来越麻烦!!!

Ingress

ingress是一个7层的全局代理工具,就像Nginx通过url请求到不同的service,这样只需要在k8s上对外暴露ingress的端口就可以,其他业务的service就不需要定义nodePort,前端Nginx也只需要定义一个指向ingress对外暴露端口的upstream就可以了(其实前端Nginx已经可以不在需要),这样就完美的解决了上面的问题。一个典型的Ingress定义如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: dev-ingress
spec:
tls:
- secretName: xx.com
rules:
- host: d.sso.xxx.com
http:
paths:
- path: /
backend:
serviceName: ks-xxxx-server-service
servicePort: 80
- host: dsso.xxxx.com
http:
paths:
- path: /
backend:
serviceName: ks-xx-server-service
servicePort: 80

tls用于https相关配置,secretName指定了一个通过”kubectl create secret tls”命令创建的证书文件,rules指定了各个域名的路由规则,其中path是url,serviceName指定对应业务的service名称,servicePort是service监听的port


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

文章标题:Service与Ingress

文章字数:550

本文作者:Aaron

发布时间:2020-01-09, 20:00:32

最后更新:2020-01-09, 23:41:01

原始链接:http://blog.linuxerbulo.com/2020/01/09/Service%E4%B8%8EIngress/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏