Hi all,

I have recently been experimenting with Kubernetes in CloudStack and came
across a quite odd problem with the communication
between cloudstack-kubernetes-provider and the CloudStack API.

After some experimentation with the cloud-config api-url variable, it seems
that connection should be happening. I tried using wget from within
the pods with success.
However, whenever services try to sync the load balancer to CloudStack, the
error* Error syncing load balancer: failed to ensure load balancer: could
not find network *shows up.

Taking a look at the logs of *cloud-controller-manager*, the same three
rows come up repeatedly:

I0616 14:02:26.189085       1 event.go:278]
Event(v1.ObjectReference{Kind:"Service", Namespace:"default", Name:"balls",
UID:"f75f1f54-2c97-4417-946d-90a536087ad8", APIVersion:"v1",
ResourceVersion:"1776", FieldPath:""}): type: 'Normal' reason:
'EnsuringLoadBalancer' Ensuring load balancer

E0616 14:02:26.273801       1 controller.go:244] error processing service
default/balls (will retry): failed to ensure load balancer: could not find
network

I0616 14:02:26.274430       1 event.go:278]
Event(v1.ObjectReference{Kind:"Service", Namespace:"default", Name:"balls",
UID:"f75f1f54-2c97-4417-946d-90a536087ad8", APIVersion:"v1",
ResourceVersion:"1776", FieldPath:""}): type: 'Warning' reason:
'SyncLoadBalancerFailed' Error syncing load balancer: failed to ensure load
balancer: could not find network


When watching the logs of our management server, the request
*listNetworks *appears,
coming from the kubernetes IP. It does, however, include an empty *id
*parameter ,
which in turn returns the error:

{
    "listnetworksresponse": {
        "uuidList": [],
        "errorcode": 431,
        "cserrorcode": 9999,
        "errortext": "Unable to execute API command listnetworks due to
invalid value. Invalid parameter id value= due to incorrect long value
format, or entity does not exist or due to incorrect parameter annotation
for the field in api cmd class."
    }
}

The request: http://*domain*/client/api?apiKey=*key*&command=listNetworks&;
*id=*&response=json&signature=*signature*

Looking at the code of cloudstack-kubernetes-provider
(cloudstack_loadbalancer.go:417), it seems like the error should return
*... **could not find network [network ID]*, but in our case, no ID shows
up (it could be nil?).
It appears that cs.verifyHosts (cloudstack_loadbalancer.go:100) is failing
to update lb.networkID, which cascades into this error.

Seeing as it shows up even after creating different clusters, could this
still be a configuration issue, or is it a known bug in CKS?

Thanks in advance,
Pierre Le Fevre

Reply via email to