开发者社区 > 飞天洛神云网络 > 负载均衡 > 正文

请问一下,我的ALB在NAMESPACE A 我现在想转发请求到NAMESPACE B,有教程吗?

请问一下,我的ALB在NAMESPACE A 我现在想转发请求到NAMESPACE B,有教程吗?

展开
收起
三分钟热度的鱼 2023-05-22 16:19:07 180 0
5 条回答
写回答
取消 提交回答
  • 是的,您可以使用 Kubernetes 的 Service 来实现在不同 Namespace 之间的转发请求。下面是一些简单的步骤:

    1. 在 Namespace B 中创建一个 Service,将它的 spec.type 设置为 ClusterIPNodePort,根据您的需求选择相应的类型。

    2. 在 Namespace A 中创建一个新的 Service,将它的 spec.type 设置为 ExternalName,并设置 spec.externalName 为 Namespace B 中创建的 Service 的服务名称,例如:

      apiVersion: v1
      kind: Service
      metadata:
       name: my-service
       namespace: namespace-a
      spec:
       type: ExternalName
       externalName: my-service.namespace-b.svc.cluster.local
      
    3. 现在,您可以通过访问 Namespace A 中的 my-service 来访问 Namespace B 中的 Service。

    需要注意的是,如果您使用的是 NodePort 类型的 Service,您需要在 Namespace A 中的防火墙中打开相应的端口。 更多信息可以参考 Kubernetes 官方文档:Services

    2023-05-22 23:53:57
    赞同 展开评论 打赏
  • 在 Kubernetes 中,将来自一个 Namespace 的请求转发到另一个 Namespace,一般可通过 Service 实现。 下面是一个网上的样例 YAML 文件,可以将来自一个 Namespace 的请求转发到另一个 Namespace。假设您想将 Namespace A 的请求转发到 Namespace B,您需要创建如下的 Service 和 Ingress:

    # Service - namespace-b
    apiVersion: v1
    kind: Service
    metadata:
      name: namespace-b
      namespace: namespace-b
    spec:
      selector:
        app: app-name
      ports:
      - name: http
        port: 80
        targetPort: 80
    
    # Service - namespace-a
    apiVersion: v1
    kind: Service
    metadata:
      name: namespace-a
      namespace: namespace-a
    spec:
      type: ExternalName
      externalName: namespace-b.namespace.svc.cluster.local
      ports:
      - name: http
        port: 80
        targetPort: http
    
    # Ingress - namespace-a
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: ingress-namespace-a
      namespace: namespace-a
      annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/scheme: internet-facing
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            backend:
              serviceName: namespace-a
              servicePort: http
    

    简单来说我们定义了一个名为 namespace-b 的 Service,它指向了要转发到的 Namespace B 中的应用程序 Pod。创建了一个名为 namespace-a 的 ExternalName Service,它会转发请求到 namespace-b.namespace.svc.cluster.local 这个 Service,该 Service 在 Namespace B 中定义我们在 Namespace A 中定义了一个 Ingress,它将来自 example.com 域名的请求转发到 namespace-a Service 上,进而实现了 Namespace 间的转发。

    2023-05-22 23:51:06
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    您好,阿里云负载均衡ALB只能在同一VPC内进行转发,不能跨越不同的namespace或VPC,因此您需要在同一VPC中绑定ALB和后端服务器。如果您需要使用不同的namespace,可以考虑使用Kubernetes Service来进行转发。具体操作可以参考阿里云Kubernetes文档中的Service部分。

    2023-05-22 23:37:17
    赞同 展开评论 打赏
  • CSDN全栈领域优质创作者,万粉博主;InfoQ签约博主;华为云享专家;华为Iot专家;亚马逊人工智能自动驾驶(大众组)吉尼斯世界纪录获得者

    您可以通过修改ALB的路由配置来实现将请求转发到NAMESPACE B。以下是具体步骤:

    1. 登录阿里云控制台,进入ECS实例列表,找到需要设置路由的ECS实例,点击实例名称进入详情页。

    2. 在实例详情页中,选择“网络与安全”菜单下的“高级设置”。

    3. 在高级设置页面中,找到“路由表”选项卡,点击“添加路由”按钮。

    4. 在添加路由页面中,输入目标路由的名称和目标ECS实例的ID或ECS实例名称,并选择目标ECS实例所在的命名空间(NAMESPACE B)。

    5. 点击“确定”按钮完成路由的添加。

    6. 如果您需要删除已有的路由,可以在路由表页面中选中要删除的路由,点击“删除”按钮进行删除操作。

    完成以上步骤后,您的ALB就会将来自NAMESPACE A的请求转发到NAMESPACE B中的指定ECS实例上。请注意,在进行路由配置时,请确保目标ECS实例已经部署了您需要的服务,并且网络连接正常。

    2023-05-22 16:39:02
    赞同 展开评论 打赏
  • 可以通过在容器服务 Kubernetes 集群中创建 Service 实现在不同 Namespace 中进行服务之间的通信。

    以下是将 ALB 转发请求到 Namespace B 的大致步骤:

    1. 在 Namespace B 创建一个 Service,选择需要被转发的服务,并为它分配一个固定的 Cluster IP。比如:
    apiVersion: v1
    kind: Service
    metadata:
      name: backend-service
      namespace: namespaceB
    spec:
      selector:
        app: backend
      ports:
        - name: http
          port: 80
          targetPort: 80
    
    1. 在 Namespace A 创建一个 Service,将它的 type 设置为 ExternalName,然后指定外部 Service 的名称和 Namespace。比如:
    apiVersion: v1
    kind: Service
    metadata:
      name: external-backend-service
      namespace: namespaceA
    spec:
      type: ExternalName
      externalName: backend-service.namespaceB.svc.cluster.local
      ports:
        - name: http
          port: 80
          targetPort: 80
    
    1. 配置 ALB 规则,将请求转发到 Namespace A 的 Service 上,具体的配置方式和步骤可以参考阿里云的官方文档。

    以上是大致的步骤,实际操作中可能还需要注意一些细节,比如 Service 的命名规则和 IP 地址的选择等等。

    2023-05-22 16:39:00
    赞同 展开评论 打赏
问答分类:
问答标签:
相关产品:

阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。

相关产品

  • 负载均衡
  • 热门讨论

    热门文章

    相关电子书

    更多
    《应用型负载均衡ALB产品解读》 立即下载
    阿里云网络-SLB负载均衡产品介绍 立即下载
    负载均衡SLB热点问题解答 立即下载