From 32cd153791d938a94d93eb1843bcd3c0da16c0de Mon Sep 17 00:00:00 2001 From: Eunsoo Park Date: Tue, 6 Mar 2018 15:02:48 +0900 Subject: [PATCH] Make Neutron LBaaS Activation Timeout configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This changes _ACTIVATION_TIMEOUT of LBaaS driver from constant to configurable value in order to make it flexible to production environment. This commit also increases the timeout value in DevStack plugin to make sure Octavia has time to run Amphorae in the gate. Co-Authored-By: MichaƂ Dulko Change-Id: I895d3e5af71ccc7219be422b9ca9e9f8833bad8f Related-Bug: 1753653 Signed-off-by: Eunsoo Park --- devstack/lib/kuryr_kubernetes | 2 +- devstack/plugin.sh | 8 ++++++++ kuryr_kubernetes/config.py | 4 ++++ kuryr_kubernetes/controller/drivers/lbaasv2.py | 5 ++++- .../make-lbaas-timeout-configurable-8624ea32971c0cbe.yaml | 7 +++++++ 5 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/make-lbaas-timeout-configurable-8624ea32971c0cbe.yaml diff --git a/devstack/lib/kuryr_kubernetes b/devstack/lib/kuryr_kubernetes index 2dd1cb81d..582dec430 100644 --- a/devstack/lib/kuryr_kubernetes +++ b/devstack/lib/kuryr_kubernetes @@ -838,7 +838,7 @@ function create_load_balancer_listener { port="$3" lb="$4" - max_timeout=600 + max_timeout=1200 # Octavia needs the LB to be active for the listener wait_for_lb $lb $max_timeout diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 8ed60caed..17647d879 100644 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -332,6 +332,14 @@ function configure_neutron_defaults { fi iniset "$KURYR_CONFIG" neutron_defaults external_svc_net "$ext_svc_net_id" iniset "$KURYR_CONFIG" octavia_defaults member_mode "$KURYR_K8S_OCTAVIA_MEMBER_MODE" + if [[ "$use_octavia" == "True" ]]; then + # Octavia takes a very long time to start the LB in the gate. We need + # to tweak the timeout for the LB creation. Let's be generous and give + # it up to 20 minutes. + # FIXME(dulek): This might be removed when bug 1753653 is fixed and + # Kuryr restarts waiting for LB on timeouts. + iniset "$KURYR_CONFIG" neutron_defaults lbaas_activation_timeout 1200 + fi } function configure_k8s_pod_sg_rules { diff --git a/kuryr_kubernetes/config.py b/kuryr_kubernetes/config.py index fae5f814c..e60785955 100644 --- a/kuryr_kubernetes/config.py +++ b/kuryr_kubernetes/config.py @@ -177,6 +177,10 @@ neutron_defaults = [ cfg.IntOpt('network_device_mtu', help='Default MTU setting for network interface.', default=1500,), + cfg.IntOpt('lbaas_activation_timeout', + help=_("Time (in seconds) that kuryr controller waits for " + "neutron LBaaS to be activated"), + default=300), ] octavia_defaults = [ diff --git a/kuryr_kubernetes/controller/drivers/lbaasv2.py b/kuryr_kubernetes/controller/drivers/lbaasv2.py index e1fb99628..b4891e640 100644 --- a/kuryr_kubernetes/controller/drivers/lbaasv2.py +++ b/kuryr_kubernetes/controller/drivers/lbaasv2.py @@ -19,6 +19,7 @@ import time import requests from neutronclient.common import exceptions as n_exc +from oslo_config import cfg from oslo_log import log as logging from oslo_utils import excutils from oslo_utils import timeutils @@ -29,8 +30,10 @@ from kuryr_kubernetes.controller.drivers import base from kuryr_kubernetes import exceptions as k_exc from kuryr_kubernetes.objects import lbaas as obj_lbaas +CONF = cfg.CONF LOG = logging.getLogger(__name__) -_ACTIVATION_TIMEOUT = 300 + +_ACTIVATION_TIMEOUT = CONF.neutron_defaults.lbaas_activation_timeout _SUPPORTED_LISTENER_PROT = ('HTTP', 'HTTPS', 'TCP') diff --git a/releasenotes/notes/make-lbaas-timeout-configurable-8624ea32971c0cbe.yaml b/releasenotes/notes/make-lbaas-timeout-configurable-8624ea32971c0cbe.yaml new file mode 100644 index 000000000..ca2ef3bef --- /dev/null +++ b/releasenotes/notes/make-lbaas-timeout-configurable-8624ea32971c0cbe.yaml @@ -0,0 +1,7 @@ +--- +upgrade: + - | + As the openstack performance differs in production environments, + fixed timeout of LBaaS activation might create the kuryr-kubernetes error. + In order to adapt to the environment, a new option + ``[neutron_defaults]lbaas_activation_timeout`` was added.