google.com, pub-4920175566720914, DIRECT, f08c47fec0942fa0 Skip to main content

Rolling Updates and Rollbacks in Kubernetes


Rolling Updates and Rollbacks in K8s

In our environment everyone has several application deployed and running successfully. Each application comes with a version and time by time application vendor releases new version of it where new version consist of new features and previous bug fixes.

Now, its become must task to update our applications to leverage new features.

So, how will be make the strategy to upgrade our applications into production environment. Its quite difficult to update all the application at once as it would hamper the stability of the environment.

In Kubernetes there is default strategy of deployment called Rolling updates where we do not destroy all the application at one, instead we bring down the application older version and bring back the new version of the application one by one. By doing this application never goes down and upgrade is seamless.


It's require to specify the upgrade strategy into the deployment. If there is no such update strategy specify then the default strategy assume by system is “Rolling update”

To view the rollout status of your application deployment
>Kubectl rollout status deployment/myapp-deployment


To view the revisions and history of the deployment
>Kubectl rollout history deployment.apps/(deployment name)

Now, if we want to update our application like its version than what’s the process….

There are 2 method to accomplish this task.

Update the image version under spec section in deployment file and then run below command.
>Kubectl apply -f (deployment file)

Another way is to use set image command from where we can change the image version of the application.
>Kubectl set image deployment.app/myapp-deployment  nginx=nginx:1.9.1

However, Doing so will not change the image version into deployment.yml file. So need to be carefull to make changes of that definition file in future.

Now lets discuss the upgrade process under the hood.

When a new deployment is initiated for say 5 replica  (replica set 1) of  PODs. Its then create a replica set (replica set 2) automatically which is equal to the actual deployment.

When we initiate the upgrade then one POD in Replica set 1 gets down and a new POD with updated version created into Replica set -2 and go on …


Rollback Strategy

Once we upgraded the application, we found something which is not correct or application is not behaving as it should be in the new version of build.

As the updated application is not behaving in normal fashion and its require to undo the changes to rollback to previous version.

Kubernetes provides the option to rollback the deployment to the previous version. To do so we can use “undo” command

> Kubectl rollout undo deployment.app/(deployment-name)

This command will Destry all the PODs and containers from new Replica-set and bring back all old POD and containers in old Replica set.

List of Commands.

To create a deployment.
> kubectl create -f deployment-defination.yml

To list the deployment available.
> kubectl get deployments

To update the deployment definition file.
> kubectl apply -f deployment-definition.yml
> kubectl set image deployment/myapp-definition nginx=nginx:1.9.1

To view the rollout status of deployment.
> kubectl rollout status deployment.app/app-deployment

To view the history of deployment of the app.
> kubectl rollout history deployment.app/app-deployment

To undo the rollout of deployment.
> kubectl rollout undo deployment/myapp




Comments

Popular posts from this blog

Changing the FQDN of the vCenter appliance (VCSA)

This article states how to change the system name or the FQDN of the vCenter appliance 6.x
You may not find any way to change the FQDN from the vCenter GUI either from VAMI page of from webclient as the option to change the hostname always be greyed out.
Now the option left is from the command line of VCSA appliance.
Below steps will make it possible to change the FQDN of the VCSA from the command line.
Access the VCSA from console or from Putty session.Login with root permissionUse above command in the command prompt of VCSA : /opt/vmware/share/vami/vami_config_netOpt for option 3 (Hostname)Change the hostname to new nameReboot the VCSA appliance.After reboot you will be successfully manage to change the FQDN of the VCSA .

Note: Above step is unsupported by VMware and may impact your SSL certificate and face problem while logging to vSphere Web Client.

If you are using self-signed certificate, you can regenerate the certificate with the help of below KB 2112283 article.



Happy Sharin…

VM Creation Date & Time from Powercli

Most of the times we have several requirement when we talk about IT environment like designing , deployment , compliance check or for Security auditing the environment.
Somewhere during security auditing we require to provide several information to security team to get successful audit.
One of them is the compliance of Virtual machine auditing of creation date and time.
Here into this post we will explore how to get the creation date and time of virtual machine hosted into the vCenter or ESXi.
To get the details we will use VMware Powercli to extract the details.
By default there is no function added into Powercli to get such details, so here we will add a function of vm creation date.
Below is the function which needed to be copy and paste into the Powercli.
=======================================================================
function Get-VMCreationTime { $vms = get-vm $vmevts = @() $vmevt = new-object PSObject foreach ($vm in $vms) { #Progress bar: $foundString = "       Found: "+$v…

Could not connect to one or more vCenter Server systems: https://FQDN:443/sdk

Recently I got a case where vCenter 6.0 where the webclient was not showing inventory while loading. Issue occur when the customer was performing migration activity of virtual machine.
We verified that the vpxd services of vCenter, which is VCSA (Appliance), went into stopped stated just after starting means its crashing.
On VCSA Shell: service-control --status vmware-vpxd shows "stopped" service-control --start vmware-vpxd starts the service starts for a couple of seconds and stops again
VCSA 6.0 is linked with extrnal PSC 6.0. Verified the services of PSC and found all looks into good state.
Tried to power off both the VCSA and PSC and Power on in sequence where we started first PSC and later VCSA. After restarting the VCSA, status of the VPXD services was same as it was getting stopped after couple of seconds.
Checked the VPXD logs and found that the heartbeat between ESXi and VCSA was getting timed out for more than 1032 ms or more.
VCSA has generated the core dump at /var/core. …