- 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
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
- 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
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
oc get kubeletconfig increased-memory-reserve -o yaml
- Y podemos observar que se aplicó correctamente
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
- o ejecutar y ver que ya tenemos 4Gb
oc adm top node
- Así desaparece la notificación