Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure外部负载平衡器和Kubernetes群集_Azure_Kubernetes_Load Balancing_Azure Load Balancer - Fatal编程技术网

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

Azure外部负载平衡器和Kubernetes群集,azure,kubernetes,load-balancing,azure-load-balancer,Azure,Kubernetes,Load Balancing,Azure Load Balancer,我必须手动在MS Azure中创建Kubernetes群集,而不是使用AKS。因此: 我在一个可用性集中创建了两个虚拟机:一个用于k8s主机,另一个用于k8s节点 我已经创建了外部负载平衡器,并向后端池添加了2个VM 我用kubespray创建了k8s集群 我已创建部署和负载平衡器服务: apiVersion: apps/v1beta1 kind: Deployment metadata: name: wrapper spec: replicas: 2 template: m

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

  • 我在一个可用性集中创建了两个虚拟机:一个用于k8s主机,另一个用于k8s节点
  • 我已经创建了外部负载平衡器,并向后端池添加了2个VM
  • 我用kubespray创建了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
    
    apiVersion:apps/v1beta1 种类:部署 元数据: 名称:包装器 规格: 副本:2份 模板: 元数据: 标签: 应用程序:包装器 规格: 容器: -名称:包装器 图片:包装器:最新 端口: -集装箱港口:8080 名称:包装器 --- 版本:v1 种类:服务 元数据: 名称:包装器 规格: 负载均衡器IP: 类型:负载平衡器 端口: -端口:8080 选择器: 应用程序:包装器
  • 但LoadBalancer服务外部IP始终处于挂起状态:

    kubectl get services
    NAME         TYPE           CLUSTER-IP    EXTERNAL-IP
    wrapper      LoadBalancer   10.233.38.7   <pending>
    
    kubectl获取服务
    名称类型CLUSTER-IP EXTERNAL-IP
    包装机负载平衡器10.233.38.7
    
    此外,telnet azure_loadbalancer_public_ip不工作。我尝试使用NodePort而不是LoadBalancer,但在这种情况下,我的服务在k8s master和k8s node上有两个端点

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


    请您帮助我了解我做错了什么,是否可以将Azure外部负载平衡器与Kubernetes中的负载平衡器服务“绑定”起来

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

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

  • 添加此选项:
    --cloud provider=azure
    到您的
    kube-apiserver
    kube-controller-manager
    以及节点上运行的所有
    kubelets
  • 确保您的Azure VM可以访问Azure API
  • 从1重新启动所有组件

  • 如果您已经安装了K8s 1.12中的Beta版,则不需要这样做。请注意,
    --cloudprovider
    选项将在某个时候被弃用以支持此选项。

    服务外部IP始终处于挂起状态。此外,“kubectl描述服务包装器”未显示任何事件。