详情页标题前

阿里云容器服务ACK通过使用已有SLB的服务公开应用-云淘科技

详情页1

通过阿里云负载均衡SLB(Server Load Balancer)暴露的服务(Service),在集群外可通过SLB域名或的方式访问服务,在集群内可通过的方式访问服务。本文以Nginx应用为例,介绍如何通过使用已有SLB的服务来公开应用

前提条件

已存在通过SLB控制台创建的SLB实例,且该实例与Kubernetes集群处于同一地域。如果没有创建,请参见创建和管理CLB实例。

使用说明

如果您集群的Cloud Controller Manager(CCM)组件版本大于等于v1.9.3.59-ge3bc999-aliyun,对于指定已有SLB,CCM默认不再为该SLB处理监听。您可以通过设置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"参数来启用监听配置,或者手动配置该SLB的监听规则。

查看CCM版本的方法:

  • 使用控制台:在集群组件管理页面查看CCM组件版本。

    1. 登录容器服务管理控制台。

    2. 在控制台左侧导航栏,单击集群

    3. 集群列表页面,在目标集群右侧,选择更多 > 组件管理,进入组件管理页签查看CCM的版本信息。

  • 使用kubectl命令行(仅适用于专有版集群):执行以下命令查看CCM组件版本。

    kubectl get pod -n kube-system -o yaml|grep image:|grep cloud-con|uniq

注意事项

  • 被复用的SLB需要满足以下限制条件:

    • 支持复用通过SLB控制台手动创建的SLB,不支持复用CCM自动创建的SLB及集群APIServer SLB。

    • 如果您需要在Kubernetes集群中复用私网类型的SLB,则该SLB需要和Kubernetes集群处于同一VPC下。

    • 复用SLB的地址类型必须与服务的访问类型一致。当服务为公网访问(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet")时,所用SLB的地址类型必须为公网;当服务为内部访问(即service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet")时,所用SLB的地址类型必须为私网

    • 多个服务不能同时使用一个SLB的同一个监听端口。

    • 跨集群复用已有SLB时,需要确保两个集群的命名空间+Service组合名称不一致。

  • CCM只为Type=LoadBalancer类型的服务配置SLB。对于非LoadBalancer类型的服务,则不会为其配置负载均衡。

    重要

    Type=LoadBalancer的服务变更为其他类型时,CCM会删除为该SLB添加的配置,从而造成无法通过该SLB访问服务。

  • CCM使用声明式API,会在一定条件下自动根据服务的配置刷新SLB配置。当service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: 设置为"true"时,您自行在SLB控制台上修改的配置均存在被覆盖的风险。

    重要

    请勿在SLB控制台上手动修改Kubernetes创建并维护的SLB的任何配置,否则有配置丢失的风险,造成服务不可访问。

  • 已创建的LoadBalancer类型Service不支持重新指定SLB。如果您需要更换SLB,请重新创建Service。

SLB配额限制

  • CCM会为Type=LoadBalancer类型的Service创建SLB。默认情况下一个用户可以保留60个SLB实例。如果需要创建的SLB数量大于60,请到配额平台提交申请。

  • CCM会根据Service的配置将ECS挂载到SLB后端服务器组中。

    • 默认情况下一个ECS实例可挂载的后端服务器组的数量为50个,如果一台ECS需要挂载到更多的后端服务器组中,请到配额平台提交申请。

    • 默认情况下一个SLB实例可以挂载200个后端服务器,如果需要挂载更多的后端服务器,请到配额平台提交申请。

  • CCM会根据Service中定义的端口创建SLB监听。默认情况下一个SLB实例可以添加50个监听,如需添加更多监听,请到配额平台提交申请。

  • 更多SLB使用限制请参见使用限制。

    负载均衡SLB配额查询请参见负载均衡SLB配额管理。

步骤一:部署示例应用

