kuryr-kubernetes not support udp services

Bug #1736060 reported by changhongli
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
kuryr-kubernetes
Fix Released
Medium
Yossi Boaron

Bug Description

when kubernetes service's protocol is UDP, kuryr-kubernetes cause exception,
Neutron lbaas not support udp

======env==============
openstack version: ocata
kubernetes: v1.7.9
======service.yaml========
apiVersion: v1
kind: Service
metadata:
  name: test
  labels:
    name: test
spec:
  ports:
  - name: port1
    protocol: UDP
    port: 8080
    targetPort: 80
  - name: port2
    protocol: TCP
    port: 80
    targetPort: 80
  selector:
    name: test

========ERROR log===========
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging [-] Failed to handle event {u'object': {u'kind': u'Endpoints', u'subsets': [{u'addresses': [{u'ip': u'10.6.0.4', u'targetRef': {u'kind': u'Pod', u'resourceVersion': u'35931', u'namespace': u'default', u
'name': u'test-4027621023-d21hn', u'uid': u'613554c3-d67c-11e7-a2fb-fa163ee180e7'}, u'nodeName': u'i-9auvqf6c'}], u'ports': [{u'protocol': u'TCP', u'name': u'port2', u'port': 80}, {u'protocol': u'UDP', u'name': u'port1', u'port': 80}]}], u'apiVersion': u'v1', u'metadata':
 {u'name': u'test', u'labels': {u'name': u'test'}, u'namespace': u'default', u'resourceVersion': u'295579', u'creationTimestamp': u'2017-12-04T03:17:34Z', u'annotations': {u'openstack.org/kuryr-lbaas-spec': u'{"versioned_object.data": {"ip": "10.5.223.33", "lb_ip": null,
"ports": [{"versioned_object.data": {"name": "port1", "port": 8080, "protocol": "UDP"}, "versioned_object.name": "LBaaSPortSpec", "versioned_object.namespace": "kuryr_kubernetes", "versioned_object.version": "1.0"}, {"versioned_object.data": {"name": "port2", "port": 80,
"protocol": "TCP"}, "versioned_object.name": "LBaaSPortSpec", "versioned_object.namespace": "kuryr_kubernetes", "versioned_object.version": "1.0"}], "project_id": "22979ed2ab6d4db183b844409ad91ff3", "security_groups_ids": ["60e94451-0a4e-42f0-9dd6-0ff27103897d"], "subnet_id": "c7323520-45dd-45e7-97b5-69585cf29d2c", "type": "ClusterIP"}, "versioned_object.name": "LBaaSServiceSpec", "versioned_object.namespace": "kuryr_kubernetes", "versioned_object.version": "1.0"}'}, u'selfLink': u'/api/v1/namespaces/default/endpoints/test', u'uid': u'ac18152a-d8a1-11e7-a2fb-fa163ee180e7'}}, u'type': u'MODIFIED'}: BadRequest: Invalid input for protocol. Reason: UDP is not in valid_values.
Neutron server returns request_ids: ['req-d593b3fb-adba-402b-a7e4-05f347d31212']
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging Traceback (most recent call last):
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/handlers/logging.py", line 37, in __call__
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging self._handler(event)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/handlers/retry.py", line 61, in __call__
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging self._handler(event)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/handlers/k8s_base.py", line 60, in __call__
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging self.on_present(obj)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/handlers/lbaas.py", line 236, in on_present
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging if self._sync_lbaas_members(endpoints, lbaas_state, lbaas_spec):
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/handlers/lbaas.py", line 284, in _sync_lbaas_members
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging if self._sync_lbaas_pools(endpoints, lbaas_state, lbaas_spec):
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/handlers/lbaas.py", line 384, in _sync_lbaas_pools
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging if self._sync_lbaas_listeners(endpoints, lbaas_state, lbaas_spec):
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/handlers/lbaas.py", line 432, in _sync_lbaas_listeners
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging if self._add_new_listeners(endpoints, lbaas_spec, lbaas_state):
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/handlers/lbaas.py", line 451, in _add_new_listeners
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging port=port)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/drivers/lbaasv2.py", line 70, in ensure_listener
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging self._find_listener)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/drivers/lbaasv2.py", line 287, in _ensure_provisioned
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging result = self._ensure(obj, create, find)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/drivers/lbaasv2.py", line 275, in _ensure
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging result = create(obj)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/root/kuryr-kubernetes/kuryr_kubernetes/controller/drivers/lbaasv2.py", line 166, in _create_listener
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging 'protocol_port': listener.port}})
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/opt/kuryr/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 1144, in create_listener
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging return self.post(self.lbaas_listeners_path, body=body)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/opt/kuryr/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 357, in post
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging headers=headers, params=params)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/opt/kuryr/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 292, in do_request
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging self._handle_fault_response(status_code, replybody, resp)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/opt/kuryr/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 268, in _handle_fault_response
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging exception_handler_v20(status_code, error_body)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging File "/opt/kuryr/local/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 92, in exception_handler_v20
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging request_ids=request_ids)
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging BadRequest: Invalid input for protocol. Reason: UDP is not in valid_values.
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging Neutron server returns request_ids: ['req-d593b3fb-adba-402b-a7e4-05f347d31212']
2017-12-04 11:17:37.637 31836 ERROR kuryr_kubernetes.handlers.logging

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kuryr-kubernetes (master)

