mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Apply custom defaults to init containers
This commit is contained in:
parent
35c2e70dd1
commit
cfb1cd486e
@ -160,6 +160,18 @@ func SetDefaults_Pod(obj *Pod) {
|
||||
}
|
||||
}
|
||||
}
|
||||
for i := range obj.Spec.InitContainers {
|
||||
if obj.Spec.InitContainers[i].Resources.Limits != nil {
|
||||
if obj.Spec.InitContainers[i].Resources.Requests == nil {
|
||||
obj.Spec.InitContainers[i].Resources.Requests = make(ResourceList)
|
||||
}
|
||||
for key, value := range obj.Spec.InitContainers[i].Resources.Limits {
|
||||
if _, exists := obj.Spec.InitContainers[i].Resources.Requests[key]; !exists {
|
||||
obj.Spec.InitContainers[i].Resources.Requests[key] = *(value.Copy())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
func SetDefaults_PodSpec(obj *PodSpec) {
|
||||
if obj.DNSPolicy == "" {
|
||||
@ -170,6 +182,7 @@ func SetDefaults_PodSpec(obj *PodSpec) {
|
||||
}
|
||||
if obj.HostNetwork {
|
||||
defaultHostNetworkPorts(&obj.Containers)
|
||||
defaultHostNetworkPorts(&obj.InitContainers)
|
||||
}
|
||||
if obj.SecurityContext == nil {
|
||||
obj.SecurityContext = &PodSecurityContext{}
|
||||
|
@ -536,6 +536,15 @@ func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
s.InitContainers = []v1.Container{
|
||||
{
|
||||
Ports: []v1.ContainerPort{
|
||||
{
|
||||
ContainerPort: portNum,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
@ -547,6 +556,11 @@ func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||
if hostPortNum != portNum {
|
||||
t.Errorf("Expected container port to be defaulted, was made %d instead of %d", hostPortNum, portNum)
|
||||
}
|
||||
|
||||
hostPortNum = s2.InitContainers[0].Ports[0].HostPort
|
||||
if hostPortNum != portNum {
|
||||
t.Errorf("Expected container port to be defaulted, was made %d instead of %d", hostPortNum, portNum)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultNodeExternalID(t *testing.T) {
|
||||
@ -679,6 +693,18 @@ func TestSetMinimumScalePod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
s.InitContainers = []v1.Container{
|
||||
{
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceMemory: resource.MustParse("1n"),
|
||||
},
|
||||
Limits: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("2n"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
@ -687,6 +713,9 @@ func TestSetMinimumScalePod(t *testing.T) {
|
||||
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.Containers[0].Resources.Requests[v1.ResourceMemory]) != 0 {
|
||||
t.Errorf("did not round resources: %#v", pod.Spec.Containers[0].Resources)
|
||||
}
|
||||
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.InitContainers[0].Resources.Requests[v1.ResourceMemory]) != 0 {
|
||||
t.Errorf("did not round resources: %#v", pod.Spec.InitContainers[0].Resources)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultRequestsPod(t *testing.T) {
|
||||
@ -705,6 +734,19 @@ func TestSetDefaultRequestsPod(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
s.InitContainers = []v1.Container{
|
||||
{
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceMemory: resource.MustParse("0"),
|
||||
},
|
||||
Limits: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("100m"),
|
||||
v1.ResourceMemory: resource.MustParse("1Gi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
@ -717,10 +759,18 @@ func TestSetDefaultRequestsPod(t *testing.T) {
|
||||
if requestValue := defaultRequest[v1.ResourceMemory]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected request memory: %s, got: %s", "0", requestValue.String())
|
||||
}
|
||||
defaultRequest = pod2.Spec.InitContainers[0].Resources.Requests
|
||||
if requestValue := defaultRequest[v1.ResourceCPU]; requestValue.String() != "100m" {
|
||||
t.Errorf("Expected request cpu: %s, got: %s", "100m", requestValue.String())
|
||||
}
|
||||
if requestValue := defaultRequest[v1.ResourceMemory]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected request memory: %s, got: %s", "0", requestValue.String())
|
||||
}
|
||||
|
||||
// verify we do nothing if no limits are specified
|
||||
s = v1.PodSpec{}
|
||||
s.Containers = []v1.Container{{}}
|
||||
s.InitContainers = []v1.Container{{}}
|
||||
pod = &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
@ -730,6 +780,10 @@ func TestSetDefaultRequestsPod(t *testing.T) {
|
||||
if requestValue := defaultRequest[v1.ResourceCPU]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||
}
|
||||
defaultRequest = pod2.Spec.InitContainers[0].Resources.Requests
|
||||
if requestValue := defaultRequest[v1.ResourceCPU]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
||||
|
@ -160,6 +160,18 @@ func SetDefaults_Pod(obj *Pod) {
|
||||
}
|
||||
}
|
||||
}
|
||||
for i := range obj.Spec.InitContainers {
|
||||
if obj.Spec.InitContainers[i].Resources.Limits != nil {
|
||||
if obj.Spec.InitContainers[i].Resources.Requests == nil {
|
||||
obj.Spec.InitContainers[i].Resources.Requests = make(ResourceList)
|
||||
}
|
||||
for key, value := range obj.Spec.InitContainers[i].Resources.Limits {
|
||||
if _, exists := obj.Spec.InitContainers[i].Resources.Requests[key]; !exists {
|
||||
obj.Spec.InitContainers[i].Resources.Requests[key] = *(value.Copy())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
func SetDefaults_PodSpec(obj *PodSpec) {
|
||||
if obj.DNSPolicy == "" {
|
||||
@ -170,6 +182,7 @@ func SetDefaults_PodSpec(obj *PodSpec) {
|
||||
}
|
||||
if obj.HostNetwork {
|
||||
defaultHostNetworkPorts(&obj.Containers)
|
||||
defaultHostNetworkPorts(&obj.InitContainers)
|
||||
}
|
||||
if obj.SecurityContext == nil {
|
||||
obj.SecurityContext = &PodSecurityContext{}
|
||||
|
Loading…
Reference in New Issue
Block a user