Octavia load balancers fail to load balance services
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
kuryr-kubernetes |
Fix Released
|
Critical
|
Antoni Segura Puimedon |
Bug Description
How to reproduce:
This is the local.conf I used for devstack:
http://
After it finishes stacking:
1. kubectl run --image=
2. kubectl scale deploy kuryr-demo --replicas=2
3. kubectl expose deploy/kuryr-demo --port 80 --target-port 8080
4. kubectl get svc kuryr-demo
Now that you have the IP of the svc, let's say 10.0.0.174,
5. kubectl exec into a pod and curl 10.0.0.174
Expected behavior:
A message like "kuryr-
Actual behavior:
Request times out.
Possible causes:
The pod ports' project is 'k8s', which is the same as the VIP port project:
[centos@octavia ~]$ openstack port list --project k8s
+------
| ID | Name | MAC Address | Fixed IP Addresses | Status |
+------
| 1e70d516-
| 49dde037-
| 90d615e3-
| c3295f7c-
| e43f7b17-
+------
But the actual port in the k8s service subnet is in the admin project:
| bd93494b-
This is not necessarily a problem, but it means that the 'default' security group assigned to bd93494b-
Another issue is that after forcing the bd93494b-
root@amphora-
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C11:18:40.238776 IP (tos 0x0, ttl 63, id 17321, offset 0, flags [DF], proto TCP (6), length 60)
10.0.0.70.37368 > 10.0.0.174.http: Flags [S], cksum 0xe48b (correct), seq 2387754236, win 28200, options [mss 1410,sackOK,TS val 60718933 ecr 0,nop,wscale 7], length 0
11:18:41.241038 IP (tos 0x0, ttl 63, id 17322, offset 0, flags [DF], proto TCP (6), length 60)
10.0.0.70.37368 > 10.0.0.174.http: Flags [S], cksum 0x1522 (incorrect -> 0xe0a0), seq 2387754236, win 28200, options [mss 1410,sackOK,TS val 60719936 ecr 0,nop,wscale 7], length 0
11:18:43.245746 IP (tos 0x0, ttl 63, id 17323, offset 0, flags [DF], proto TCP (6), length 60)
10.0.0.70.37368 > 10.0.0.174.http: Flags [S], cksum 0x1522 (incorrect -> 0xd8cc), seq 2387754236, win 28200, options [mss 1410,sackOK,TS val 60721940 ecr 0,nop,wscale 7], length 0
11:18:47.257054 IP (tos 0x0, ttl 63, id 17324, offset 0, flags [DF], proto TCP (6), length 60)
10.0.0.70.37368 > 10.0.0.174.http: Flags [S], cksum 0x1522 (incorrect -> 0xc920), seq 2387754236, win 28200, options [mss 1410,sackOK,TS val 60725952 ecr 0,nop,wscale 7], length 0
11:18:52.265293 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.0.174 tell 10.0.0.190, length 28
11:18:52.265460 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.0.0.174 is-at fa:16:3e:5c:44:dc (oui Unknown), length 28
11:18:55.273469 IP (tos 0x0, ttl 63, id 17325, offset 0, flags [DF], proto TCP (6), length 60)
10.0.0.70.37368 > 10.0.0.174.http: Flags [S], cksum 0x1522 (incorrect -> 0xa9d0), seq 2387754236, win 28200, options [mss 1410,sackOK,TS val 60733968 ecr 0,nop,wscale 7], length 0
Changed in kuryr-kubernetes: | |
importance: | Undecided → Critical |
status: | New → Triaged |
assignee: | nobody → Antoni Segura Puimedon (celebdor) |
Changed in kuryr-kubernetes: | |
milestone: | none → pike-3 |
Changed in kuryr-kubernetes: | |
status: | Triaged → In Progress |
If we specify the k8s-service-subnet in the member creation, then octavia does not create and attach a port to the pod subnet per each load balancer, so we spend less addresses. This approach, of course, relies on the service subnet and the pod subnet being routable.