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,

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

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

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx-deployment
  5. labels:
  6. app: nginx
  7. spec:
  8. replicas: 3
  9. selector:
  10. matchLabels:
  11. app: nginx
  12. template:
  13. metadata:
  14. labels:
  15. app: nginx
  16. spec:
  17. containers:
  18. - name: nginx
  19. image: nginx:1.14.2
  20. ports:
  21. - 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

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

see the status

  1. $k rollout status deployment.apps/nginx-deployment
  2. Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 3 new replicas have been updated...
  3.  
  4. ctrl-c to exit as the process do not end
  5.  

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

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

try to rollback as tought in the course

  1. jerome@master:~/LFD259/SOLUTIONS/s_05/try/deploymentRollback$ $k rollout history deployment.apps/nginx-deployment
  2. deployment.apps/nginx-deployment
  3. REVISION CHANGE-CAUSE
  4. 1 <none>
  5. 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

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

Any idea why it s not working as expected ??

Thank you.

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

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

  • 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

  • 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

  • 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

  • Posts: 2,449

    Hi @djedje,

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

    Regards,
    -Chris

  • Posts: 20

    Hi @chrispokorni

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

    Regards

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Welcome!

It looks like you're new here. Sign in or register to get started.
Sign In

Categories

Upcoming Training