anchor.diff:  
   == Kubernetes basic commands
   
  -In this part we will familiarize ourselves with the `kubectl` cli tool and basic Kubernetes commands. We will first deploy a basic nginx pod and execute some commands to help developers gain comfort with the Kubernetes environment from an end-user perspective. This helps gets developers up and running taking advantage of the Kubernetes application deployment capabilities without having to worry about the infrastructure related complexities.
  -
  -=== Basic kubectl commands
  +In this part we will familiarize ourselves with the `kubectl` CLI tool and basic Kubernetes commands. We will first deploy a basic nginx pod and execute some commands to help developers gain comfort with the Kubernetes environment from an end-user perspective. This helps gets developers up and running taking advantage of the Kubernetes application deployment capabilities without having to worry about the infrastructure related complexities.
   
   Now that we have a local cluster up and running we can start issuing some basic commands and deploy some simple resources.
   
  -Note that the kubectl commands below will be routed via your virtualbox network interface. If you are using a VPN or have a local firewall, this may prevent kubectl from contacting the minikube endpoint. Stopping the VPN or adding a firewall rule may resolve this.
  +NOTE: The kubectl commands below will be routed via your virtualbox network interface. If you are using a VPN or have a local firewall, this may prevent kubectl from contacting the minikube endpoint. Stopping the VPN or adding a firewall rule may resolve this.
   
  -==== Display nodes
  +=== Display nodes
   
  -This command will show all of the nodes available in your kubernetes cluster:
  +This command will show all the nodes available in your kubernetes cluster:
   
       kubectl get nodes
   
  -==== Display pods
  -
  -This command shows all of the pods that are deployed into your cluster (into the default namespace), initially this will not show anything:
  -
  -    kubectl get pods
  -
  -==== Display pods in specifc namespace
  -
  -This command, similar to the one above will show all of the pods in the kube-system namespace:
  -
  -    kubectl get pods --namespace kube-system
  -
  -==== Create your first pod
  +=== Create your first pod
   
   This command creates an nginx pod into your cluster:
   
  
positive.code: 
      kubectl get pods
  
  You see see additional details by running this command, replace the podxxx with the name of a pod from the above output:
  
      kubectl describe pod podxxx
  
  ==== Shell to a running pod
  
  This command will open a tty to a shell in your pod:
  
      kubectl get pods
      kubectl exec -it nameOutputFromAbove -- /bin/bash
  
  ==== Expose pod
  
  This command will expose the nginx pod to a node port, we will talk about service in more detail in following posts but this will allow us see the nginx home page:
  
      kubectl expose pod pod-xxx --type=NodePort --name=demo
  
  Where `pod-xxx` is the pod name of your nginx pod
  
  ==== View service webpage
  
  This minukube command will display the service for you in a web page:
  
  
negative.code: :imagesdir: ../images
  :toc:
  
  Kubernetes cluster can be created on your laptop, VM, cloud provider or a rack of bare metal servers. For development purpose, its easiest to start with a one-node cluster using https://github.com/kubernetes/minikube[Minikube]. Hosted solutions or cloud-based solutions provide the scalability and higher availability for production purpose. A complete list of solutions to create Kubernetes cluster is explained at http://kubernetes.io/docs/getting-started-guides/.
  
  This section will explain how to create and shutdown a development Kubernetes cluster using Minikube. The deployment of such an application typically happens on a cloud platform such as Amazon Web Services (AWS). A common way to start a highly available cluster using https://github.com/kubernetes/kops[Kops] on AWS is explained in link:../cluster-install[].
  
  == Setup local development environment
  
  Minikube runs a single-node Kubernetes cluster inside a VM on your laptop. This allows users to try out Kubernetes on your local machine easily. Minikube packages and configures a Linux VM, the container runtime, and all Kubernetes components, optimized for local development.
  
  === Setup on Mac OSX
  
  Provision and install a local Kubernetes cluster on a Mac OS via https://brew.sh/[homebrew].
  
  ==== Install homebrew and cask
  
      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  
  ==== Install VirtualBox
  
      brew cask install virtualbox
  
  ==== Install minikube
  
      brew cask install minikube
  
  ==== Install Kubectl CLI
  
      brew install kubernetes-cli
  
  === Setup on Windows
  
  curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.goo\
      gleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl
  
  === Start minikube
  
  We are using the VirtualBox driver which is the default selection for minikube, if you would like you can use an alternate supported component (xhyve driver or VMware Fusion) using the `--vm-driver=xxx` flag. For this walkthrough with VirtualBox use:
  
      minikube start
  
  This will deploy a local single-node Kubernetes cluster that you can interact with to start developing and testing your application. If you see the following output, then you should be good to go:
  
  image::start-minikube.png[startMiniKube]
  
  