上云无忧 > 文档中心 > 天翼云云容器引擎公网访问-七层负载均衡-(ingress)
云容器引擎
天翼云云容器引擎公网访问-七层负载均衡-(ingress)

文档简介:
七层负载均衡是采用了增强型弹性负载均衡,在四层负载均衡访问方式的基础上支持了URI配置,通过对应的URI将访问流量分发到对应的服务。同时,服务根据不同URI实现不同的功能。
*产品来源:中国电信天翼云。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

七层负载均衡-(ingress)


七层负载均衡是采用了增强型弹性负载均衡,在四层负载均衡访问方式的基础上支持了URI配置,通过对应的URI将访问流量分发到对应的服务。同时,服务根据不同URI实现不同的功能。

七层负载均衡访问方式由弹性负载均衡ELB服务地址、设置的访问端口、定义的URI组成,例如:10.117.117.117:80/helloworld。

通过配置公网类型和私网类型的负载均衡实例可以实现公网的七层路由转发和内网(同一VPC内)的七层路由转发。

添加方式

您可以在创建应用时设置访问方式,也可以应用创建完成后添加访问方式。

  • 方式一:创建应用时配置。

  • 方式二:应用创建完成后配置,此配置对工作应用无影响,且实时生效。

通过界面创建

本节以ingress-test应用为例进行说明。

步骤1:创建应用; 

  • 若创建应用时,配置了应用访问方式,且设置为“VPC内网访问”,请直接执行步骤3。

  • 若创建应用未设置访问方式,请先执行步骤2。

步骤2:(可选)若创建应用时,未配置“VPC内网访问”,请执行如下操作。

1. 单击CCE左侧导航栏的“资源管理 > 网络管理”。

2. 在Service页签下,单击“添加Service”。选择类型为“VPC内网访问”。

−服务名称:自定义服务名称,可与应用名称保持一致。

−集群名称:选择需要添加Service的集群。

−命名空间:选择需要添加Service的命名空间。

−关联应用:单击“选择应用”,选择需要配置VPC内网访问的应用名称,单击“确定”。

−访问类型:选择节点IP。

−端口配置:

  • 协议:请根据业务的协议类型选择。

  • 容器端口:容器镜像中应用实际监听的端口,需用户确定。nginx程序实际监听的端口为80。

  • 访问端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。

  • 自动生成:系统会自动分配端口号。

  • 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。

3. 单击“创建”,为应用添加VPC内网访问方式。

步骤3:添加Ingress类型的Service。

1. 单击CCE左侧导航栏的“资源管理 > 网络管理”。

2. 在Ingress页签下,单击“添加Ingress”。

−Ingress名称:自定义Ingress名称,例如ingress-demo。

−集群名称:选择需要添加Ingress的集群。

−命名空间:选择需要添加Ingress的命名空间。

−增强型负载均衡实例:支持使用已有负载均衡实例和自动创建两种方式。

−对外端口:开放在负载均衡服务地址的端口,可任意指定。

−对外协议:支持HTTP和HTTPS。若选择HTTPS,请选择密钥证书。密钥证书需提前创建,密钥类型为IngressTLS。

−域名:实际访问的域名地址,对应负载均衡服务域名地址,需用户购买备案自己的域名,可选填。一旦配置了域名规则,则必须使用域名访问。否则,可以使用负载均衡实例的IP地址访问。

−路由配置:

  • 路由匹配规则:前缀匹配、精确匹配、正则匹配。

  • 前缀匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1,/healthz/v2。

  • 精确匹配:表示精准匹配,只有完全匹配上才能生效。例如映射URL为/healthz,则必须为此URL才能访问。

  • 正则匹配:可设定映射URL规范,例如规范为/[A-Za-z0-9_.-]+/test。只要符合此规则的URL均可访问,例如/abcA9/test,/v1-Ab/test。正则匹配规则支持POSIX与Perl两种标准。

  • 映射URL:需要注册的访问路径,例如:/healthz。

  • 服务名称:选择需要添加Ingress的服务,该服务访问类型为VPC内网服务。若服务不存在,请单击“点此创建服务 ”去创建一个服务。

  • 容器端口:容器镜像中容器实际监听端口,需用户确定。例如:defaultbackend程序实际监听的端口为8080。

步骤4:单击“创建”。

创建完成后,在Ingress列表可查看到已创建成功的Ingress。

步骤5:访问应用(例如名称为defaultbackend)的“/healthz”接口。

1. 获取defaultbackend“/healthz”接口的访问地址,访问地址有负载均衡实例、对外端口、映射URL组成,例如:10.154.76.63:80/healthz。

2. 在浏览器中输入“/healthz”接口的访问地址,即可成功访问应用。

 

kubectl命令行创建

本节以nginx为例,说明kubectl命令实现ingress访问的方法。

前提条件

配置kubectl命令,使弹性云主机连接集群。

步骤1:登录已配置好kubectl命令的弹性云主机。

步骤2:创建ingress-test-deployment.yaml、ingress-test-svc.yaml、ingress-test-ingress.yaml以及ingress-test-secret.yaml文件。

ingress-test-deployment.yaml、ingress-test-svc.yaml、ingress-test-ingress.yaml、ingress-test-secret.yaml为自定义名称,您可以随意命名。

 

选择HTTPS协议时,才需要创建密钥证书ingress-test-secret.yaml。

vi ingress-test-deployment.yaml

apiVersion: extensions/v1beta1 

kind: Deployment 

metadata: 

  name: ingress-test 

