Service与Ingress
Service
service主要是为了解决POD的IP不固定,以及将请求负载给多个POD的4层负载,实际上Service 是由 kube-proxy 组件,加上 iptables 来共同实现的,一个典型的YAML配置如下
1 | kind: Service |
上面文件将请求服务负载到含有标签proj_name的值为xxx-xxx-server的POD上,targetPort指定POD的端口,port为service的端口
1 | kubectl get svc |
“CLUSTER-IP”所显示的ip仅仅可以在集群内使用,如果需要对外暴露需要指定为NodePort,样例如下
1 | kind: Service |
“nodePort: 8080”这样所有K8S节点都会监听8080,无论从哪个节点访问都能访问到对应的服务,这有个问题,如果随着对外开放的业务越多,为了保持端口服务的唯一,”nodePort”参数每新建一个业务就要修改一次,k8s节点上监听的端口也就越多,前端Ng代理的upstream也同时也要新增一次,因为端口号不一样,随着端口越来越多维护起来也越来越麻烦!!!
Ingress
ingress是一个7层的全局代理工具,就像Nginx通过url请求到不同的service,这样只需要在k8s上对外暴露ingress的端口就可以,其他业务的service就不需要定义nodePort,前端Nginx也只需要定义一个指向ingress对外暴露端口的upstream就可以了(其实前端Nginx已经可以不在需要),这样就完美的解决了上面的问题。一个典型的Ingress定义如下
1 | apiVersion: extensions/v1beta1 |
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" 转载请保留原文链接及作者。