Cómo instalar Kubernetes en CoreOS en Vagrant
Anteriormente teníamos un artículo sobre la instalación de Kubernetes en CentOS y Ubuntu, y esta vez optamos por CoreOS. CoreOS container Linux es un sistema operativo que usa contenedores para todas las aplicaciones que le instalas y no tiene un administrador de paquetes como RPM o APT. Junto con Ubuntu y CentOS, es una de las plataformas populares para implementar Kubernetes. Vamos a configurar Kubernetes en CoreOS con Vagrant.
Instalación de dependencias
Necesitamos Virtual Box, Vagrant y Git como dependencias. Así que vamos a instalarlos. Tengo fedora en mi estación de trabajo, por lo que el comando sería el siguiente:
sudo dnf install VirtualBox vagrant git
Para VirtualBox, necesitaría tener RMPfusion habilitado. Si está utilizando Ubuntu, debe escribir el siguiente comando
sudo apt install virtualbox vagrant git
El resto de esta guía es independiente de la distribución.
Cómo instalar kubectl
En nuestra máquina local, también necesitamos instalar kubectl, para administrar nuestro clúster que se creará como un conjunto de VM en Virtual Box. Utilice este comando para obtener kubectl 1.5.2, que es la versión más reciente en el momento de escribir este artículo.
curl -O https://storage.googleapis.com/kubernetes-release/release/v1.5.2/bin/linux/amd64/kubectl
A continuación, debemos agregar un bit ejecutable para el binario kubectl que acabamos de descargar
chmod +x kubectl
Y luego muévalo a algún directorio que esté en la ruta
sudo mv kubectl /usr/local/bin/kubectl
Sacando a relucir el clúster
A continuación, clonemos el repositorio que tiene un Vagrantfile que necesitamos para iniciar nuestro clúster.
git clone https://github.com/coreos/coreos-kubernetes.git
A continuación, vaya al subdirectorio que contiene Vagrantfile
cd coreos-kubernetes/multi-node/vagrant/
Allí necesitaremos usar la plantilla (que es config.rb.sample) para crear un archivo config.rb que vagabundo lee cuando abrimos el clúster.
cp config.rb.sample config.rb
Ahora, cuando hicimos eso, editámoslo.
nano config.rb
En el archivo, necesitamos descomentar algunas líneas.
$update_channel="alpha" $controller_count=1 #$controller_vm_memory=512 $worker_count=3 #$worker_vm_memory=1024 $etcd_count=1 #$etcd_vm_memory=512
Si necesita más recursos para su aplicación, no dude en descomentar todas las líneas y aumentar los tamaños de RAM asignados. Sin embargo, asegúrese de que su estación de trabajo tenga suficiente RAM.
Después de eso, estamos listos para abrir el clúster.
vagrant up --provider=virtualbox
Esto puede llevar algún tiempo dependiendo de la velocidad de la conexión y E / S de su entierro. Cuando termine, necesitaremos configurar el contexto de kubectl para administrar nuestro clúster en las VM.
export KUBECONFIG="${KUBECONFIG}:$(pwd)/kubeconfig" kubectl config use-context vagrant-multi
Una vez hecho esto, puede buscar nodos con el siguiente comando
kubectl get nodes
Tenga en cuenta que en el primer intento, es posible que este comando no funcione. En su lugar, es posible que obtenga un error que diga que la conexión se rechaza y le pregunte si especificó el número de puerto correcto. Esto se debe a que Vagrant necesita tiempo para arrancar y conectar el clúster. Espere unos minutos y vuelva a intentarlo.
Implementar la aplicación
La implementación de aplicaciones en este clúster recién creado es sencilla. Usaremos la misma aplicación de tienda de calcetines que usamos para CentOS y Ubuntu.
kubectl create namespace sock-shop
El comando anterior creó un espacio de nombres de tienda de calcetines, y el siguiente comando instalará la aplicación:
kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"
Ahora revisamos las vainas
[miki@latitude-e5470 vagrant]$ kubectl get pods No resources found.
¿Que es esto? ¿Sin vainas? Bueno, por supuesto, no hay vainas cuando las ponemos todas en un espacio de nombres llamado sock-shop. Entonces este comando te dará vainas
kubectl get pods -n sock-shop
Hay muchos de ellos y es posible que deba esperar un tiempo para que se implementen.
Accediendo a la aplicación en su navegador
Se puede acceder a la aplicación desde su estación de trabajo utilizando cualquier navegador. Para eso, necesitamos saber la dirección IP de nuestro nodo maestro y el puerto que usa la aplicación. Primero llegamos con el comando ya conocido
[miki@latitude-e5470 vagrant]$ kubectl get nodes NAME STATUS AGE 172.17.4.101 Ready,SchedulingDisabled 3h 172.17.4.201 Ready 3h 172.17.4.202 Ready 3h 172.17.4.203 Ready 3h
El primero es el maestro, por lo que la dirección que estoy buscando es 172.17.4.101. A esta dirección también necesitamos agregar el puerto del contenedor de front-end.
[miki@latitude-e5470 vagrant]$ kubectl describe svc front-end -n sock-shop Name: front-end Namespace: sock-shop Labels: name=front-end Selector: name=front-end Type: NodePort IP: 10.3.0.163 Port: <unset> 80/TCP NodePort: <unset> 30001/TCP Endpoints: 10.2.38.8:8079 Session Affinity: None No events.
Es el puerto 30001 en mi caso. Entonces, la dirección que estamos buscando es http://172.17.4.101:30001
Cómo quitar la aplicación del clúster
Si desea eliminar la aplicación del clúster, por ejemplo, para hacer espacio para una nueva aplicación, eso también se hace con bastante facilidad. Simplemente elimine el espacio de nombres donde colocamos la aplicación. Como esto
kubectl delete namespace sock-shop
Si desea eliminar todo el clúster y liberar la RAM de su estación de trabajo para algún trabajo nuevo, hágalo con el siguiente comando
[miki@latitude-e5470 vagrant]$ vagrant destroy -f
Conclusión
Hemos instalado con éxito Kubernetes en CoreOS con Vagrant, probamos la aplicación de prueba y limpiamos el entorno. Con hizo esto ahora para los 3 principales sistemas operativos utilizados para implementaciones de Kubernetes. Ubuntu, CentOS y en este artículo, CoreOS. Gracias por leer y que tengas un buen día.