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: :imagesdir: ../images
  :toc:
  
  As part of this initial four part series we will accomplish a few key goals:
  
  == Setup local development environment
  
  Provision and install a local Kubernetes cluster on a mac via homebrew, intended for use as a local development environment for developers to initially gain familiarity with the base Kubernetes constructs. As the developer matures the local environment can be used to develop and test functionality release in the latest branches of the main Kubernetes project.
  
  === Install homebrew and cask
  
      /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  
  Details are available at https://brew.sh/
  
  === Install VirtualBox
  
      brew cask install virtualbox
  
  === Install minikube
  
      brew cask install minikube
  
  === Install Kubectl CLI
  
      brew install kubernetes-cli
  
  === 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 Kubernetes 1.7.x cluster that you can interact with to start developing and testing your application against. If you see the following output you should be good to go:
  
  image::start-minikube.png[startMiniKube]
  
  
negative.code: 
  Once you have the nodes (in minikubes case there will be only one), we can describe all of the attribute of that node with:
  
      kubectl describe node <node-name>
  
  Where `<node-name>` is the output from the previous command. This shows alot of information we are not interested in. Instead just grep for the external IP address:
  
      kubectl describe node node-xxx | grep InternalIP
  
  Great, now we have the IP address for the node. Now, we need to get the port that the service is exposed on. We can retrieve that with:
  
      kubectl describe service demo
  
  Under the section 'NodePort' you will see which port on the node the service is deployed. So now you have both the IP address and the port and you can either curl that or open it up in a browser
  
  === Kubernetes dashboard
  
  Kubernetes dashboard is a general purpose, web-based UI for Kubernetes clusters. It provides an overview of applications running on the cluster, as well as create or modify individual Kubernetes resources and workloads, such as replica sets, jobs, services, and pods. The dashboard can be used to manage the cluster as well.
  
  Let's install the Kubernetes dashboard:
  
      minukube dashboard
  
  Browse around and become familiar with some the of kubernetes terminology which we will dig into deeper in the following tutorials.
  
  Let's create a Kubernetes cluster as explained in link:../cluster-install[Install Kubernetes cluster using Kops].
  
  