当前位置: 首页 > 知识库问答 >
问题:

Azure外部负载平衡器和Kubernetes群集

廖诚
2023-03-14

我必须手动在MS Azure中创建Kubernetes群集,而不是使用AKS。因此:

>

  • 我在一个可用性集中创建了2个VM:一个用于k8s master,第二个用于k8s节点。
  • 我创建了外部负载均衡器并将2个VM添加到后端池。
  • 我使用kubes祈祷创建了k8s集群。
  • 我创建了部署和负载均衡器服务:

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: wrapper
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            app: wrapper
        spec:
          containers:
          - name: wrapper
            image: wrapper:latest
            ports:
            - containerPort: 8080
              name: wrapper
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: wrapper
    spec:
      loadBalancerIP: <azure_loadbalancer_public_ip>
      type: LoadBalancer
      ports:
      - port: 8080
      selector:
        app: wrapper
    

    但LoadBalancer服务外部IP始终处于挂起状态:

    kubectl get services
    NAME         TYPE           CLUSTER-IP    EXTERNAL-IP
    wrapper      LoadBalancer   10.233.38.7   <pending>
    

    此外,telnet azure\u loadbalancer\u public\u ip无法工作。我尝试使用NodePort而不是LoadBalancer,但在这种情况下,我的服务在k8s主节点和k8s节点上有两个endpoint。

    我想要的是一个入口点:azure\u loadbalancer\u public\u ip,即平衡群集中所有节点之间的流量。

    请帮我了解我做错了什么,是否可以将Azure外部负载均衡器与库伯内特斯中的负载均衡器服务“绑定”?


  • 共有2个答案

    尚景焕
    2023-03-14

    它基本上无法与Azure API对话来创建负载平衡器。您基本上需要:

    1. 将此选项添加到您的kube apiserver、kube控制器管理器以及节点上运行的所有kubelets
    2. 确保您的Azure VM可以访问Azure API
    3. 从1重新启动所有组件

    如果您在撰写本文时安装了K8s 1.12中的Beta版本的Cloud Controller Manager,则不需要此功能。请注意,--cloud d-提供者选项将在某个时候被弃用,以支持此功能。

    郎河
    2023-03-14

    您不必这样做,k8s(在正确配置的情况下)会为您处理这些。您所要做的就是赋予它在Azure中创建负载平衡器的适当权限。

     类似资料:
    • 我安装了一个kubernetes集群。我想为我的一个微服务使用外部数据库(在我的集群之外),但这个外部数据库被设置为集群,没有自己的负载均衡器。 有没有办法创建一个内部负载平衡器服务,让kubernetes始终将微服务定向到正在运行的实例? 我看到您可以设置loadbalancer类型的服务,我如何使用它?我尝试创建它,但我看到loadbalancer服务是用NodePort创建的。它可以在没有节

    • 我正在DigitalOcean上使用CoreOs和库伯内特斯构建一个容器集群,我已经看到,为了向世界公开Pod,您必须使用Type: LoadBalancer创建一个服务。我认为这是最佳解决方案,因此您不需要在nginx或haagent等kubernetes之外添加外部负载均衡器。我想知道是否可以使用DO的浮动IP创建它。

    • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

    • 我已经在AKS上部署了我的kubernetes应用程序,它使用内部负载均衡器,而没有单独的入口控制器。 目前该服务可以使用超文本传输协议访问,我想保护该服务。如何启用https以及应在何处安装证书?

    • 作为开发人员,我们在Azure Service Fabric上编写了微服务,我们可以在Azure中以某种PaaS概念为许多客户运行它们。但我们的一些客户不想在云中运行,因为数据库是内部的,不能从外部获得,甚至不能通过DMZ获得。没关系,我们promise支持它,因为Azure Service Fabric可以作为集群安装在现场。 我建议在一台(或多台)独立的机器上使用负载平衡器,如HA-Proxy

    • 在Kubernetes中创建负载平衡器类型的服务时,它是创建一个全新的外部负载平衡器,还是只为负载平衡器类型的第一个服务创建一个负载平衡器,并将该负载平衡器重新用于负载平衡器类型的所有后续服务? 这个问题特别重要,因为为每个服务构建一个单独的负载平衡器对我来说成本太高。 如果它特定于云提供商,我使用Azure,但我很想知道其他云提供商是否不同。