How to install Kubernetes on VMware Cloud on AWS

This guide will show you how to install a Kubernetes cluster on VMware Cloud on AWS. This is a temporary solution for customers looking to use Kubernetes on VMware Cloud on AWS before Pivotal Container Service is officially supported.


  • One Photon OS VM deployed in VMware Cloud on AWS – Here
  • Download the Photon Base VM from Here
  • At least one logical network created for compute VM’s
  • Internet access from all the PhotonOS VM’s deployed by the Kubernetes installer
  • DHCP scope defined for the logical network used for this deployment

Deploy the Photon Base VM OVA from vCenter Client

Make sure it is named correctly and note what folder it is in and it is powered off


Add static DNS server to the template

Power on the template

Launch web console and login

User: root

Password: kubernetes

Edit the dhcp config file

vi /etc/systemd/network/

Press i to enter insert mode and add the DNS= for your DNS server then hold Shift and press ZZ to save the file

Alternately you could also use if you don’t have access to your DNS server

Now type the following to reset the template then shut it down

echo "" > /etc/machine-id
shutdown now

You should also have another Photon OS VM that is powered on and SSH access enabled

Login to your Photon OS

Pull the latest installer image

docker pull cnastorage/kubernetes-anywhere

ow run the container and get to the bash prompt with the following command

docker run -it -v /tmp:/tmp --rm --env="PS1=[container]:\w> " --net=host cnastorage/kubernetes-anywhere:latest /bin/bash

type make config

Now we will start to fill in all the information about our vCenter in VMware on AWS

Se below notes about gotchas (the deployment will fail if these are not set correctly

Now type make deploy

You should see a lot happening in vCenter and the command line

If all worked you should see completed

Check vCenter for the new VM’s

Let’s test the Kubernetes cluster


export KUBECONFIG="/opt/kubernetes-anywhere/phase1/vsphere/kubernetes/kubeconfig.json"

Check the cluster info

kubectl cluster-info

Get node port mapping

kubectl describe service kubernetes-dashboard --namespace=kube-system| grep -i NodePort

Get the node the dashboard is running on

kubectl get pods --namespace=kube-system| grep -i dashboard

Get the IP address of the node

kubectl describe pod kubernetes-dashboard-1019458639-z3m9s --namespace=kube-system| grep Node

Combine the dashboard address with the port

Open a web browser to the dashboard

In my example it is http://

Type make destroy to delete the deployment

Remember sharing is caring!