Estudio de CKAD – Día 6

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.