Friday 31 May 2019

Getting started with Karbon

If you look at Nutanix' solution brief for Nutanix Karbon it says "Who knew Kubernetes could be so simple?" and yes it is that simple!

I don't know much about containers and I still struggle to see many uses for them. Regardless of what I think, my manager is keen to explore its abilities and provide support if our developers want to use them. I had to start from scratch and do a lot of reading. To get familiar with all the jargon I started playing around with Docker and Kubernetes on my MAC. Very easy to install and you will be creating containers in no time. Having access to an enterprise Azure subscription I started looking at their offerings. Azure Container Services is no longer available and has been replaced by Azure Kubernetes Services. I did manage to get AKS to work but not without involvement from Microsoft Support. Too complicated and time consuming for me. I also feel that financially AKS may not be the cheapest option.

How about setting up a Kubernetes cluster on prem? Yes, tried that too. I deployed 3 Centos VM and installed Kubernetes on top of it. There are some great references on how to do this but again I found it complicated and time consuming, took me a few days. Although it all seems to work as expected, this is definitely not a setup I would take into production.

Being a big Nutanix customer it made sense to look into Nutanix Karbon and as with all things Nutanix it is supposed to be simple to install. When I first looked at Karbon it was still a technical preview and although I could see immediately that it would be a whole lot simpler to get up and running I did run into some issues. My deployments did fail and I had to get support involved. The things that were highlighted by support were:


  • Upgrade to latest PRISM
  • Upgrade AOS
  • Disable proxy settings
  • Limitation in networking port groups returned.

In the mean time Karbon had gone GA so before dealing with the above I updated Karbon via LCM. Worked flawlessly. I am a big fan of LCM and if you attended .NEXT you may have seen me on stage during the LCM session.

Upgrading PRISM and AOS was a breeze as per usual. The proxy settings need to be disabled for Karbon to work. This is a known issue and hopefully will be solved before too long. I have a requirement for a proxy in my environment and when I disable it I cannot upgrade my components.
We also encountered an issue where I could not select correct network for node VM. This was due to the fact that I have many network ports in my ESX environment and the Karbon UI did not like that.  We worked around this issue by prefixing network name with AA

Let's have a look at the install of Karbon...


  • Log into PRISM and go to Services > Karbon
  • Enable Karbon






  • Click upload file and change image name to acs-centos and click save



  • Click create cluster and select Development cluster



  • Enter name for K8s cluster and specify Nutanix cluster




  • Specify network. I have also changed the worker resources to 2 from the default 1 instance



  • Accept the defaults for networking



  • Enter your credentials and accept the other defaults. Click create



  • Once your cluster is deployed you should see a green heart your cluster has been deployed successfully.


  • Select the cluster and from actions menu, download kubeconfig


  • You can set your KUBECONFIG variable to the downloaded file or merge the context into your existing config file (.kube/config) if you need to connect to multiple clusters.

At this stage you should be ready to start deploying containers and this is where you will need some Kubernetes knowledge. Let's verify a few things to see if everything is in order....

  • From your CLI, type kubectl config get-contexts. This will show you which clusters you'll have access to. One is the Karbon cluster and the other is my docker-for-desktop setup on my Macbook, which is defult context at this stage.



  • Switch to the Karbon context with command "kubectl config use-context KarbonPilot4-context"
  • Run kubectl cluster-info and you'll get the address where Kubernetes Master is running


We are pretty much ready to deploy a container on our Nutanix platform. The best way to deploy containers is by having all your code in a yaml file but that is outside of scope for this post.

  • Run "kubectl create deployment nginx --image=nginx" to create deployment
  • Verify with "kubectl get deployments"
  • Get more info on Nginx deployment "kubectl describe deployment nginx"
  • Make the container accessible "kubectl create service nodeport nginx --tcp=80:80"
  • Check if your service was created with "kubectl get svc"


  • Open a browser window. Pick the public IP of any of the master/slaves nodes followed by the port above. 
  • Your container is available


I am hoping to go into a bit more detail about some of the other features that Karbon uses in a future post





1 comment:

  1. Thank you! This is great. I have been playing with the information available and it all looked a bit complicated to get containers working. I'm looking forward to having a way to making containers easy for everyone.

    ReplyDelete