如何通过Client-go设置kubernetes负载均衡器服务的EXTERNAL-IP?

时间:2019-11-29 10:48:55

标签: kubernetes client-go

我想通过client-go定制一个负载均衡器控制器,现在我只是尝试为该服务设置一个地址,但是它不起作用。 这是我的代码:

func (c *Controller) syncToStdout(key string) error {
    obj, exists, err := c.indexer.GetByKey(key)
    if err != nil {
        klog.Errorf("Fetching object with key %s from store failed with %v", key, err)
        return err
    }

    if !exists {
        fmt.Printf("Pod %s does not exist anymore%s\n", key)
    } else {
        service := obj.(*v1.Service)
        if service.ObjectMeta.Annotations["service.beta.kubernetes.io/netease-cloud"] == "nlb" {
            klog.Info("service belong to NLB, name = ", service.GetName())
            // [0].IP = "10.123.234.213";
            service.Status.LoadBalancer.Ingress = []v1.LoadBalancerIngress{{IP: "10.123.234.213"}}
            _, _ = clientset.CoreV1().Services(v1.NamespaceDefault).Update(service)
            klog.Info("service belong to NLB, service = ", service)
        } else {
            klog.Info("service not belong to NLB, name = ", service.GetName())
        }
    }
    return nil
}

然后我得到了服务配置,未设置IP。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/netease-cloud: nlb
  creationTimestamp: "2019-11-29T07:39:41Z"
  name: httpd-service
  namespace: default
  resourceVersion: "480971"
  selfLink: /api/v1/namespaces/default/services/httpd-service
  uid: 3000dddd-3d56-4989-af41-6d6a9bab7565
spec:
  clusterIP: 10.108.100.92
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30000
    port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    app: httpd
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

如何为LoadBalancer服务设置IP?

1 个答案:

答案 0 :(得分:1)

使用-fuzz 5可以解决它。