详情页标题前

阿里云容器服务ACK通过ALB Ingress访问服务-云淘科技

详情页1

ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer) 实现的Ingress服务,适用于有明显波峰波谷的业务场景。本文介绍如何在ACK集群中使用ALB Ingress访问服务。

前提条件

  • 已创建ACK托管集群或ACK专有集群,Kubernetes版本为1.18及以上版本。具体操作,请参见创建Kubernetes托管版集群、创建Kubernetes专有版集群。

  • 已创建两个不同可用区的交换机,且与集群处于同一VPC。具体操作,请参见创建和管理交换机。

  • 已为集群安装ALB Ingress Controller组件。具体操作,请参见管理ALB Ingress Controller组件。

    说明

    若需要在ACK专有集群中通过ALB Ingress访问服务,在部署服务前需要为ALB Ingress Controller授权。具体操作,请参见为ACK专有集群授予ALB Ingress Controller访问权限。

  • 已通过kubectl工具连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。

注意事项

  • 如果您使用的是Flannel网络插件,则ALB Ingress后端Service服务仅支持NodePort和LoadBalancer类型。

  • AlbConfig、Namespace、Ingress和Service这些资源的名称不能以aliyun开头。

背景信息

Ingress是允许访问集群内Service的规则集合,您可以通过配置转发规则,实现不同URL访问集群内不同的Service。但传统的Nginx Ingress或者四层SLB Ingress,已无法满足云原生应用服务对复杂业务路由、多种应用层协议(例如:QUIC等)、大规模七层流量能力的需求。

步骤一:创建AlbConfig

  1. 拷贝以下内容到alb-test.yaml文件中,用于创建AlbConfig。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    参数

    说明

    spec.config.name

    (可选)表示Alb实例的名称。

    spec.config.addressType

    (必选)表示负载均衡的地址类型。取值如下:

    • Internet(默认值):负载均衡具有公网IP地址,DNS域名被解析到公网IP,因此可以在公网环境访问。

    • Intranet:负载均衡只有私网IP地址,DNS域名被解析到私网IP,因此只能被负载均衡所在VPC的内网环境访问。

    spec.config.zoneMappings

    (必选)用于设置ALB Ingress交换机ID,您需要至少指定两个不同可用区交换机ID,指定的交换机必须在ALB当前所支持的可用区内,且与集群处于同一VPC。关于ALB Ingress支持的地域与可用区,请参见支持的地域与可用区。

  2. 执行以下命令,创建AlbConfig。

    kubectl apply -f alb-test.yaml

    预期输出:

    albconfig.alibabacloud.com/alb-demo created
  3. 创建并拷贝以下内容到alb.yaml文件中,用于创建IngressClass。

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-demo
  4. 执行以下命令,创建IngressClass。

      kubectl apply -f alb.yaml

    预期输出:

    ingressclass.networking.k8s.io/alb created

步骤二:部署服务

  1. 创建并拷贝以下内容到cafe-service.yaml文件中,用于部署两个名称分别为coffeetea的Deployment,以及两个名称分别为coffeetea的Service。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      type: NodePort
  2. 执行以下命令,部署两个Deployment和两个Service。

    kubectl apply -f cafe-service.yaml

    预期输出:

    deployment "coffee" created
    service "coffee-svc" created
    deployment "tea" created
    service "tea-svc" created
  3. 执行以下命令,查看应用和服务的状态。

    1. 执行以下命令,查看应用的状态。

      kubectl get deploy

      预期输出:

      NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
      coffee                           1/2     2            1           2m26s
      tea                              1/1     1            1           2m26s
    2. 执行以下命令,查看服务的状态。

      kubectl get svc

      预期输出:

      NAME                          TYPE           CLUSTER-IP       EXTERNAL-IP           PORT(S)                 AGE
      coffee-svc                    NodePort       172.16.XX.XX                     80:32056/TCP            9m38s
      tea-svc                       NodePort       172.16.XX.XX                     80:31696/TCP            9m38s

步骤三:配置ALB Ingress

  1. 创建并拷贝以下内容到cafe-ingress.yaml文件中。

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          # 配置Context Path。
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # 配置Context Path。
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          # 配置Context Path
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # 配置Context Path
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80
  2. 执行以下命令,配置coffeetea服务对外暴露的域名和path路径。

    kubectl apply -f cafe-ingress.yaml

    预期输出:

    ingress.networking.k8s.io/cafe-ingress created
  3. 执行以下命令获取ALB实例地址。

    kubectl get ing

    预期输出:

    NAME           CLASS    HOSTS                         ADDRESS                                               PORTS   AGE
    cafe-ingress   alb      demo.domain.ingress.top       alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com   80      50s

步骤四:访问服务

  • 利用获取的ALB实例地址,通过命令行方式访问coffee服务:

    curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/coffee
  • 利用获取的ALB实例地址,通过命令行方式访问tea服务:

    curl -H Host:demo.domain.ingress.top http://alb-lhwdm5c9h8lrcm****.cn-hangzhou.alb.aliyuncs.com/tea

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/170726.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云容器服务ACKALB Ingress FAQ-云淘科技

    本文汇总了使用ALB Ingress时的常见问题。 索引 为什么ALB Ingress规则不生效? ALB Ingress和Nginx Ingress有什么区别? ALB后端默认监听转发到kube-system-fake-svc-80服务器组,该服务器组的作用是什么? ALB Ingress是否支持同时使用公网和私网? 为什么在集群中看不到ALB Ingre…

    阿里云容器服务 2023年12月10日
  • 阿里云负载均衡自建Kubernetes集群使用ALB Ingress最佳实践-云淘科技

    本文指导您如何在阿里云云上自建的Kubernetes集群中通过ALB Ingress,来使用阿里云应用型负载均衡ALB(Application Load Balancer)产品。 场景示例 本文以下图场景为例。您已依托阿里云云上资源自建Kubernetes集群,并希望该集群可以通过ALB Ingress转发请求。 您可以通过在自建Kubernetes集群中部…

    2023年12月10日
  • 阿里云容器服务ACK通过ALB Ingress实现灰度发布-云淘科技

    当服务迭代更新升级时,需要使用灰度发布保证系统的稳定性。ALB Ingress Controller支持设置注解,将请求流量按比例匹配到灰度服务。本文介绍如何使用ALB Ingress实现服务的灰度发布。 前提条件 已创建ALBConfig和IngressClass。具体操作,请参见创建ALBConfig。canary注解说明ALB Ingress支持使用c…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK通过ALB Ingress实现灰度发布-云淘科技

    当服务迭代更新升级时,需要使用灰度发布保证系统的稳定性。ALB Ingress Controller支持设置注解,将请求流量按比例匹配到灰度服务。本文介绍如何使用ALB Ingress实现服务的灰度发布。 前提条件 已创建ALBConfig和IngressClass。具体操作,请参见创建ALBConfig。canary注解说明ALB Ingress支持使用c…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACKNginx Ingress、ALB Ingress和MSE Ingress对比-云淘科技

    ACK、ACK Serverless均支持Nginx Ingress、ALB Ingress和MSE Ingress。Nginx Ingress需要您自行维护,ALB Ingress和MSE Ingress为全托管模式。通过多个维度进行对比,本文介绍Nginx Ingress、ALB Ingress和MSE Ingress之间的差异。 背景信息 Nginx …

    阿里云容器服务 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。