Hola lectores fantasmas esta es mi actividad de hoy
Actividad 5: A replicaset rs-moises is created. However the pods are not comming up. Identify and fix the issue. Once fixed ensure the replicaset has 4 Ready replicas. (Crear un replicaset con imagenes incorrectas)
Este es uno de esos ejercicios especiales, mi ambiente esta perfecto asi que tenemos que repararlo.
Asi que me volvere ‘loooocooo’
kubectl create replicaset rs-moises –replicas=3 –image=moises
Rayos, no funciona ‘create’ con replicaset en modo inline.
Primero descubri que no funcionan los parametros y luego que no funciona el create.
Me olvide de la documentacion: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
Vamos con un archivo
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-moises
spec:
replicas: 3
selector:
matchLabels:
tier: moises
template:
metadata:
labels:
tier: moises
containers:
- name: rs-moises
image: moisesimage
Entonces aplicamos con
kubectl apply -f failed.yaml
Ahora con el ejercicio
Primero necesitamos ver ¿que esta malo?
kubectl get replicasets # No devuelve informacion relevante, asi que
kubectl get pods # Si devuelve el estado de cada pod y podemos ver 2 errores ImagePullBackOff,ErrImagePull o cualquier otro.
¿Entonces necesitamos editar?
kubectl edit replicaset rs-moises
Edite el tamaño 4, y corregi la imagen a nginx.
kubectl get pods # Siguen los pods malos, pero hay 1 bueno
Ahora tengo 2 opciones, o los elimino uno por uno
kubectl delete pod name
O cambio las replicas a 0 y luego a 4
kubectl edit replicaset rs-moises #Editar RS a 0
kubectl edit replicaset rs-moises #Editar RS a 4
Este es el archivo final
apiVersion: apps/v1
kind: ReplicaSet
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"apps/v1","kind":"ReplicaSet","metadata":{"annotations":{},"labels":{"app":"moises","tier":"moises"},"name":"rs-moises","namespace":"default"},"spec":{"replicas":3,"selector":{"matchLabels":{"tier":"moises"}},"template":{"metadata":{"labels":{"tier":"moises"}},"spec":{"containers":[{"image":"moisesimage","name":"rs-moises"}]}}}}
creationTimestamp: "2025-10-18T03:17:11Z"
generation: 5
labels:
app: moises
tier: moises
name: rs-moises
namespace: default
resourceVersion: "17629"
uid: 4895903f-6bf8-41b1-9f92-59fcbfafbe1c
spec:
replicas: 4
selector:
matchLabels:
tier: moises
template:
metadata:
labels:
tier: moises
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: rs-moises
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 4
fullyLabeledReplicas: 4
observedGeneration: 5
readyReplicas: 4
replicas: 4
Importante, el Edit solo funciona con casos de Apply. Asi que todo bien
El replicaset no tenia ningun oneliner, porque deberia generarse deployments u otro componente. Esta es una abstracion, y como abstracion hay que generarlo a la fuerza.
No consegui ningun comando para reforzar todos los pods, lo mas eficiente fue bajar las replicas a 0.
—- actualizacion
descubri el comando
kubectl scale resource nombre, este comando permite escalar recursos de aplicacion
y
kubectl replace -f file.yml, este comando permite reemplazar sin reescribir el archivo. Basicamente uno por otro, fuerza la eliminacion de los pods.