Kubernetes memory parameter 08/1008/4
authorBalint Varga <balint.varga@nokia.com>
Mon, 17 Jun 2019 10:41:46 +0000 (12:41 +0200)
committerBalint Varga <balint.varga@nokia.com>
Thu, 20 Jun 2019 12:47:48 +0000 (14:47 +0200)
Kubernetes memory overcommit parameters introduced

Signed-off-by: Balint Varga <balint.varga@nokia.com>
Change-Id: I46e0a30bac615634526d0095fa3063873ce77fa1

cmdatahandlers/src/cmdatahandlers/caas/config.py
cmdatahandlers/src/cmdatahandlers/hosts/config.py
cmframework/src/cmframework/utils/cmansibleinventory.py

index e897558..69b831d 100644 (file)
@@ -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
+
index e8bc78b..ac86d3b 100644 (file)
@@ -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])
+
+
index 13db5f2..8757426 100644 (file)
@@ -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())