-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy pathcontainer.go
More file actions
85 lines (79 loc) · 2.77 KB
/
Copy pathcontainer.go
File metadata and controls
85 lines (79 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package controller
import (
corev1 "k8s.io/api/core/v1"
slurmv1 "nebius.ai/slurm-operator/api/v1"
"nebius.ai/slurm-operator/internal/consts"
"nebius.ai/slurm-operator/internal/render/common"
"nebius.ai/slurm-operator/internal/values"
)
// renderContainerSlurmctld renders [corev1.Container] for slurmctld
func renderContainerSlurmctld(container *values.Container, customMounts []slurmv1.NodeVolumeMount) corev1.Container {
volumeMounts := []corev1.VolumeMount{
common.RenderVolumeMountSpool(consts.ComponentTypeController, consts.SlurmctldName),
common.RenderVolumeMountJail(),
common.RenderVolumeMountMungeSocket(),
common.RenderVolumeMountSecurityLimits(),
common.RenderVolumeMountRESTJWTKey(),
}
volumeMounts = append(volumeMounts, common.RenderVolumeMounts(customMounts, "")...)
// Create a copy of the container's limits and add non-CPU resources from Requests
limits := common.CopyNonCPUResources(container.Resources)
return corev1.Container{
Name: consts.ContainerNameSlurmctld,
Image: container.Image,
ImagePullPolicy: container.ImagePullPolicy,
Ports: []corev1.ContainerPort{{
Name: container.Name,
ContainerPort: container.Port,
Protocol: corev1.ProtocolTCP,
}},
VolumeMounts: volumeMounts,
SecurityContext: &corev1.SecurityContext{
Capabilities: &corev1.Capabilities{
Add: []corev1.Capability{
consts.ContainerSecurityContextCapabilitySysAdmin,
},
},
},
Resources: corev1.ResourceRequirements{
Limits: limits,
Requests: container.Resources,
},
LivenessProbe: &corev1.Probe{
ProbeHandler: corev1.ProbeHandler{
Exec: &corev1.ExecAction{
Command: []string{
"scontrol",
"ping",
},
},
},
InitialDelaySeconds: common.DefaultProbeInitialDelaySeconds,
TimeoutSeconds: 60,
PeriodSeconds: 70,
SuccessThreshold: common.DefaultProbeSuccessThreshold,
FailureThreshold: 5,
},
TerminationMessagePath: corev1.TerminationMessagePathDefault,
TerminationMessagePolicy: corev1.TerminationMessageReadFile,
}
}
// renderContainerSlurmctldSleep renders [corev1.Container] for slurmctld in sleep mode for DaemonSet
func renderContainerSlurmctldSleep(container *values.Container) corev1.Container {
return corev1.Container{
Name: consts.ContainerNameSlurmctld,
Image: container.Image,
ImagePullPolicy: container.ImagePullPolicy,
Command: []string{"sleep"},
Args: []string{"infinity"},
SecurityContext: &corev1.SecurityContext{
Capabilities: &corev1.Capabilities{
Add: []corev1.Capability{
consts.ContainerSecurityContextCapabilitySysAdmin,
},
},
},
TerminationMessagePath: corev1.TerminationMessagePathDefault,
TerminationMessagePolicy: corev1.TerminationMessageReadFile,
}
}