2

我必须手动在 MS Azure 中创建一个 Kubernetes 集群,而不是使用 AKS。所以:

  1. 我在一个可用性集中创建了 2 个 VM:一个用于 k8s 主节点,第二个用于 k8s 节点。
  2. 我创建了外部负载均衡器并将 2 个虚拟机添加到后端池。
  3. 我已经使用 kubespray 创建了 k8s 集群。
  4. 我创建了部署和负载平衡器服务:

    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 服务 External-IP 始终处于挂起状态:

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

此外,telnet azure_loadbalancer_public_ip 不起作用。我尝试使用 NodePort 而不是 LoadBalancer,但在这种情况下,我在 k8s 主节点和 k8s 节点上有两个端点用于我的服务。

我想要的是一个入口点:azure_loadbalancer_public_ip,即平衡集群中所有节点之间的流量。

您能否帮我理解我做错了什么,是否可以在 Kubernetes 中将 Azure 外部负载均衡器与 LoadBalancer 服务“绑定”?

4

2 回答 2

0

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

  1. 将此选项添加--cloud-provider=azure到您的kube-apiserver,kube-controller-manager以及您节点上的所有kubelets运行中。
  2. 确保您的 Azure VM 有权访问 Azure API
  3. 从 1 重新启动所有组件。

如果您在撰写本文时安装了 K8s 1.12 中的测试版Cloud Controller Manager ,则不需要这样做。请注意,该--cloud-provider选项将在某些时候被弃用,以支持这一点。

于 2018-10-16T21:49:31.880 回答
0

您不必这样做,k8s(如果配置正确)会为您处理。您所要做的就是赋予它适当的权限,以便能够在 Azure 中创建负载均衡器。

于 2018-10-16T20:53:47.057 回答