diff --git a/pkg/operator/vttablet/mysqlctld.go b/pkg/operator/vttablet/mysqlctld.go index 34bdc597..fe39053f 100644 --- a/pkg/operator/vttablet/mysqlctld.go +++ b/pkg/operator/vttablet/mysqlctld.go @@ -18,6 +18,7 @@ package vttablet import ( corev1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" "k8s.io/utils/pointer" planetscalev2 "planetscale.dev/vitess-operator/pkg/apis/planetscale/v2" @@ -47,6 +48,10 @@ for mycnf in $(find . -mindepth 2 -maxdepth 2 -path './vt_*/my.cnf'); do sed -i -e 's,^socket[ \t]*=.*$,socket = ` + mysqlSocketPath + `,' "${mycnf}" done ` + + defaultInitCPURequestMillis = 100 + defaultInitMemoryRequestBytes = 32 * (1 << 20) // 32 MiB + defaultInitMemoryLimitBytes = 128 * (1 << 20) // 128 MiB ) func init() { @@ -86,6 +91,15 @@ func init() { }, Command: []string{"bash", "-c"}, Args: []string{vtRootInitScript}, + Resources: corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceCPU: *resource.NewMilliQuantity(defaultInitCPURequestMillis, resource.DecimalSI), + corev1.ResourceMemory: *resource.NewQuantity(defaultInitMemoryRequestBytes, resource.BinarySI), + }, + Limits: corev1.ResourceList{ + corev1.ResourceMemory: *resource.NewQuantity(defaultInitMemoryLimitBytes, resource.BinarySI), + }, + }, }, } @@ -108,6 +122,15 @@ func init() { }, Command: []string{"bash", "-c"}, Args: []string{mysqlSocketInitScript}, + Resources: corev1.ResourceRequirements{ + Requests: corev1.ResourceList{ + corev1.ResourceCPU: *resource.NewMilliQuantity(defaultInitCPURequestMillis, resource.DecimalSI), + corev1.ResourceMemory: *resource.NewQuantity(defaultInitMemoryRequestBytes, resource.BinarySI), + }, + Limits: corev1.ResourceList{ + corev1.ResourceMemory: *resource.NewQuantity(defaultInitMemoryLimitBytes, resource.BinarySI), + }, + }, }) } diff --git a/pkg/operator/vttablet/pod.go b/pkg/operator/vttablet/pod.go index f993d78d..d3aeb576 100644 --- a/pkg/operator/vttablet/pod.go +++ b/pkg/operator/vttablet/pod.go @@ -233,9 +233,18 @@ func UpdatePod(obj *corev1.Pod, spec *Spec) { } } + // Set the resource requirements on each of the default vttablet init + // containers to the same values as the vttablet container itself in + // case the cluster requires them. + defaultTabletInitContainers := tabletInitContainers.Get(spec) + for i := range defaultTabletInitContainers { + c := &defaultTabletInitContainers[i] + update.ResourceRequirements(&c.Resources, &spec.Vttablet.Resources) + } + // Make the final list of desired containers and init containers. initContainers := []corev1.Container{} - initContainers = append(initContainers, tabletInitContainers.Get(spec)...) + initContainers = append(initContainers, defaultTabletInitContainers...) initContainers = append(initContainers, spec.InitContainers...) sidecarContainers := []corev1.Container{}