@oondemand/oon-core-back 0.7.23 → 0.7.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/delivery/runtime.js +13 -9
package/package.json
CHANGED
package/src/delivery/runtime.js
CHANGED
|
@@ -55,12 +55,16 @@ function memoryMi(value) {
|
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* Cota do namespace calculada pelas réplicas e pelo perfil de recursos, com
|
|
58
|
-
* espaço para o
|
|
59
|
-
*
|
|
58
|
+
* espaço para o pior momento do rolling update: as réplicas antigas ainda em
|
|
59
|
+
* encerramento (preStop + encerramento gracioso, até 40 s; Pod em
|
|
60
|
+
* encerramento continua contando na cota), as novas e o pod extra (maxSurge 1)
|
|
61
|
+
* = 2 × réplicas + 1. Com só réplicas + 1, a criação da réplica nova era
|
|
62
|
+
* recusada (exceeded quota) até a antiga sair. A cota é um teto, não reserva
|
|
63
|
+
* CPU nem memória no cluster. Nunca fica abaixo do piso anterior.
|
|
60
64
|
*/
|
|
61
65
|
function namespaceQuota({ replicas = 1, profile = "small" } = {}) {
|
|
62
66
|
const resources = RESOURCE_PROFILES[profile] || RESOURCE_PROFILES.small;
|
|
63
|
-
const pods = replicas + 1;
|
|
67
|
+
const pods = 2 * replicas + 1;
|
|
64
68
|
return {
|
|
65
69
|
requestsCpu: `${Math.max(QUOTA_FLOOR.requestsCpuMilli, pods * cpuMilli(resources.cpuRequest))}m`,
|
|
66
70
|
requestsMemory: `${Math.max(QUOTA_FLOOR.requestsMemoryMi, pods * memoryMi(resources.memoryRequest))}Mi`,
|
|
@@ -209,15 +213,15 @@ spec:
|
|
|
209
213
|
spec:
|
|
210
214
|
serviceAccountName: oon-runtime
|
|
211
215
|
terminationGracePeriodSeconds: ${TERMINATION_GRACE_SECONDS}
|
|
212
|
-
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
216
|
+
# Distribuição preferencial por nó, contando só os pods da mesma revisão
|
|
217
|
+
# (matchLabelKeys): era a contagem dos pods da revisão anterior que deixava
|
|
218
|
+
# as réplicas novas juntas. ScheduleAnyway, e não a regra obrigatória: com o
|
|
219
|
+
# cluster cheio, a regra obrigatória deixava a réplica Pending ("Insufficient
|
|
220
|
+
# cpu" num nó, spread no outro) e o rollout estourava o prazo.
|
|
215
221
|
topologySpreadConstraints:
|
|
216
222
|
- maxSkew: 1
|
|
217
223
|
topologyKey: kubernetes.io/hostname
|
|
218
|
-
whenUnsatisfiable:
|
|
219
|
-
# Só os pods da mesma revisão: sem isso, ao fim do rolling update os
|
|
220
|
-
# pods novos podem ficar todos no mesmo nó.
|
|
224
|
+
whenUnsatisfiable: ScheduleAnyway
|
|
221
225
|
matchLabelKeys: [pod-template-hash]
|
|
222
226
|
labelSelector:
|
|
223
227
|
matchLabels: { app.kubernetes.io/name: ${context.appCode} }
|