Kubernetes en local

De Ardemans Wiki
Revisión a fecha de 16:18 2 mar 2016; Pmblanco (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Introducción

Pasos para tener un servicio de Kuberentes mono-nodo en nuestra máquina linux. Estos pasos están probados sobre una Ubuntu 14.04

Prerequisitos

Solo funciona con Linux!!! Hay que tener instalado Docker

Referencias

Esta todo sacado de aqui [1]

Pasos a seguir

Preconfiguracion de nuestra máquina Linux

Hacen falta algunos parámetros especiales en el arranque de nuestro Kernel de Linux, para lo cual he tenido que editar el fichero /boot/config-$(uname -r)

CONFIG_RESOURCE_COUNTERS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_SWAP=y
CONFIG_MEMCG_SWAP_ENABLED=y
CONFIG_MEMCG_KMEM=y

y también hay que cambiar las opciones de arranque desde el grub, para lo cual he cambiado el fichero ***/etc/default/grub***, cambiando el valor de la variable:

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

y después ejecutando:

$ update-grub

Ejecución de contenedores

Ejecutamos el servicio ETCD

docker run --net=host -d gcr.io/google_containers/etcd:2.0.12 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data

Ejecutamos el servicio Master

docker run \
    --volume=/:/rootfs:ro \
    --volume=/sys:/sys:ro \
    --volume=/dev:/dev \
    --volume=/var/lib/docker/:/var/lib/docker:ro \
    --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
    --volume=/var/run:/var/run:rw \
    --net=host \
    --pid=host \
    --privileged=true \
    -d \
    gcr.io/google_containers/hyperkube:v1.1.3 \
    /hyperkube kubelet --containerized --hostname-override="127.0.0.1" \
                       --address="0.0.0.0" --api-servers=http://localhost:8080 \
                       --config=/etc/kubernetes/manifests


Ejecutamos el proxy de servicios

docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v1.1.3 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2

Parada y arranque

Parar el servico es fácil, solo hay que tener en cuenta parar primero el contenedor que arranca ***hyperkube kubelet***, y después podemos parar todos los demas que hacen referencia a kubernetes

Para arrancar el servicio tendremos que hacer la misma secuencia que cuando lo creamos, pero con docker start

docker start <id_contenedor_etcd>
docker start <id_contenedor_hypekube_kubelet>
docker start <id_contenedor_hyperkube_proxy>