以下应用部署通过kubectl命令行方式进行。如果您需要通过控制台部署应用,请参见创建无状态工作负载Deployment。

  1. 使用以下示例应用的YAML内容,创建名为my-nginx.yaml文件。

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: my-nginx    # 示例应用的名称。
      labels:
        app: nginx
    spec:
      replicas: 3       # 设置副本数量。
      selector:
        matchLabels:
          app: nginx     # 对应服务中Selector的值需要与其一致,才可以通过服务公开此应用。
      template:
        metadata:
          labels:
            app: nginx
        spec:
        #  nodeSelector:
        #    env: test-team
          containers:
          - name: nginx
            image: registry.aliyuncs.com/acs/netdia:latest     # 替换为您实际的镜像地址,格式为:。
            ports:
            - containerPort: 80                                # 需要在服务中暴露该端口。
  2. 执行以下命令,部署示例应用my-nginx。

    kubectl apply -f my-nginx.yaml
  3. 执行以下命令,确认示例应用状态正常。

    kubectl get deployment my-nginx

    返回结果示例:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    my-nginx   3/3     3            3           50s

步骤二:通过使用已有SLB的服务公开应用

您可以通过控制台和kubectl两种方式来创建LoadBalancer类型的服务,并通过其公开应用。

控制台方式

  1. 登录容器服务管理控制台。

  2. 在控制台左侧导航栏,单击集群

  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  4. 在集群管理页左侧导航栏,选择网络 > 服务

  5. 服务页面,单击右上角的创建

  6. 创建服务对话框中,设置服务的相关参数。

    阿里云容器服务ACK通过使用已有SLB的服务公开应用-云淘科技

    配置项

    描述

    示例

    名称

    输入服务的名称。

    my-nginx-svc

    类型

    选择服务类型,即服务访问的方式。

    强制覆盖已有监听:选择是否强制覆盖SLB上的已有监听或者为没有监听的SLB自动创建监听。

    说明

    • 如果已有负载均衡的监听上绑定了业务,强制覆盖可能会引发业务中断。

    • 由于CCM目前支持的后端配置有限,无法处理一些复杂配置。如果有复杂的后端配置需求,可以在不覆盖监听的情况下,通过控制台自行配置监听。

    如存在以上两种情况不建议强制覆盖监听;如果已有负载均衡的监听端口不再使用,则可以强制覆盖。

    支持选择公网访问和私网访问。您可根据业务需求选择公网访问或私网访问,如果仅仅在VPC内访问,选择私网访问即可。

    • 依次选择:负载均衡 > 公网访问 > 使用已有SLB > 需要使用的SLB实例。

    • 本示例中的SLB实例为新创建,需要为其创建监听,因此选中强制覆盖已有监听

    关联

    选择关联该服务要绑定的后端应用。若不进行关联部署,则不会创建相关的Endpoints对象,您也可自己进行绑定,请参见services-without-selectors。

    my-nginx

    外部流量策略

    设置外部流量策略。

    • Local:流量只发给本机的Pod。

    • Cluster:流量可以转发到集群中其他节点上的Pod。

    说明

    您的服务类型为节点端口负载均衡时,才能设置外部流量策略

    Local

    端口映射

    添加服务端口(对应Service YAML文件中的port)和容器端口(对应Service YAML文件中的targetPort),容器端口需要与后端的Pod中暴露的容器端口一致。

    80

    注解

    为该服务添加一个注解(Annotation),配置负载均衡的参数。您可以选择自定义注解阿里云注解。更多注解请参见通过Annotation配置传统型负载均衡CLB。

    本示例中,将该服务的收费方式设置为按带宽收费,带宽峰值设置为2 Mbit/s,从而控制服务的流量。

    • 类型:阿里云注解

    • 名称

      • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type

      • service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth

      • paybybandwidth

      • 2

    标签

    为该服务添加一个标签,标识该服务。

  7. 单击创建

    服务页面,可以看到新创建的服务。阿里云容器服务ACK通过使用已有SLB的服务公开应用-云淘科技

  8. 单击该服务在外部端点列的39.106.XX.XX:80,访问示例应用。

