Kubesail: Cluster gratuito de Kubernetes

Kubesail  es un servicio web que nos proporciona un cluster gratuito de kubernetes.

Sus creadores ofrecen un entorno ,donde podremos desplegar un pequeño proyecto online en segundos ,aprender sobre el manejo y características de Kubernetes sin tener que utilizar EKS de Amazon

Si el plan gratuito se nos queda corto, podemos ampliarlo en cualquier momento sin problemas.

ELK: Instalar Nginx

La versión gratuita de ELK no tiene activado el módulo de seguridad, con lo que la web de Kibana es accesible sin usuario/contraseña.

Para remediar esto, podemos instalar Nginx en la misma máquina donde tenemos Kibana.

Instalamos nginx con :

sudo apt-get -y install nginx

sudo -v

Definimos un usuario ‘kibadmin’ y contraseña para el acceso web

echo «kibadmin:`openssl passwd -apr1`» | sudo tee -a /etc/nginx/htpasswd.users

Movemos el fichero default

sudo mv /etc/nginx/sites-available/default /etc/nginx/sites-available/original_backup_default

Y creamos uno nuevo con el código:

sudo vim /etc/nginx/sites-available/default

server {

   listen 80;

   server_name Your_own_Ubuntus_IPAddress;

   auth_basic «Restricted Access»;

   auth_basic_user_file /etc/nginx/htpasswd.users;

   location / {

       proxy_pass http://localhost:5601;

       proxy_http_version 1.1;

       proxy_set_header Upgrade $http_upgrade;

       proxy_set_header Connection ‘upgrade’;

       proxy_set_header Host $host;

       proxy_cache_bypass $http_upgrade;        

   }

}

Reiniciamos el servicio de nginx

sudo nginx -t

sudo systemctl restart nginx

Y comprobamos el acceso por el puerto 80:

http://ip_elk

ELK: Instalar Kibana

Instalamos Kibana sobre la primera máquina elk .3.154

sudo apt-get update && sudo apt-get install kibana

Configuración:

Editar el fichero /etc/kibana/kibana.yml

server.host: “0.0.0.0” //accesible desde cualquier host de la red

elasticsearch.url :http://localhost:9200

Recargar configuración ,habilitar el servicio al inicio del sistema y reinciarlo.

sudo /bin/systemctl daemon-reload

sudo /bin/systemctl enable kibana.service

systemctl restart kibana.service

y ya podemos ir al navegador http://Ip_elk:5601



ELK: Cluster Elasticsearch

Una vez instalado Elasticsearch en nuestra máquina , vamos a crear un cluster de 3 nodos.

Podemos clonar nuestra máquina con 2 nodos más.

elk 172.25.3.154

elk2 172.25.3.155

elk3 172.25.3.156

Editar el fichero host de los nodos, con sus respectivas ip’s y nombres

vim /etc/hosts

Modificar el fichero en los 3 nodos /etc/elasticsearch/elastichsearh.yml

Información para configuración del cluster

path.data : /var/lib//elasticsearch   //Ruta para almacenar los datos

path.log : /var/log/elasticsearch //Ruta para almacenar los logs

cluster.name : cluster-elk //Nombre del cluster

node.name : ${HOSTNAME} //Nombre del nodo

network.host : [“127.0.0.1”,”172.25.3.154]  //Cada host con su ip

Cluster: network.host 172.25.3.154

discovery.seed_hosts : [“172.25.3.154”,”172.25.3.155”,”172.25.3.156”]   //lista de nodos que formarán el cluster, Por defecto intentará usar los puertos 9300-9305 intentando comunicar con los nodos

cluster.initial_master_nodes: [“172.25.3.154”]   //Cada nodo máster debe saber el número mínimo de nodos master que debe de haber para formar un cluster.

Si no se configura correctamente, se puede producir una separación del cluster.

Reiniciar el servicio con:

systemctl restart elasticsearch.service

Nota: Si las máquinas están clonadas borrar la carpeta /var/lib/elastic/nodes y reiniciar el cluster

Una vez reiniciado el servicio comprobar que el cluster se ha iniciado correctamente:

curl -XGET http://localhost:9200

curl -XGET ‘http://localhost:9200/_cluster/health’

Ahora los logs se dejarán en el fichero del cluster, no en elasticsearch.log tail -f /var/log/elasticsearch/cluster-elk.log

y systemctl status elasticsearch.service

ELK: Instalar Elasticsearch 7

Elasticsearch es un servidor de búsquedas open source , basado en Lucene y desarrollado en Java.

Elasticsearch pertenece al stack Elastic o ELK (elastichsearch+logstah+kibana)

Este stack nos proporcionará una herramienta de recolección de datos (logstash: logs,eventos,ficheros..) , una base de datos (elastic) y una web donde visualizar los datos o realizar consultas (kibana).

La instalación la realizaremos sobre un ubuntu 16.04

wget -qO – https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

sudo apt-get install apt-transport-https

echo «deb https://artifacts.elastic.co/packages/7.x/apt stable main» | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Actualizar e instalar elastic con apt-get:

sudo apt-get update && sudo apt-get install elasticsearch

Una vez instalado , lo habilitamos al inicio del sistema y lo iniciamos

sudo /bin/systemctl daemon-reload

sudo /bin/systemctl enable elasticsearch.service

sudo systemctl start elasticsearch.service

Comprobar servicio con:

curl -XGET http://localhost:9200

y

tail -f /var/log/elasticsearch/elasticsearch.log

Configuración de la memoria RAM para el servicio

Será necesario realizar modificaciones en tres archivos:

En /etc/elasticsearch/elasticsearch.yml , descomentar la siguiente línea:

bootstrap.memory_lock: true

Esto permite a Elasticsearch reservarse memoria Ram

En /etc/default/elasticsearch , descomentar la siguiente línea:

MAX_LOCKED_MEMORY=unlimited

No se establece límite para elasticsearch

En el fichero /etc/elasticsearch/jvm.options

-Xms2g

-Xmx2g

Se establece la cantidad mínima y máxima de memoria Ram ,en este caso 2Gigas

Crear el fichero :

/etc/systemd/system/elasticsearch.service.d/override.conf

con el contenido:

[Service]

LimitMEMLOCK=infinity

y reiniciar el servicio

sudo systemctl daemon-reload

El último de los cambios a aplicar a la configuración de la memoria es deshabilitar el uso de memoria SWAP ya que puede afectar muy negativamente al rendimiento debido a que es mucho más lenta que la memoria RAM. Para ello será necesario comentar la línea de configuración de la SWAP en el archivo:

/etc/fstab

Comprobar que no se usa swap con free -m