文档首页 > > 开发指南> 使用Service和Ingress管理网络访问>

Ingress

Ingress

分享
更新时间:2021/04/12 GMT+08:00

上一节中讲了创建LoadBalancer类型的Service,使用ELB实例从外部访问Pod。

但是Service是基于四层TCP和UDP协议转发的,Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,如下图所示。

图1 Ingress-Service

在云容器实例中,使用Ingress绑定ELB的IP和端口,实现外部访问,如图2所示。

图2 Ingress

ELB实例

Ingress支持绑定增强型ELB实例,您可以调用创建负载均衡器(增强型)创建ELB实例,更方便的方法是通过ELB控制台创建增强型ELB实例。

ELB实例根据IP地址不同可以分为私网ELB实例和公网ELB实例,区别在于公网ELB实例绑定了一个公网IP,您可以根据需要选择。

创建Ingress

下面例子中,使用http协议,关联的backend为“nginx:8080”,当访问“http://10.10.10.10:6071/”时,流量转发“nginx:8080”对应的Service,从而放到都对应负载中的Pod。
apiVersion: extensions/v1beta1                                   # Ingress的版本
kind: Ingress
metadata:
  name: nginx
  labels:
    app: nginx
    isExternal: "true"   # 必选参数,取值必须为 "true"
    zone: data         # 数据平面模式,必选参数,取值必须为data
  annotations:
    kubernetes.io/elb.id: 2d48d034-6046-48db-8bb2-53c67e8148b5   # ELB实例的ID,必选参数
    kubernetes.io/elb.ip: 192.168.137.182                        # ELB实例的IP,可选参数
    kubernetes.io/elb.port: '6071'                               # ELB实例的端口,必选参数
spec:
  rules:                                                         # 路由规则
  - http:                                                        # 使用http协议                      
      paths:
      - path: /                                                  # 路由 
        backend:
          serviceName: nginx                                     # 转发到的Service名称
          servicePort: 8080                                      # 转发到的Service端口

Ingress中还可以设置外部域名,这样您就可以通过域名来访问到ELB,进而访问到后端服务。

域名访问依赖于域名解析,需要您将域名解析指向ELB实例的IP地址,例如您可以使用云解析服务 DNS来实现域名解析。

spec:
  rules:
  - host: www.example.com       # 域名
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx
          servicePort: 80

路由到多个服务

Ingress可以同时路由到多个服务,配置如下所示。

  • 当访问“http://foo.bar.com/foo”时,访问的是“s1:80”后端。
  • 当访问“http://foo.bar.com/bar”时,访问的是“s2:80”后端。
spec:
  rules:
  - host: foo.bar.com          # host地址
    http:
      paths:
      - path: "/foo"
        backend:
          serviceName: s1
          servicePort: 80
      - path: "/bar"
        backend:
          serviceName: s2
          servicePort: 80
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区论坛频道来与我们联系探讨

智能客服提问云社区提问