OKD: Error de memoria

  • Si se presenta el error
  • Este error se presenta por okd reserva memoria RAM para el sistema y kuberlet
  • Ingresamos a provisioner
ssh cgi@10.0.2.244
  • Cargamos la lla SSH y la config
eval "$(ssh-agent -s)"
Identity added: /home/cgi/.ssh/id_ed25519_openshift (cgi@okd-provisioner)
export KUBECONFIG=/home/cgi/okd-install/auth/kubeconfig
  • Ahora si obtenemos la kuberletConfig
oc get kubeletconfig -o yaml
  • Podemos observar que tenemos
apiVersion: v1
items:
- apiVersion: machineconfiguration.openshift.io/v1
  kind: KubeletConfig
  metadata:
    annotations:
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"machineconfiguration.openshift.io/v1","kind":"KubeletConfig","metadata":{"annotations":{},"name":"increased-memory-reserve"},"spec":{"kubeletConfig":{"kubeReserved":{"cpu":"500m","memory":"2Gi"},"systemReserved":{"cpu":"500m","memory":"2Gi"}},"machineConfigPoolSelector":{"matchLabels":{"custom-kubelet":"true"}}}}
    creationTimestamp: "2025-10-09T22:32:59Z"
    generation: 1
    name: increased-memory-reserve
    resourceVersion: "2305345"
    uid: 1e2e9da8-d719-49e8-9954-8b0ec3cf603e
  spec:
    kubeletConfig:
      kubeReserved:
        cpu: 500m
        memory: 2Gi
      systemReserved:
        cpu: 500m
        memory: 2Gi
    machineConfigPoolSelector:
      matchLabels:
        custom-kubelet: "true"
  status:
    conditions:
    - lastTransitionTime: "2025-10-10T15:06:20Z"
      message: 'Error: could not find any MachineConfigPool set for KubeletConfig'
      status: "False"
      type: Failure
    observedGeneration: 1
kind: List
metadata:
  resourceVersion: ""
  • Principalmete esta parte que nos indica que tiene 2GB de memoría reservada
  • Entonces si nos metemos al nodo con
oc debug node/cp3.okd.una.ac.cr
  • Nos abre una shell donde si consultamos la memoria RAM
free -h
  • Podemos ver que tenemos 330GB libres entonces por memoria real existente no es el problema
  • salimos 2 veces
exit
exit
  • Entonces para modificar la memoria dentro del directorio okd-install creamos el archivo
nano kubeletconfig-memory.yaml
  • Y le agregamos
apiVersion: machineconfiguration.openshift.io/v1
kind: KubeletConfig
metadata:
  name: increased-memory-reserve
spec:
  machineConfigPoolSelector:
    matchLabels:
      custom-kubelet: "true"
  kubeletConfig:
    systemReserved:
      cpu: 500m
      memory: 2Gi
    kubeReserved:
      cpu: 500m
      memory: 2Gi
  • Esto le asigna un total de 4GB
    • 2GB: sistema
    • 2GB: Kuberlet
  • Ahora en el archivos vemos que tenemos
spec:
  machineConfigPoolSelector:
    matchLabels:
      custom-kubelet: "true"
  • Esto indica que le aplique la configuración a los pools etiquetas con custom-kubelet: «true»
  • entonces primero vemos que tenemos 2 pools
oc get machineconfigpool
  • Los master y los workers
  • Entonces si deseamos solo aplicar alguno o a todos les agregamos las etiquetas
# Solo master
oc label machineconfigpool master custom-kubelet=true

# Solo workers
oc label machineconfigpool worker custom-kubelet=true

# Los dos
oc label machineconfigpool master custom-kubelet=true
oc label machineconfigpool worker custom-kubelet=true
  • Revisamos que la etiqueta se aplico
oc get machineconfigpool master -o yaml | grep custom-kubelet -C2
  • Y luego la aplicamos
oc apply -f kubeletconfig-memory.yaml
  • Entonces podemos ver si la reserva se aplico obteniendo los valores d ela configuración
oc get kubeletconfig -o yaml
  • Y ejecutamos
oc get kubeletconfig increased-memory-reserve -o yaml
  • Y podemos observar que se aplicó correctamente
  • Podemos ejecutar
oc get machineconfigpool
  • Y ver que se esta actualizando
  • Aqui podemos ver que ya actualizo uno por que se secuencial
  • Comprobamos hasta que tengamos los 3 nodos actualizados
  • podriamos obtener directamente
oc get kubeletconfig
  • Y ver que ya se aumento
  • o ejecutar y ver que ya tenemos 4Gb
oc adm top node
  • Así desaparece la notificación