spec: 

  replicas: 1 

  selector: 

    matchLabels: 

      app: ingress-test 

  strategy: 

    type: RollingUpdate 

  template: 

    metadata: 

      labels: 

        app: ingress-test 

    spec: 

      containers: 

        #第三方公开镜像,可以参见描述获取地址,也可以使用自己的镜像 

      - image: nginx   

        imagePullPolicy: Always 

        name: nginx

vi ingress-test-svc.yaml

apiVersion: v1  

kind: Service  

metadata:  

  labels:  

    app: ingress-test  

  name: ingress-test  

spec:  

  ports:  

  - name: service0  

    port: 8080             #集群虚拟IP的访问端口  

    protocol: TCP  

    targetPort: 8080       #对应界面上的容器端口,应用程序实际监听的端口  

  #若需要设置多个端口,可依次填写,如下展示 

  - name: service1  

    port: 8081  

    protocol: TCP  

    targetPort: 8081 

  selector:  

    app: ingress-test  

  type:  NodePort         #采用Nodeport的访问类型连接负载均衡

vi ingress-test-ingress.yaml

apiVersion: extensions/v1beta1  

kind: Ingress  

metadata:  

  annotations:  

    kubernetes.io/elb.ip: 192.168.0.39        #必填,为负载均衡增强型实例的服务地址,公网ELB配置为公网IP,私网ELB配置为私网IP 

    kubernetes.io/elb.port: "80"              #必填,界面上的对外端口,为注册到负载均衡服务地址上的端口 

  name: ingress-test  

spec: 

  tls:                             #可选,HTTPS协议时,需添加此参数 

  - secretName: test-secret        #可选,HTTPS协议时添加,配置为创建的密钥证书名称 

  rules:  

  - http:  

      paths:  

      - backend:  

          serviceName: ingress-test   #为ingress-test-svc.yaml的服务名称 

          servicePort: 8080           #为ingress-test-svc.yaml的targetPort,即容器端口 

        property: 

          ingress.beta.kubernetes.io/url-match-mode: EQUAL_TO    #路由匹配策略,可选值为EQUAL_TO(精确匹配)、STARTS_WITH(前缀匹配)、REGEX(正则匹配) 

        path: "/healthz"              #为路由,用户自定义设置

vi ingress-test-secret.yaml

apiVersion: v1 

data: 

  tls.crt: LS0tLS1CRUdJ*******0tCg== 

  tls.key: LS0tLS1******ZLS0tLS0K 

kind: Secret 

metadata: 

  annotations: 

    description: test for ingressTLS secrets 

  name: test-secret 

  namespace: default 

type: IngressTLS

步骤3:创建应用。

kubectl create -f  ingress-test-deployment.yaml

回显如下,表明应用已创建。

deployment "nginx" created

kubectl get po

回显如下,表明应用创建成功。

NAME                            READY     STATUS             RESTARTS   AGE 

ingress-test-1627801589-r64pk   1/1       Running            0          6s

步骤4:创建密钥。

kubectl create -f ingress-test-secret.yaml

回显如下,表明密钥已创建。

secret "ingress-test-secret" created

kubectl get secrets

回显如下,表明密钥创建成功。

NAME                         TYPE                                  DATA      AGE 

dash-dashboard               Opaque                                0         7d 

dash-dashboard-token-f2nbk   kubernetes.io/service-account-token   3         7d 

default-secret               kubernetes.io/dockerconfigjson        1         8d 

default-token-wfn4l          kubernetes.io/service-account-token   3         8d 

paas.elb                     cfe/secure-opaque                     2         8d 

ingress-test-secret          IngressTLS                            2         13s

步骤5:创建服务。

kubectl create -f ingress-test-svc.yaml

回显如下,表示服务已创建。

service "ingress-test" created

kubectl get svc

回显如下,表示服务创建成功。

NAME            TYPE          CLUSTER-IP        EXTERNAL-IP   PORT(S)          AGE 

ingress-test    NodePort      10.247.189.207    <none>       8080:30532/TCP   5s 

kubernetes      ClusterIP     10.247.0.1        <none>        443/TCP          3d

kubectl create -f ingress-test-ingress.yaml

回显如下,表示ingress服务已创建。

ingress "ingress-test" created

kubectl get ingress

回显如下,表示ingress服务创建成功,应用可访问。

NAME             HOSTS     ADDRESS          PORTS   AGE 

ingress-test     *         10.154.76.63     80      10s

步骤6:在浏览器中输入访问地址http://10.154.76.63/healthz。

其中10.154.76.63为统一负载均衡实例的IP地址。

相似文档
  • 您可以根据业务需求自行定义伸缩策略,降低人为反复调整资源以应对业务变化和高峰压力的工作量,帮助您节约资源和人力成本。当前支持三种弹性伸缩策略:
  • 登录云容器引擎控制台,在左侧导航栏中选择【应用管理】,单击待设置伸缩策略的应用,进入应用详情页面,选择【伸缩】页签; 在【手动伸缩】策略下,单击 修改实例数量,单击【保存】。
  • 为应用删除提供一个时间窗,预留给生命周期中PreStop阶段执行命令。若超过此时间窗,进程仍未停止,该应用将被强制删除。若未设置,则默认设置为30秒。
  • 登录云容器引擎控制台,在左侧导航栏中选择【应用管理】,单击待设置伸缩策略的应用,进入应用详情页面,选择【更新升级】页签; 请根据业务需求进行应用的升级,升级的参数说明请参见下表:
  • 应用创建成功后,可通过性能监控,来监控容器的CPU和内存使用情况。 登录云容器引擎控制台,单击左侧导航栏的【应用管理】; 单击已创建应用的名称,进入应用详情页面; 单击【实例列表】,单击某个实例名称前的 ,单击【监控】;
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部