Fix proposed to branch: master
Review: https://review.openstack.org/525040

Changed in kuryr-kubernetes:
assignee: nobody → changhongli (hongli.chang)
status: New → In Progress
Changed in kuryr-kubernetes:
importance: Undecided → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on kuryr-kubernetes (master)

Change abandoned by changhongli (<email address hidden>) on branch: master
Review: https://review.openstack.org/525040

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kuryr-kubernetes (master)

Fix proposed to branch: master
Review: https://review.openstack.org/549739

Changed in kuryr-kubernetes:
assignee: changhongli (hongli.chang) → Yossi Boaron (yossi-boaron-1234)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kuryr-kubernetes (master)

Reviewed: https://review.openstack.org/549739
Committed: https://git.openstack.org/cgit/openstack/kuryr-kubernetes/commit/?id=d5e5d1537bc911a893f068d094f057c45444fc40
Submitter: Zuul
Branch: master

commit d5e5d1537bc911a893f068d094f057c45444fc40
Author: Yossi Boaron <email address hidden>
Date: Sun Mar 4 22:53:39 2018 +0200

    Services: Gracefully ignore exposed UDP ports

    Since LBaaSv2 doesn't support UDP load balancing,
    Kuryr should ignore exposed UDP ports in K8S service.
    This patch updates Kuryr to gracefully ignore UDP exposed
    ports and updates the documentation with this info.

    Closes-Bug: 1736060

    Change-Id: I03f6d95a2d855cbd8954018c930e283a46763655

Changed in kuryr-kubernetes:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to kuryr-kubernetes (stable/queens)

Fix proposed to branch: stable/queens
Review: https://review.openstack.org/553205

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to kuryr-kubernetes (stable/queens)

Reviewed: https://review.openstack.org/553205
Committed: https://git.openstack.org/cgit/openstack/kuryr-kubernetes/commit/?id=29821a63ea17887400c48894087d5d0bd3f7190c
Submitter: Zuul
Branch: stable/queens

commit 29821a63ea17887400c48894087d5d0bd3f7190c
Author: Yossi Boaron <email address hidden>
Date: Sun Mar 4 22:53:39 2018 +0200

    Services: Gracefully ignore exposed UDP ports

    Since LBaaSv2 doesn't support UDP load balancing,
    Kuryr should ignore exposed UDP ports in K8S service.
    This patch updates Kuryr to gracefully ignore UDP exposed
    ports and updates the documentation with this info.

    Closes-Bug: 1736060

    Change-Id: I03f6d95a2d855cbd8954018c930e283a46763655
    (cherry picked from commit d5e5d1537bc911a893f068d094f057c45444fc40)

tags: added: in-stable-queens
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kuryr-kubernetes 0.4.2

This issue was fixed in the openstack/kuryr-kubernetes 0.4.2 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/kuryr-kubernetes 0.5.0

This issue was fixed in the openstack/kuryr-kubernetes 0.5.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.