Kubectl方式

  1. 使用以下示例服务的YAML内容,创建名为my-nginx-svc.yaml的文件。

    • 修改service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id,请替换${YOUR_LB_ID}为您通过负载均衡管理控制台创建的SLB实例ID。

    • 使用已有的SLB实例时,默认情况下不会为该SLB创建监听或覆盖已有监听。如有需要,请设置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners"true"。本示例中,SLB实例为新创建,需要为其创建监听,因此设为true。更多注解请参见通过Annotation配置传统型负载均衡CLB。

    • 将selector修改为my-nginx.yaml示例应用文件中matchLabels的值(即:app: nginx),从而将该服务关联至后端应用。

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: ${YOUR_LB_ID}
        service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
      labels:
        app: nginx
      name: my-nginx-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: LoadBalancer
  2. 执行以下命令创建名为my-nginx-svc的服务,并通过其公开应用。

    kubectl apply -f my-nginx-svc.yaml
  3. 执行以下命令确认LoadBalancer类型的服务创建成功。

    kubectl get svc my-nginx-svc

    返回结果示例:

    NAME           TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)        AGE
    my-nginx-svc   LoadBalancer   172.21.5.82   39.106.XX.XX     80:30471/TCP   5m
  4. 执行curl 命令访问示例应用,请将YOUR-External-IP替换为上面获取到的EXTERNAL-IP地址。

    curl 39.106.XX.XX

    返回结果示例:

    
    
    
    Welcome to nginx!
    
        body {
            width: 35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    
    
    
    

    Welcome to nginx!

    If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.

    For online documentation and support please refer tonginx.org.
    Commercial support is available atnginx.com.

    Thank you for using nginx.

相关文档

  • 通过Annotation配置传统型负载均衡CLB

  • 通过使用自动创建SLB的服务公开应用

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

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

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

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

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

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

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

相关推荐

  • 阿里云负载均衡通过使用已有CLB的服务公开应用-云淘科技

    通过阿里云传统型负载均衡CLB(Classic Load Balancer)暴露的服务(Service),在集群外可通过CLB域名或的方式访问服务,在集群内可通过的方式访问服务。本文以Nginx应用为例,介绍如何通过使用已有CLB的服务来公开应用。 前提条件 已存在通过CLB控制台创建的CLB实例,且该实例与Kubernetes集群处于同一地域。如果没有创建…

    2023年12月10日
  • 阿里云负载均衡通过使用自动创建CLB的服务公开应用-云淘科技

    当您没有可用的传统型负载均衡CLB(Classic Load Balancer)时,Cloud Controller Manager(CCM)组件可以为LoadBalancer类型服务自动创建CLB,并对其进行管理。本文以Nginx应用为例,介绍如何通过使用自动创建CLB的服务来公开应用。 注意事项 CCM只为Type=LoadBalancer类型的服务配置…

    2023年12月10日
  • 阿里云容器服务ACK通过使用已有SLB的服务公开应用-云淘科技

    通过阿里云负载均衡SLB(Server Load Balancer)暴露的服务(Service),在集群外可通过SLB域名或的方式访问服务,在集群内可通过的方式访问服务。本文以Nginx应用为例,介绍如何通过使用已有SLB的服务来公开应用。 前提条件 已存在通过SLB控制台创建的SLB实例,且该实例与Kubernetes集群处于同一地域。如果没有创建,请参见…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK通过使用已有SLB的服务公开应用-云淘科技

    通过阿里云负载均衡SLB(Server Load Balancer)暴露的服务(Service),在集群外可通过SLB域名或的方式访问服务,在集群内可通过的方式访问服务。本文以Nginx应用为例,介绍如何通过使用已有SLB的服务来公开应用。 前提条件 已存在通过SLB控制台创建的SLB实例,且该实例与Kubernetes集群处于同一地域。如果没有创建,请参见…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK通过使用自动创建SLB的服务公开应用-云淘科技

    当您没有可用的SLB时,Cloud Controller Manager(CCM)组件可以为LoadBalancer类型服务自动创建SLB,并对其进行管理。本文以Nginx应用为例,介绍如何通过使用自动创建SLB的服务来公开应用。 注意事项 CCM只为Type=LoadBalancer类型的服务配置SLB。对于非LoadBalancer类型的服务,则不会为其…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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