Local kubernetes cluster
You can easily generate a local kubernetes cluster with hive. The solution used is kubernete on docker.
For now, there are two steps to generate it:
- Start the cluster
- Start the addons (dashboard/DNS)
The docker virtual machine needs some mount updates before running the kubernetes containers. You can do that by running hive with the option -i.
Also, a proxy command ease how to connect to your services.
The local_cluster commands
$ ./hive local_cluster
error: too few arguments
usage: hive local_cluster [-h] {create,proxy,start_addons} ...
optional arguments:
-h, --help show this help message and exit
hive_command:
{create,proxy,start_addons}
create start a local kubernetes cluster
proxy start a proxy for your local kubernetes cluster
start_addons start the addons for your cluster (DNS, Dashboard,
...)
Start the local cluster
Here is the local_cluster create help
$ ./hive local_cluster create -h
usage: hive local_cluster create [-h] [--version VERSION] [--port PORT]
docker_host
positional arguments:
docker_host The docker host, for docker-toolbox use something like
192.168.99.100, for linux use localhost
optional arguments:
-h, --help show this help message and exit
--version VERSION kubernetes version in the form v1.1.8
--port PORT the port you want for the apiserver. default is 8080
The options are the version of the kubernetes cluster and the port for the apiserver. Only the version after v1.2.0 are supported.
Note that the first time you create your cluster, the -i option need to be added to hive.
example
On windows with docker-toolbox:
$ ./hive -i local_cluster create 192.168.99.100 --port 9000
the default machine is now ready for a local-kubernetes-cluster
5520870726d09024becb5440b461314fd9cf1b83858da44a5ae1f629764fe111
Setting local kubernetes as kubectl context
cluster "dev" set.
context "dev" set.
switched to context "dev".
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad5df415e283 tdeheurles/kubernetes:v1.2.0 "/hyperkube apiserver" 9 seconds ago Up 16 seconds k8s_apiserver.aaedc193_k8s-master-default_default_33434a15201de304c645f9059e2496d7_0919c81d
7061ed0a3539 tdeheurles/kubernetes:v1.2.0 "/hyperkube controlle" 10 seconds ago Up 17 seconds k8s_controller-manager.834844ae_k8s-master-default_default_33434a15201de304c645f9059e2496d7_21d86c63
a370fb456fd9 tdeheurles/kubernetes:v1.2.0 "/setup-files.sh IP:1" 10 seconds ago Up 17 seconds k8s_setup.f87e2b66_k8s-master-default_default_33434a15201de304c645f9059e2496d7_beee3599
15a8027ec64d tdeheurles/kubernetes:v1.2.0 "/hyperkube scheduler" 10 seconds ago Up 17 seconds k8s_scheduler.a5c8f607_k8s-master-default_default_33434a15201de304c645f9059e2496d7_ab2d1cd0
cab199e805e7 gcr.io/google_containers/etcd:2.2.1 "/usr/local/bin/etcd " 10 seconds ago Up 17 seconds k8s_etcd.7e452b0b_k8s-etcd-default_default_1df6a8b4d6e129d5ed8840e370203c11_2c503445
da932cf0b964 tdeheurles/kubernetes:v1.2.0 "/hyperkube proxy --m" 10 seconds ago Up 17 seconds k8s_kube-proxy.ae0f419c_k8s-proxy-default_default_0ebff37f3737903b25f94ad16a3e5db0_e849ca25
b54e666459fd gcr.io/google_containers/pause:2.0 "/pause" 10 seconds ago Up 17 seconds k8s_POD.6059dfa2_k8s-master-default_default_33434a15201de304c645f9059e2496d7_a3b5a719
059046ad2a9e gcr.io/google_containers/pause:2.0 "/pause" 10 seconds ago Up 17 seconds k8s_POD.6059dfa2_k8s-etcd-default_default_1df6a8b4d6e129d5ed8840e370203c11_66266f1e
220789c11e61 gcr.io/google_containers/pause:2.0 "/pause" 10 seconds ago Up 17 seconds k8s_POD.6059dfa2_k8s-proxy-default_default_0ebff37f3737903b25f94ad16a3e5db0_07e0acda
5520870726d0 tdeheurles/kubernetes:v1.2.0 "/start.sh --port 900" 16 seconds ago Up 23 seconds pedantic_tesla
And you can control your apiserver service:
{
paths: [
"/api",
"/api/v1",
"/apis",
"/apis/autoscaling",
"/apis/autoscaling/v1",
"/apis/batch",
"/apis/batch/v1",
"/apis/extensions",
"/apis/extensions/v1beta1",
"/healthz",
"/healthz/ping",
"/logs/",
"/metrics",
"/resetMetrics",
"/swagger-ui/",
"/swaggerapi/",
"/ui/",
"/version"
]
}
Start the addons
Here is the local_cluster start_addons help
$ ./hive local_cluster start_addons -h
usage: hive local_cluster start_addons [-h] [--port PORT]
optional arguments:
-h, --help show this help message and exit
--port PORT the port of the apiserver. default is 8080
Example
$ ./hive local_cluster start_addons --port 9000
service "kube-dns" created
replicationcontroller "kube-dns-v11" created
service "k8s-dashboard" created
replicationcontroller "k8s-dashboard" created
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ad28fd0fe0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.0.0 "/dashboard --port=90" Less than a second ago Up 7 seconds k8s_k8s-dashboard.e1b68fc9_k8s-dashboard-hoaff_default_955bab0e-f447-11e5-914a-7e995b3eadaf_669add49
de006173a3a1 gcr.io/google_containers/etcd-amd64:2.2.1 "/usr/local/bin/etcd " 1 seconds ago Up 8 seconds k8s_etcd.b2de3551_kube-dns-v11-cxsts_default_94c1b384-f447-11e5-914a-7e995b3eadaf_02c59a8e
9a22efb3baa5 gcr.io/google_containers/exechealthz:1.0 "/exechealthz '-cmd=n" 4 seconds ago Up 8 seconds k8s_healthz.7174149f_kube-dns-v11-cxsts_default_94c1b384-f447-11e5-914a-7e995b3eadaf_f365f541
5aa5c9f52bf3 gcr.io/google_containers/skydns:2015-10-13-8c72f8c "/skydns -machines=ht" 4 seconds ago Up 11 seconds k8s_skydns.ac0d3af2_kube-dns-v11-cxsts_default_94c1b384-f447-11e5-914a-7e995b3eadaf_2f248ee3
1368bb08d767 gcr.io/google_containers/pause:2.0 "/pause" 4 seconds ago Up 11 seconds k8s_POD.3a1c00d7_k8s-dashboard-hoaff_default_955bab0e-f447-11e5-914a-7e995b3eadaf_ea421283
588c23aba9f7 gcr.io/google_containers/kube2sky:1.14 "/kube2sky --domain=c" 5 seconds ago Up 11 seconds k8s_kube2sky.2432018b_kube-dns-v11-cxsts_default_94c1b384-f447-11e5-914a-7e995b3eadaf_6def0614
c5e88ff299dc gcr.io/google_containers/pause:2.0 "/pause" 5 seconds ago Up 12 seconds k8s_POD.e2764897_kube-dns-v11-cxsts_default_94c1b384-f447-11e5-914a-7e995b3eadaf_4ef90422
ad5df415e283 tdeheurles/kubernetes:v1.2.0 "/hyperkube apiserver" About a minute ago Up About a minute k8s_apiserver.aaedc193_k8s-master-default_default_33434a15201de304c645f9059e2496d7_0919c81d
7061ed0a3539 tdeheurles/kubernetes:v1.2.0 "/hyperkube controlle" About a minute ago Up About a minute k8s_controller-manager.834844ae_k8s-master-default_default_33434a15201de304c645f9059e2496d7_21d86c63
a370fb456fd9 tdeheurles/kubernetes:v1.2.0 "/setup-files.sh IP:1" About a minute ago Up About a minute k8s_setup.f87e2b66_k8s-master-default_default_33434a15201de304c645f9059e2496d7_beee3599
15a8027ec64d tdeheurles/kubernetes:v1.2.0 "/hyperkube scheduler" About a minute ago Up About a minute k8s_scheduler.a5c8f607_k8s-master-default_default_33434a15201de304c645f9059e2496d7_ab2d1cd0
cab199e805e7 gcr.io/google_containers/etcd:2.2.1 "/usr/local/bin/etcd " About a minute ago Up About a minute k8s_etcd.7e452b0b_k8s-etcd-default_default_1df6a8b4d6e129d5ed8840e370203c11_2c503445
da932cf0b964 tdeheurles/kubernetes:v1.2.0 "/hyperkube proxy --m" About a minute ago Up About a minute k8s_kube-proxy.ae0f419c_k8s-proxy-default_default_0ebff37f3737903b25f94ad16a3e5db0_e849ca25
b54e666459fd gcr.io/google_containers/pause:2.0 "/pause" About a minute ago Up About a minute k8s_POD.6059dfa2_k8s-master-default_default_33434a15201de304c645f9059e2496d7_a3b5a719
059046ad2a9e gcr.io/google_containers/pause:2.0 "/pause" About a minute ago Up About a minute k8s_POD.6059dfa2_k8s-etcd-default_default_1df6a8b4d6e129d5ed8840e370203c11_66266f1e
220789c11e61 gcr.io/google_containers/pause:2.0 "/pause" About a minute ago Up About a minute k8s_POD.6059dfa2_k8s-proxy-default_default_0ebff37f3737903b25f94ad16a3e5db0_07e0acda
5520870726d0 tdeheurles/kubernetes:v1.2.0 "/start.sh --port 900" About a minute ago Up About a minute pedantic_tesla