mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Add downward_api e2e test for LocalStorageCapacityIsolation feature
This commit is contained in:
parent
6a8d1545e6
commit
d379a9a3ff
@ -192,7 +192,7 @@ func MergeContainerResourceLimits(container *v1.Container,
|
|||||||
if container.Resources.Limits == nil {
|
if container.Resources.Limits == nil {
|
||||||
container.Resources.Limits = make(v1.ResourceList)
|
container.Resources.Limits = make(v1.ResourceList)
|
||||||
}
|
}
|
||||||
for _, resource := range []v1.ResourceName{v1.ResourceCPU, v1.ResourceMemory} {
|
for _, resource := range []v1.ResourceName{v1.ResourceCPU, v1.ResourceMemory, v1.ResourceEphemeralStorage} {
|
||||||
if quantity, exists := container.Resources.Limits[resource]; !exists || quantity.IsZero() {
|
if quantity, exists := container.Resources.Limits[resource]; !exists || quantity.IsZero() {
|
||||||
if cap, exists := allocatable[resource]; exists {
|
if cap, exists := allocatable[resource]; exists {
|
||||||
container.Resources.Limits[resource] = *cap.Copy()
|
container.Resources.Limits[resource] = *cap.Copy()
|
||||||
|
@ -225,6 +225,81 @@ var _ = Describe("[sig-api-machinery] Downward API", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
var _ = framework.KubeDescribe("Downward API [Serial] [Disruptive]", func() {
|
||||||
|
f := framework.NewDefaultFramework("downward-api")
|
||||||
|
|
||||||
|
Context("Downward API tests for local ephemeral storage", func() {
|
||||||
|
BeforeEach(func() {
|
||||||
|
framework.SkipUnlessLocalEphemeralStorageEnabled()
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should provide container's limits.ephemeral-storage and requests.ephemeral-storage as env vars", func() {
|
||||||
|
podName := "downward-api-" + string(uuid.NewUUID())
|
||||||
|
env := []v1.EnvVar{
|
||||||
|
{
|
||||||
|
Name: "EPHEMERAL_STORAGE_LIMIT",
|
||||||
|
ValueFrom: &v1.EnvVarSource{
|
||||||
|
ResourceFieldRef: &v1.ResourceFieldSelector{
|
||||||
|
Resource: "limits.ephemeral-storage",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "EPHEMERAL_STORAGE_REQUEST",
|
||||||
|
ValueFrom: &v1.EnvVarSource{
|
||||||
|
ResourceFieldRef: &v1.ResourceFieldSelector{
|
||||||
|
Resource: "requests.ephemeral-storage",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
expectations := []string{
|
||||||
|
fmt.Sprintf("EPHEMERAL_STORAGE_LIMIT=%d", 64*1024*1024),
|
||||||
|
fmt.Sprintf("EPHEMERAL_STORAGE_REQUEST=%d", 32*1024*1024),
|
||||||
|
}
|
||||||
|
|
||||||
|
testDownwardAPIForEphemeralStorage(f, podName, env, expectations)
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should provide default limits.ephemeral-storage from node allocatable", func() {
|
||||||
|
podName := "downward-api-" + string(uuid.NewUUID())
|
||||||
|
env := []v1.EnvVar{
|
||||||
|
{
|
||||||
|
Name: "EPHEMERAL_STORAGE_LIMIT",
|
||||||
|
ValueFrom: &v1.EnvVarSource{
|
||||||
|
ResourceFieldRef: &v1.ResourceFieldSelector{
|
||||||
|
Resource: "limits.ephemeral-storage",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
expectations := []string{
|
||||||
|
"EPHEMERAL_STORAGE_LIMIT=[1-9]",
|
||||||
|
}
|
||||||
|
pod := &v1.Pod{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: podName,
|
||||||
|
Labels: map[string]string{"name": podName},
|
||||||
|
},
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
{
|
||||||
|
Name: "dapi-container",
|
||||||
|
Image: busyboxImage,
|
||||||
|
Command: []string{"sh", "-c", "env"},
|
||||||
|
Env: env,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
RestartPolicy: v1.RestartPolicyNever,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
testDownwardAPIUsingPod(f, pod, env, expectations)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
func testDownwardAPI(f *framework.Framework, podName string, env []v1.EnvVar, expectations []string) {
|
func testDownwardAPI(f *framework.Framework, podName string, env []v1.EnvVar, expectations []string) {
|
||||||
pod := &v1.Pod{
|
pod := &v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
@ -257,6 +332,36 @@ func testDownwardAPI(f *framework.Framework, podName string, env []v1.EnvVar, ex
|
|||||||
testDownwardAPIUsingPod(f, pod, env, expectations)
|
testDownwardAPIUsingPod(f, pod, env, expectations)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testDownwardAPIForEphemeralStorage(f *framework.Framework, podName string, env []v1.EnvVar, expectations []string) {
|
||||||
|
pod := &v1.Pod{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: podName,
|
||||||
|
Labels: map[string]string{"name": podName},
|
||||||
|
},
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
{
|
||||||
|
Name: "dapi-container",
|
||||||
|
Image: busyboxImage,
|
||||||
|
Command: []string{"sh", "-c", "env"},
|
||||||
|
Resources: v1.ResourceRequirements{
|
||||||
|
Requests: v1.ResourceList{
|
||||||
|
v1.ResourceEphemeralStorage: resource.MustParse("32Mi"),
|
||||||
|
},
|
||||||
|
Limits: v1.ResourceList{
|
||||||
|
v1.ResourceEphemeralStorage: resource.MustParse("64Mi"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Env: env,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
RestartPolicy: v1.RestartPolicyNever,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
testDownwardAPIUsingPod(f, pod, env, expectations)
|
||||||
|
}
|
||||||
|
|
||||||
func testDownwardAPIUsingPod(f *framework.Framework, pod *v1.Pod, env []v1.EnvVar, expectations []string) {
|
func testDownwardAPIUsingPod(f *framework.Framework, pod *v1.Pod, env []v1.EnvVar, expectations []string) {
|
||||||
f.TestContainerOutputRegexp("downward api env vars", pod, 0, expectations)
|
f.TestContainerOutputRegexp("downward api env vars", pod, 0, expectations)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user