K8s fails to assign floating ip to loadbalancer with octavia

4/3/2019

I have

  • an openstack, it is Queens, it has octavia for lbaas

  • a small (test) k8s cluster on top of it (3 nodes, 1 master), version 9.1.2

  • a deployment called hello which serves a simple webpage saying 'hello world', it works when accessed from within the cluster

I want to expose my deployment as a load balanced service with a floating IP.

I did kubectl expose deployment hello --type=LoadBalancer --name=my-service

It says (kubectl describe service my-service)

Error creating load balancer (will retry): failed to ensure load balancer for service default/my-service: error getting floating ip for port 9cc6442b-2b2f-4b6a-8f91-65dbc2ff13d0: Resource not found

If I manually do: openstack floating ip --port 9cc6442b-2b2f-4b6a-8f91-65dbc2ff13d0 356c8ffa-7bc2-43a9-a8d3-29147ae01727 where:

| ID                                   | Floating IP Address | Port                                 | Floating Network                     |
| 356c8ffa-7bc2-43a9-a8d3-29147ae01727 | 172.27.81.241       | None                                 | eb31cc74-96ba-4394-aef4-0e94bec46d85 |

and /etc/kubernetes/cloud_config has:

[LoadBalancer]
subnet-id=6a6cdc35-8dda-4982-850e-53c6ee5a5085
floating-network-id=eb31cc74-96ba-4394-aef4-0e94bec46d85
use-octavia=True

(so it is looking for floating IPs on the correct network, and that subnet is the k8s internal subnet)

It all works.

So everything except "associate an IP" has worked. Why does this step fail? Where has k8s logged what it did and how it failed? I can only find docs for pod level logging (and my pod is fine, and serving it's test webpage just great).

(I have lots of quota remaining for 'make more floating ips', and several unused ones hanging around)

-- Helen
kubernetes
openstack

1 Answer

5/27/2019

I was able to find this No Ports Available when trying to associate a floating IP and this Failed to Associate Floating IP. Maybe those will point you into right direction.

I would recommend that you check this page OpenStack community and look for more answers as I'm not an expert in OpenStack.

As for your question

Where has k8s logged what it did and how it failed?

You can use kubectl describe service <service_name>

Show details of a specific resource or group of resources

Print a detailed description of the selected resources, including related resources such as events or controllers. You may select a single object by name, all objects of that type, provide a name prefix, or label selector. For example:

$ kubectl describe TYPE NAME_PREFIX

For mode debug description please check Debug Services.

-- Crou
Source: StackOverflow