Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions python-clusters/create-aks-cluster/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from dku_kube.nvidia_utils import add_gpu_driver_if_needed
from dku_azure.auth import get_credentials_from_connection_info, get_credentials_from_connection_infoV2
from dku_azure.clusters import ClusterBuilder
from dku_azure.utils import run_and_process_cloud_error, get_instance_metadata, get_subscription_id
from dku_azure.utils import run_and_process_cloud_error, get_instance_metadata, get_subscription_id, determine_node_pool_mode

class MyCluster(Cluster):
def __init__(self, cluster_id, cluster_name, config, plugin_config):
Expand Down Expand Up @@ -306,6 +306,7 @@ def start(self):
# Node pools
install_gpu_driver = False
gpu_node_pools_taints = set()
is_there_system_node_pool = False
for idx, node_pool_conf in enumerate(self.config.get("nodePools", [])):
node_pool_builder = cluster_builder.get_node_pool_builder()
node_pool_builder.with_idx(idx)
Expand All @@ -328,7 +329,11 @@ def start(self):
min_num_nodes=node_pool_conf.get("minNumNodes", None),
max_num_nodes=node_pool_conf.get("maxNumNodes", None))

node_pool_builder.with_mode(mode=node_pool_conf.get("mode", "Automatic"),
input_node_pool_mode = node_pool_conf.get("mode", "Automatic")
applied_node_pool_mode = determine_node_pool_mode(node_pool_conf.get("mode", "Automatic"), is_there_system_node_pool)
if applied_node_pool_mode == "System":
is_there_system_node_pool = True
node_pool_builder.with_mode(mode=applied_node_pool_mode,
system_pods_only=node_pool_conf.get("systemPodsOnly", True))

node_pool_builder.with_disk_size_gb(disk_size_gb=node_pool_conf.get("osDiskSizeGb", 0))
Expand Down
5 changes: 1 addition & 4 deletions python-lib/dku_azure/clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,10 +303,7 @@ def with_availability_zones(self, use_availability_zones):

def build(self):
agent_pool_profile_params = {}
if self.mode == "Automatic" and self.idx == 0:
agent_pool_profile_params["mode"] = "System"
else:
agent_pool_profile_params["mode"] = self.mode
agent_pool_profile_params["mode"] = self.mode
agent_pool_profile_params["name"] = "nodepool{}".format(self.idx)
agent_pool_profile_params["type"] = self.agent_pool_type
agent_pool_profile_params["vm_size"] = self.vm_size
Expand Down
8 changes: 8 additions & 0 deletions python-lib/dku_azure/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,11 @@ def get_host_network(credentials=None, resource_group=None, connection_info=None
logging.info("VNET: {}".format(vnet))
logging.info("SUBNET ID: {}".format(subnet_id))
return vnet, subnet_id

def determine_node_pool_mode(input_node_pool_mode, is_existing_system_node_pool):
if input_node_pool_mode != "Automatic":
return input_node_pool_mode
if is_existing_system_node_pool:
return "User"
else:
return "System"
7 changes: 6 additions & 1 deletion python-runnables/add-node-pool/runnable.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,12 @@ def run(self, progress_callback):
min_num_nodes=node_pool_config.get("minNumNodes", None),
max_num_nodes=node_pool_config.get("maxNumNodes", None))

node_pool_builder.with_mode(mode=node_pool_config.get("mode", "Automatic"),
input_node_pool_mode = node_pool_config.get("mode", "Automatic")
# The cluster cannot be created without a System node pool (error raised),
# deleting the last System node pool is not possible (error raised),
# so adding an Automatic node pool will always result in adding a User node pool
applied_node_pool_mode = "User" if input_node_pool_mode == "Automatic" else input_node_pool_mode
node_pool_builder.with_mode(mode=applied_node_pool_mode,
system_pods_only=node_pool_config.get("systemPodsOnly", True))

node_pool_builder.with_disk_size_gb(disk_size_gb=node_pool_config.get("osDiskSizeGb", 0))
Expand Down