Sets node critical priority for codex and geth nodes
This commit is contained in:
parent
ff52e8e841
commit
3761e236a3
|
@ -335,6 +335,7 @@ namespace KubernetesWorkflow
|
||||||
},
|
},
|
||||||
Spec = new V1PodSpec
|
Spec = new V1PodSpec
|
||||||
{
|
{
|
||||||
|
PriorityClassName = GetPriorityClassName(containerRecipes),
|
||||||
Affinity = CreatePodAffinity(containerRecipes),
|
Affinity = CreatePodAffinity(containerRecipes),
|
||||||
NodeSelector = CreateNodeSelector(location),
|
NodeSelector = CreateNodeSelector(location),
|
||||||
Containers = CreateDeploymentContainers(containerRecipes),
|
Containers = CreateDeploymentContainers(containerRecipes),
|
||||||
|
@ -410,6 +411,15 @@ namespace KubernetesWorkflow
|
||||||
return l.NodeLabel;
|
return l.NodeLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetPriorityClassName(ContainerRecipe[] containerRecipes)
|
||||||
|
{
|
||||||
|
if (containerRecipes.Any(c => c.SetCriticalPriority))
|
||||||
|
{
|
||||||
|
return "system-node-critical";
|
||||||
|
}
|
||||||
|
return null!;
|
||||||
|
}
|
||||||
|
|
||||||
private IDictionary<string, string> GetSelector(ContainerRecipe[] containerRecipes)
|
private IDictionary<string, string> GetSelector(ContainerRecipe[] containerRecipes)
|
||||||
{
|
{
|
||||||
return containerRecipes.First().PodLabels.GetLabels();
|
return containerRecipes.First().PodLabels.GetLabels();
|
||||||
|
|
|
@ -2,13 +2,14 @@
|
||||||
{
|
{
|
||||||
public class ContainerRecipe
|
public class ContainerRecipe
|
||||||
{
|
{
|
||||||
public ContainerRecipe(int number, string? nameOverride, string image, ContainerResources resources, SchedulingAffinity schedulingAffinity, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, ContainerAdditionals additionals)
|
public ContainerRecipe(int number, string? nameOverride, string image, ContainerResources resources, SchedulingAffinity schedulingAffinity, bool setCriticalPriority, Port[] exposedPorts, Port[] internalPorts, EnvVar[] envVars, PodLabels podLabels, PodAnnotations podAnnotations, VolumeMount[] volumes, ContainerAdditionals additionals)
|
||||||
{
|
{
|
||||||
Number = number;
|
Number = number;
|
||||||
NameOverride = nameOverride;
|
NameOverride = nameOverride;
|
||||||
Image = image;
|
Image = image;
|
||||||
Resources = resources;
|
Resources = resources;
|
||||||
SchedulingAffinity = schedulingAffinity;
|
SchedulingAffinity = schedulingAffinity;
|
||||||
|
SetCriticalPriority = setCriticalPriority;
|
||||||
ExposedPorts = exposedPorts;
|
ExposedPorts = exposedPorts;
|
||||||
InternalPorts = internalPorts;
|
InternalPorts = internalPorts;
|
||||||
EnvVars = envVars;
|
EnvVars = envVars;
|
||||||
|
@ -34,6 +35,7 @@
|
||||||
public string? NameOverride { get; }
|
public string? NameOverride { get; }
|
||||||
public ContainerResources Resources { get; }
|
public ContainerResources Resources { get; }
|
||||||
public SchedulingAffinity SchedulingAffinity { get; }
|
public SchedulingAffinity SchedulingAffinity { get; }
|
||||||
|
public bool SetCriticalPriority { get; }
|
||||||
public string Image { get; }
|
public string Image { get; }
|
||||||
public Port[] ExposedPorts { get; }
|
public Port[] ExposedPorts { get; }
|
||||||
public Port[] InternalPorts { get; }
|
public Port[] InternalPorts { get; }
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
private RecipeComponentFactory factory = null!;
|
private RecipeComponentFactory factory = null!;
|
||||||
private ContainerResources resources = new ContainerResources();
|
private ContainerResources resources = new ContainerResources();
|
||||||
private SchedulingAffinity schedulingAffinity = new SchedulingAffinity();
|
private SchedulingAffinity schedulingAffinity = new SchedulingAffinity();
|
||||||
|
private bool setCriticalPriority;
|
||||||
|
|
||||||
public ContainerRecipe CreateRecipe(int index, int containerNumber, RecipeComponentFactory factory, StartupConfig config)
|
public ContainerRecipe CreateRecipe(int index, int containerNumber, RecipeComponentFactory factory, StartupConfig config)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +24,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
|
|
||||||
Initialize(config);
|
Initialize(config);
|
||||||
|
|
||||||
var recipe = new ContainerRecipe(containerNumber, config.NameOverride, Image, resources, schedulingAffinity,
|
var recipe = new ContainerRecipe(containerNumber, config.NameOverride, Image, resources, schedulingAffinity, setCriticalPriority,
|
||||||
exposedPorts.ToArray(),
|
exposedPorts.ToArray(),
|
||||||
internalPorts.ToArray(),
|
internalPorts.ToArray(),
|
||||||
envVars.ToArray(),
|
envVars.ToArray(),
|
||||||
|
@ -42,6 +43,7 @@ namespace KubernetesWorkflow.Recipe
|
||||||
this.factory = null!;
|
this.factory = null!;
|
||||||
resources = new ContainerResources();
|
resources = new ContainerResources();
|
||||||
schedulingAffinity = new SchedulingAffinity();
|
schedulingAffinity = new SchedulingAffinity();
|
||||||
|
setCriticalPriority = false;
|
||||||
|
|
||||||
return recipe;
|
return recipe;
|
||||||
}
|
}
|
||||||
|
@ -128,6 +130,11 @@ namespace KubernetesWorkflow.Recipe
|
||||||
schedulingAffinity = new SchedulingAffinity(notIn);
|
schedulingAffinity = new SchedulingAffinity(notIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void SetSystemCriticalPriority()
|
||||||
|
{
|
||||||
|
setCriticalPriority = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Disabled following a possible bug in the k8s cluster that will throttle containers much more than is
|
// Disabled following a possible bug in the k8s cluster that will throttle containers much more than is
|
||||||
// called for if they have resource limits defined.
|
// called for if they have resource limits defined.
|
||||||
//protected void SetResourceLimits(int milliCPUs, ByteSize memory)
|
//protected void SetResourceLimits(int milliCPUs, ByteSize memory)
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace CodexPlugin
|
||||||
//SetResourceLimits(milliCPUs: 4000, memory: 12.GB());
|
//SetResourceLimits(milliCPUs: 4000, memory: 12.GB());
|
||||||
|
|
||||||
SetSchedulingAffinity(notIn: "tests-runners");
|
SetSchedulingAffinity(notIn: "tests-runners");
|
||||||
|
SetSystemCriticalPriority();
|
||||||
|
|
||||||
var config = startupConfig.Get<CodexStartupConfig>();
|
var config = startupConfig.Get<CodexStartupConfig>();
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ namespace GethPlugin
|
||||||
var args = CreateArgs(config);
|
var args = CreateArgs(config);
|
||||||
|
|
||||||
SetSchedulingAffinity(notIn: "tests-runners");
|
SetSchedulingAffinity(notIn: "tests-runners");
|
||||||
|
SetSystemCriticalPriority();
|
||||||
|
|
||||||
AddEnvVar("GETH_ARGS", args);
|
AddEnvVar("GETH_ARGS", args);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue