Welcome to the Linux Foundation Forum!

ch5 Deployment Rollbacks doesn t work with kubectl apply -f ???

Hello

As the course example does not work for me,

$ kubectl set image deployment ghost --image=ghost:0.9 --record
$ kubectl get deployments ghost -o yaml

i'am following the k8s docs, running the following deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

i run the deployment using the cmd: $k apply -f filename.yml, all is fine
So as tought i change the nginx:v to some unexisting

$k set image deployment.apps/nginx-deployment nginx=nginx:5.0.0 --record
// output: deployment.apps/nginx-deployment image updated

see the status

$k rollout status deployment.apps/nginx-deployment
Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 3 new replicas have been updated...

ctrl-c to exit as the process do not end

see the pods: no one is getting replaced (i curl using NodePort it works)

nginx-deployment-75b69bd684-6jzs6   1/1     Running            0          16m
nginx-deployment-75b69bd684-dqgn8   1/1     Running            0          16m
nginx-deployment-75b69bd684-ffgjx   1/1     Running            0          16m
nginx-deployment-7f7c44b574-dg82k   0/1     ImagePullBackOff   0          3m8s

try to rollback as tought in the course

jerome@master:~/LFD259/SOLUTIONS/s_05/try/deploymentRollback$ $k rollout history deployment.apps/nginx-deployment
deployment.apps/nginx-deployment 
REVISION  CHANGE-CAUSE
1         <none>
2         kubectl set image deployment.apps/nginx-deployment nginx=nginx:5.0.0 --record=true

nothing rollback, running k get po output the same as before
change the nginx image to an existing -v, and all is back to normal

 $k set image deployment.apps/nginx-deployment nginx=nginx:latest --record
nginx-deployment-75b69bd684-6jzs6   1/1     Running   0          71s
nginx-deployment-75b69bd684-dqgn8   1/1     Running   0          75s
nginx-deployment-75b69bd684-ffgjx   1/1     Running   0          73s

Any idea why it s not working as expected ??

Thank you.

Comments

  • Hi @djedje,

    Prior to running the example command presented in the course

    As the course example does not work for me,

    $ kubectl set image deployment ghost --image=ghost:0.9 --record
    $ kubectl get deployments ghost -o yaml

    did you first create a ghost deployment?

    Regards,
    -Chris

  • djedje
    djedje Posts: 20

    Hello @chrispokorni

    No. Where is it explain in the course ??? Where is the deployment yaml file ???

    If there is no yaml file i 'guess' i have to run something like

    kubectl create deploy ghost --image=ghost:0.9

    but it s writing in the course > The create generator does not have a record function

    So it 's guetting a little bit confusing......

    Regards,
    Thank you.

  • Hi @djedje,

    That is correct, the kubectl create deploy ... command is one method of creating the deployment.

    Another method is through a deployment definition yaml manifest. If the exact yaml manifest is not made available, one may be easily created from an existing sample manifest by replacing certain properties and/or values.

    Regards,
    -Chris

  • djedje
    djedje Posts: 20
    edited February 2021

    @chrispokorni

    Thank you for the explainations.

    But i personaly note that updating an image version won't always work if the image is not found. As it didn't previously with the nginx one.

    Best Regards

  • Hi @djedje,

    It is quite evident that a rolling update, or a new application deployment for that matter, will not be successful if an incorrect or non-existent image name and/or registry are provided by the user.

    Regards,
    -Chris

  • djedje
    djedje Posts: 20

    Probably evident for many persons yes, but i didn't know.

    Note that the course exemple shown no pod running

    $ kubectl set image deployment/ghost ghost=ghost:0.9 --all
    $ kubectl rollout history deployment/ghost deployments "ghost":
    REVISION CHANGE-CAUSE
    1
    2 kubectl set image deployment/ghost ghost=ghost:0.9 --all

    $ kubectl get pods
    NAME READY STATUS RESTARTS AGE
    ghost-2141819201-tcths 0/1 ImagePullBackOff 0 1m​

    Instead on my machine it is showing clearly this mecanism, leading me to understand.

    jerome@master:~$ $k set image deployment.apps/ghost ghost=ghost:0.9 --all
    jerome@master:~$ $k rollout history deployment.apps/ghost
    deployment.apps/ghost
    REVISION CHANGE-CAUSE
    1
    jerome@master:~$ $k get pods
    NAME READY STATUS RESTARTS AGE
    ghost-6d596ccffb-lc2bq 0/1 ErrImagePull 0 5s
    ghost-859485c7fb-l68zk 1/1 Running 0 22m

    Thank you,

    Best Regards

  • chrispokorni
    chrispokorni Posts: 2,155

    Hi @djedje,

    It seems you had ghost deployment pod already running, before performing the rolling update with the kubectl set image command.

    Regards,
    -Chris

  • djedje
    djedje Posts: 20

    Hi @chrispokorni

    Yes. Thank you for your help (and your patience)

    Regards

Categories

Upcoming Training