From 3cb6b540af283dac09b21c64d19d8f65527ff9ac Mon Sep 17 00:00:00 2001 From: Balint Varga Date: Mon, 17 Jun 2019 12:41:46 +0200 Subject: [PATCH] Kubernetes memory parameter Kubernetes memory overcommit parameters introduced Signed-off-by: Balint Varga Change-Id: I46e0a30bac615634526d0095fa3063873ce77fa1 --- cmdatahandlers/src/cmdatahandlers/caas/config.py | 17 +++++++++++++++ cmdatahandlers/src/cmdatahandlers/hosts/config.py | 25 ++++++++++++++++++++++ .../src/cmframework/utils/cmansibleinventory.py | 5 +++++ 3 files changed, 47 insertions(+) diff --git a/cmdatahandlers/src/cmdatahandlers/caas/config.py b/cmdatahandlers/src/cmdatahandlers/caas/config.py index e897558..69b831d 100644 --- a/cmdatahandlers/src/cmdatahandlers/caas/config.py +++ b/cmdatahandlers/src/cmdatahandlers/caas/config.py @@ -22,6 +22,10 @@ import jinja2 CAAS_CONFIG_FILE_PATH = "/etc/cmframework/config/" CAAS_CONFIG_FILE = "caas.yaml" DEFAULT_CAAS_DNS_DOMAIN = "rec.io" +VNF_EMBEDDED_SOFT_EVICTION_TRESHOLD = "300Mi" +BM_SOFT_EVICTION_TRESHOLD = "4Gi" +VNF_EMBEDDED_HARD_EVICTION_TRESHOLD = "200Mi" +BM_HARD_EVICTION_TRESHOLD = "2Gi" class Config(config.Config): @@ -158,3 +162,16 @@ class Config(config.Config): def get_kubernetes_domain(self): return 'kubernetes.default.svc.{}'.format( self.config.get(self.ROOT, {}).get('dns_domain', '')) + + def get_caas_soft_eviction_threshold(self): + if self.is_vnf_embedded_deployment(): + return VNF_EMBEDDED_SOFT_EVICTION_TRESHOLD + else: + return BM_SOFT_EVICTION_TRESHOLD + + def get_caas_hard_eviction_threshold(self): + if self.is_vnf_embedded_deployment(): + return VNF_EMBEDDED_HARD_EVICTION_TRESHOLD + else: + return BM_HARD_EVICTION_TRESHOLD + diff --git a/cmdatahandlers/src/cmdatahandlers/hosts/config.py b/cmdatahandlers/src/cmdatahandlers/hosts/config.py index e8bc78b..ac86d3b 100644 --- a/cmdatahandlers/src/cmdatahandlers/hosts/config.py +++ b/cmdatahandlers/src/cmdatahandlers/hosts/config.py @@ -19,6 +19,10 @@ from cmdatahandlers.api import config from cmdatahandlers.api import utils from serviceprofiles import profiles +VNF_EMBEDDED_RESERVED_MEMORY = "512Mi" +DUAL_VIM_CONTROLLER_RESERVED_MEMORY = "64Gi" +DUAL_VIM_DEFAULT_RESERVED_MEMORY = "32Gi" +MIDDLEWARE_RESERVED_MEMORY = "12Gi" class Config(config.Config): def __init__(self, confman): @@ -808,8 +812,29 @@ class Config(config.Config): osd_disks = filter(lambda disk: disk.get('osd_disk', False), caas_disks) return map(lambda disk: _get_path_for_virtio_id(disk), osd_disks) + def get_system_reserved_memory(self, hostname): + caasconf = self.confman.get_caas_config_handler() + if caasconf.is_vnf_embedded_deployment(): + return VNF_EMBEDDED_RESERVED_MEMORY + + profiles = self.get_service_profiles(hostname) + if 'controller' in profiles: + return DUAL_VIM_CONTROLLER_RESERVED_MEMORY + if 'compute' in profiles: + return DUAL_VIM_DEFAULT_RESERVED_MEMORY + + return self.config.get(self.ROOT, {}).get('middleware_reserved_memory', + MIDDLEWARE_RESERVED_MEMORY) + + def set_default_reserved_memory_to_all_hosts(self, def_memory): + self.get_hosts() + for host in hosts: + self.config[self.ROOT][host]['middleware_reserved_memory'] = def_memory + def _get_path_for_virtio_id(disk): disk_id = disk.get('id', '') if disk_id: return "/dev/disk/by-id/virtio-{}".format(disk_id[:20]) + + diff --git a/cmframework/src/cmframework/utils/cmansibleinventory.py b/cmframework/src/cmframework/utils/cmansibleinventory.py index 13db5f2..8757426 100644 --- a/cmframework/src/cmframework/utils/cmansibleinventory.py +++ b/cmframework/src/cmframework/utils/cmansibleinventory.py @@ -91,6 +91,11 @@ class AnsibleInventory(object): ips.append(hostvars[node]['ansible_host']) hostvars[node]['ssl_alt_name']['ip'] = ips + caasconf = self.confman.get_caas_config_handler() + hostvars[node]['system_reserved_memory'] = hostsconf.get_system_reserved_memory(node) + hostvars[node]['caas_soft_eviction_threshold'] = caasconf.get_caas_soft_eviction_threshold() + hostvars[node]['caas_hard_eviction_threshold'] = caasconf.get_caas_hard_eviction_threshold() + def set_caas_master_data(self, hostvars, node, caasconf, hostsconf): dns = hostvars[node]['ssl_alt_name']['dns'] dns.append(caasconf.get_kubernetes_domain()) -- 2.16.6