Service是基于四层TCP和UDP协议转发的,而Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,如下图所示。
要想使用Ingress功能,必须在Kubernetes集群上安装Ingress Controller。Ingress Controller有很多种实现,最常见的就是Kubernetes官方维护的NGINX Ingress Controller;不同厂商通常有自己的实现,例如华为云CCE使用华为云弹性负载均衡服务ELB实现Ingress的七层负载均衡。
外部请求首先到达Ingress Controller,Ingress Controller根据Ingress的路由规则,查找到对应的Service,进而通过Endpoint查询到Pod的IP地址,然后将请求转发给Pod。
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: test-ingress annotations: kubernetes.io/ingress.class: cce kubernetes.io/elb.port: '8080' kubernetes.io/elb.ip: 192.168.10.155 kubernetes.io/elb.id: aa7cf5ec-7218-4c43-98d4-c36c0744667a spec: rules: - host: '' http: paths: - backend: serviceName: nginx servicePort: 8080 path: "/test" property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
Ingress中还可以设置外部域名,这样您就可以通过域名来访问到ELB,进而访问到后端服务。
域名访问依赖于域名解析,需要您将域名解析指向ELB实例的IP地址,例如您可以使用云解析服务 DNS来实现域名解析。
spec:
rules:
- host: www.example.com # 域名
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80
Ingress可以同时路由到多个服务,配置如下所示。
spec: rules: - host: foo.bar.com # host地址 http: paths: - path: "/foo" backend: serviceName: s1 servicePort: 80 - path: "/bar" backend: serviceName: s2 servicePort: 80
云数据库和普通数据库有什么区别?云数据库和普通数据库在可靠性、安全性、可拓...
上篇文章介绍了对对碰游戏的理论部分和介绍了JLabel、JButton、JPanel、ImageIco...
1. 接口描述 接口请求域名: lighthouse.tencentcloudapi.com 。 本接口(Descri...
走向第二个十年,阿里云迎来最重要的全面升级。9月17日,在2020云栖大会上,阿里...
阿里云容器服务ACK的容器存储功能基于Kubernetes存储系统,深度融合阿里云存储服...
很多伟大产品都是来自于企业内部,一开始是企业出于自身需求开发了某种工具,后...
注册十年 域名 多少钱?域名后缀种类多,不同的域名,注册价格不一样,注册十年...
腾讯云大学为广大用户提供了多种类型的视频教程,为服务开发者提供了专业的云技...
操作场景 本文介绍如何通过容器服务控制台查看集群中已创建的节点池,并获取节点...
近年来,随着工业互联网的快速发展,大数据、云计算、区块链、人工智能等新一代...