@@ -22,6 +22,7 @@ import (
22
22
"strconv"
23
23
"time"
24
24
25
+ v1 "k8s.io/api/core/v1"
25
26
"k8s.io/apimachinery/pkg/api/resource"
26
27
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
28
"k8s.io/apimachinery/pkg/types"
@@ -33,7 +34,6 @@ import (
33
34
34
35
"github.com/onsi/ginkgo/v2"
35
36
"github.com/onsi/gomega"
36
- v1 "k8s.io/api/core/v1"
37
37
)
38
38
39
39
const (
@@ -968,6 +968,322 @@ func doPodResizeTests() {
968
968
},
969
969
},
970
970
},
971
+ {
972
+ name : "Guaranteed QoS pod, one restartable init container - increase CPU & memory" ,
973
+ containers : []e2epod.ResizableContainerInfo {
974
+ {
975
+ Name : "c1" ,
976
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
977
+ CPUPolicy : & noRestart ,
978
+ MemPolicy : & noRestart ,
979
+ },
980
+ {
981
+ Name : "c1-init" ,
982
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
983
+ CPUPolicy : & noRestart ,
984
+ MemPolicy : & noRestart ,
985
+ InitCtr : true ,
986
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
987
+ },
988
+ },
989
+ patchString : `{"spec":{"initContainers":[
990
+ {"name":"c1-init", "resources":{"requests":{"cpu":"200m","memory":"400Mi"},"limits":{"cpu":"200m","memory":"400Mi"}}}
991
+ ]}}` ,
992
+ expected : []e2epod.ResizableContainerInfo {
993
+ {
994
+ Name : "c1" ,
995
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
996
+ CPUPolicy : & noRestart ,
997
+ MemPolicy : & noRestart ,
998
+ },
999
+ {
1000
+ Name : "c1-init" ,
1001
+ Resources : & e2epod.ContainerResources {CPUReq : "200m" , CPULim : "200m" , MemReq : "400Mi" , MemLim : "400Mi" },
1002
+ CPUPolicy : & noRestart ,
1003
+ MemPolicy : & noRestart ,
1004
+ InitCtr : true ,
1005
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1006
+ },
1007
+ },
1008
+ },
1009
+ {
1010
+ name : "Guaranteed QoS pod, one restartable init container - decrease CPU & memory" ,
1011
+ containers : []e2epod.ResizableContainerInfo {
1012
+ {
1013
+ Name : "c1" ,
1014
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "300m" , MemReq : "500Mi" , MemLim : "500Mi" },
1015
+ CPUPolicy : & noRestart ,
1016
+ MemPolicy : & noRestart ,
1017
+ },
1018
+ {
1019
+ Name : "c1-init" ,
1020
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "300m" , MemReq : "500Mi" , MemLim : "500Mi" },
1021
+ CPUPolicy : & noRestart ,
1022
+ MemPolicy : & noRestart ,
1023
+ InitCtr : true ,
1024
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1025
+ },
1026
+ },
1027
+ patchString : `{"spec":{"initContainers":[
1028
+ {"name":"c1-init", "resources":{"requests":{"cpu":"100m","memory":"250Mi"},"limits":{"cpu":"100m","memory":"250Mi"}}}
1029
+ ]}}` ,
1030
+ expected : []e2epod.ResizableContainerInfo {
1031
+ {
1032
+ Name : "c1" ,
1033
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "300m" , MemReq : "500Mi" , MemLim : "500Mi" },
1034
+ CPUPolicy : & noRestart ,
1035
+ MemPolicy : & noRestart ,
1036
+ },
1037
+ {
1038
+ Name : "c1-init" ,
1039
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "250Mi" , MemLim : "250Mi" },
1040
+ CPUPolicy : & noRestart ,
1041
+ MemPolicy : & noRestart ,
1042
+ InitCtr : true ,
1043
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1044
+ },
1045
+ },
1046
+ },
1047
+ {
1048
+ name : "Guaranteed QoS pod, one restartable init container - increase CPU & decrease memory" ,
1049
+ containers : []e2epod.ResizableContainerInfo {
1050
+ {
1051
+ Name : "c1" ,
1052
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1053
+ },
1054
+ {
1055
+ Name : "c1-init" ,
1056
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1057
+ InitCtr : true ,
1058
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1059
+ },
1060
+ },
1061
+ patchString : `{"spec":{"initContainers":[
1062
+ {"name":"c1-init", "resources":{"requests":{"cpu":"200m","memory":"100Mi"},"limits":{"cpu":"200m","memory":"100Mi"}}}
1063
+ ]}}` ,
1064
+ expected : []e2epod.ResizableContainerInfo {
1065
+ {
1066
+ Name : "c1" ,
1067
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1068
+ },
1069
+ {
1070
+ Name : "c1-init" ,
1071
+ Resources : & e2epod.ContainerResources {CPUReq : "200m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "100Mi" },
1072
+ InitCtr : true ,
1073
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1074
+ },
1075
+ },
1076
+ },
1077
+ {
1078
+ name : "Guaranteed QoS pod, one restartable init container - decrease CPU & increase memory" ,
1079
+ containers : []e2epod.ResizableContainerInfo {
1080
+ {
1081
+ Name : "c1" ,
1082
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1083
+ },
1084
+ {
1085
+ Name : "c1-init" ,
1086
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1087
+ InitCtr : true ,
1088
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1089
+ },
1090
+ },
1091
+ patchString : `{"spec":{"initContainers":[
1092
+ {"name":"c1-init", "resources":{"requests":{"cpu":"50m","memory":"300Mi"},"limits":{"cpu":"50m","memory":"300Mi"}}}
1093
+ ]}}` ,
1094
+ expected : []e2epod.ResizableContainerInfo {
1095
+ {
1096
+ Name : "c1" ,
1097
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "100m" , MemReq : "200Mi" , MemLim : "200Mi" },
1098
+ },
1099
+ {
1100
+ Name : "c1-init" ,
1101
+ Resources : & e2epod.ContainerResources {CPUReq : "50m" , CPULim : "50m" , MemReq : "300Mi" , MemLim : "300Mi" },
1102
+ InitCtr : true ,
1103
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1104
+ },
1105
+ },
1106
+ },
1107
+ {
1108
+ name : "Burstable QoS pod, one container, one restartable init container - decrease init container CPU & memory" ,
1109
+ containers : []e2epod.ResizableContainerInfo {
1110
+ {
1111
+ Name : "c1" ,
1112
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1113
+ },
1114
+ {
1115
+ Name : "c1-init" ,
1116
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "300Mi" , MemLim : "400Mi" },
1117
+ InitCtr : true ,
1118
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1119
+ },
1120
+ },
1121
+ patchString : `{"spec":{"initContainers":[
1122
+ {"name":"c1-init", "resources":{"requests":{"cpu":"100m","memory":"100Mi"},"limits":{"cpu":"200m","memory":"200Mi"}}}
1123
+ ]}}` ,
1124
+ expected : []e2epod.ResizableContainerInfo {
1125
+ {
1126
+ Name : "c1" ,
1127
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1128
+ },
1129
+ {
1130
+ Name : "c1-init" ,
1131
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1132
+ InitCtr : true ,
1133
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1134
+ },
1135
+ },
1136
+ },
1137
+ {
1138
+ name : "Burstable QoS pod, one container, one restartable init container - increase init container CPU & memory" ,
1139
+ containers : []e2epod.ResizableContainerInfo {
1140
+ {
1141
+ Name : "c1" ,
1142
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1143
+ },
1144
+ {
1145
+ Name : "c1-init" ,
1146
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1147
+ InitCtr : true ,
1148
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1149
+ },
1150
+ },
1151
+ patchString : `{"spec":{"initContainers":[
1152
+ {"name":"c1-init", "resources":{"requests":{"cpu":"300m","memory":"300Mi"},"limits":{"cpu":"400m","memory":"400Mi"}}}
1153
+ ]}}` ,
1154
+ expected : []e2epod.ResizableContainerInfo {
1155
+ {
1156
+ Name : "c1" ,
1157
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1158
+ },
1159
+ {
1160
+ Name : "c1-init" ,
1161
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "300Mi" , MemLim : "400Mi" },
1162
+ InitCtr : true ,
1163
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1164
+ },
1165
+ },
1166
+ },
1167
+ {
1168
+ name : "Burstable QoS pod, one container, one restartable init container - decrease init container CPU only" ,
1169
+ containers : []e2epod.ResizableContainerInfo {
1170
+ {
1171
+ Name : "c1" ,
1172
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1173
+ },
1174
+ {
1175
+ Name : "c1-init" ,
1176
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "300Mi" , MemLim : "400Mi" },
1177
+ InitCtr : true ,
1178
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1179
+ },
1180
+ },
1181
+ patchString : `{"spec":{"initContainers":[
1182
+ {"name":"c1-init", "resources":{"requests":{"cpu":"100m"},"limits":{"cpu":"200m"}}}
1183
+ ]}}` ,
1184
+ expected : []e2epod.ResizableContainerInfo {
1185
+ {
1186
+ Name : "c1" ,
1187
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1188
+ },
1189
+ {
1190
+ Name : "c1-init" ,
1191
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "300Mi" , MemLim : "400Mi" },
1192
+ InitCtr : true ,
1193
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1194
+ },
1195
+ },
1196
+ },
1197
+ {
1198
+ name : "Burstable QoS pod, one container, one restartable init container - increase init container CPU only" ,
1199
+ containers : []e2epod.ResizableContainerInfo {
1200
+ {
1201
+ Name : "c1" ,
1202
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1203
+ },
1204
+ {
1205
+ Name : "c1-init" ,
1206
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1207
+ InitCtr : true ,
1208
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1209
+ },
1210
+ },
1211
+ patchString : `{"spec":{"initContainers":[
1212
+ {"name":"c1-init", "resources":{"requests":{"cpu":"300m"},"limits":{"cpu":"400m"}}}
1213
+ ]}}` ,
1214
+ expected : []e2epod.ResizableContainerInfo {
1215
+ {
1216
+ Name : "c1" ,
1217
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1218
+ },
1219
+ {
1220
+ Name : "c1-init" ,
1221
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "100Mi" , MemLim : "200Mi" },
1222
+ InitCtr : true ,
1223
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1224
+ },
1225
+ },
1226
+ },
1227
+ {
1228
+ name : "Burstable QoS pod, one container, one restartable init container - decrease init container memory only" ,
1229
+ containers : []e2epod.ResizableContainerInfo {
1230
+ {
1231
+ Name : "c1" ,
1232
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1233
+ },
1234
+ {
1235
+ Name : "c1-init" ,
1236
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "300Mi" , MemLim : "400Mi" },
1237
+ InitCtr : true ,
1238
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1239
+ },
1240
+ },
1241
+ patchString : `{"spec":{"initContainers":[
1242
+ {"name":"c1-init", "resources":{"requests":{"memory":"100Mi"},"limits":{"memory":"200Mi"}}}
1243
+ ]}}` ,
1244
+ expected : []e2epod.ResizableContainerInfo {
1245
+ {
1246
+ Name : "c1" ,
1247
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1248
+ },
1249
+ {
1250
+ Name : "c1-init" ,
1251
+ Resources : & e2epod.ContainerResources {CPUReq : "300m" , CPULim : "400m" , MemReq : "100Mi" , MemLim : "200Mi" },
1252
+ InitCtr : true ,
1253
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1254
+ },
1255
+ },
1256
+ },
1257
+ {
1258
+ name : "Burstable QoS pod, one container, one restartable init container - increase init container memory only" ,
1259
+ containers : []e2epod.ResizableContainerInfo {
1260
+ {
1261
+ Name : "c1" ,
1262
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1263
+ },
1264
+ {
1265
+ Name : "c1-init" ,
1266
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1267
+ InitCtr : true ,
1268
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1269
+ },
1270
+ },
1271
+ patchString : `{"spec":{"initContainers":[
1272
+ {"name":"c1-init", "resources":{"requests":{"memory":"300Mi"},"limits":{"memory":"400Mi"}}}
1273
+ ]}}` ,
1274
+ expected : []e2epod.ResizableContainerInfo {
1275
+ {
1276
+ Name : "c1" ,
1277
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "100Mi" , MemLim : "200Mi" },
1278
+ },
1279
+ {
1280
+ Name : "c1-init" ,
1281
+ Resources : & e2epod.ContainerResources {CPUReq : "100m" , CPULim : "200m" , MemReq : "300Mi" , MemLim : "400Mi" },
1282
+ InitCtr : true ,
1283
+ RestartPolicy : v1 .ContainerRestartPolicyAlways ,
1284
+ },
1285
+ },
1286
+ },
971
1287
}
972
1288
973
1289
for idx := range tests {
0 commit comments