From 1cee7459fe5ae0703e4f5460d8bce15b5dc26e67 Mon Sep 17 00:00:00 2001 From: Maysa Macedo Date: Mon, 21 Sep 2020 11:33:31 +0000 Subject: [PATCH] Skip KuryrLoadbalancer creation for Headless Service Headless Service are not wired by Kuryr as it returns directly the Pod's IPs behind the Service and do not load-balance between them. This commit makes sure a klb CR is not created for headless services as a LB won't get created for it. Change-Id: Ib389ddd5edca44c713149adc13486ab0b08007d2 --- kuryr_kubernetes/constants.py | 2 ++ kuryr_kubernetes/controller/handlers/lbaas.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kuryr_kubernetes/constants.py b/kuryr_kubernetes/constants.py index 3a1732530..90b515c2c 100644 --- a/kuryr_kubernetes/constants.py +++ b/kuryr_kubernetes/constants.py @@ -69,6 +69,8 @@ K8S_ANNOTATION_OLD_DRIVER = 'old_driver' K8S_ANNOTATION_CURRENT_DRIVER = 'current_driver' K8S_ANNOTATION_NEUTRON_PORT = 'neutron_id' +K8S_ANNOTATION_HEADLESS_SERVICE = 'service.kubernetes.io/headless' + POD_FINALIZER = KURYR_FQDN + '/pod-finalizer' KURYRNETWORK_FINALIZER = 'kuryrnetwork.finalizers.kuryr.openstack.org' KURYRLB_FINALIZER = 'kuryr.openstack.org/kuryrloadbalancer-finalizers' diff --git a/kuryr_kubernetes/controller/handlers/lbaas.py b/kuryr_kubernetes/controller/handlers/lbaas.py index 45f6dd62d..5e6a6a2e5 100644 --- a/kuryr_kubernetes/controller/handlers/lbaas.py +++ b/kuryr_kubernetes/controller/handlers/lbaas.py @@ -270,7 +270,9 @@ class EndpointsHandler(k8s_base.ResourceEventHandler): k8s = clients.get_kubernetes_client() loadbalancer_crd = k8s.get_loadbalancer_crd(endpoints) - if not self._has_pods(endpoints): + if (not self._has_pods(endpoints) or + k_const.K8S_ANNOTATION_HEADLESS_SERVICE + in endpoints['metadata'].get('labels', [])): LOG.debug("Ignoring Kubernetes endpoints %s", endpoints['metadata']['name']) return