Running Kubernetes locally has obvious development advantages, such as lower cost and faster iteration than constantly deploying and tearing down clusters on a public cloud. Ideally a Kubernetes developer can spawn all the instances locally and test code as they commit. This page will show you how to deploy a cluster on a local machine.
{% endcapture %}
The purpose of using [LXD](https://linuxcontainers.org/lxd/) on a local machine is to emulate the same deployment that a user would use in a cloud or bare metal. Each node is treated as a machine, with the same characteristics as production.
{% capture prerequisites %}
## Prerequisites
In order to simplify local deployment this method leverages the [Conjure Up tool](
http://conjure-up.io/).
This will provide a pseudo-graphical set up in a terminal that is simple enough for developers to use without having to learn the complexities of operating Kubernetes. This will enable new developers to get started with a working cluster.
{% endcapture %}
{% capture steps %}
## Getting Started
First, you need to configure LXD to be able to host a large number of containers. To do this we need to update the [kernel parameters for inotify](https://github.com/lxc/lxd/blob/master/doc/production-setup.md#etcsysctlconf).
On your system open up `/etc/sysctl.conf` *(as root) and add the following lines:
```
fs.inotify.max_user_instances = 1048576
fs.inotify.max_queued_events = 1048576
fs.inotify.max_user_watches = 1048576
vm.max_map_count = 262144
```
_Note: This step may become unnecessary in the future_
Next, apply those kernel parameters (you should see the above options echoed back out to you):
sudo sysctl -p
Now you're ready to install conjure-up and deploy Kubernetes.
Note: During this set up phase conjure-up will ask you to "Setup an ipv6 subnet" with LXD, ensure you answer NO. ipv6 with Juju/LXD is currently unsupported.