0

Kubernetes – Almacenamiento con Linstor.

Kubernetes – Almacenamiento con Linstor.

Hace ya un tiempo que escribí sobre k8s, otros proyectos han tomado tiempo y recursos, hace unas semanas retome el clúster que tengo en casa para terminar las configuraciones necesarias y mover lo más que pueda de algunas máquinas virtuales que tengo en vSphere y que entiendo desempeñarían mejor estando en Kubernetes.

Inicialmente las pruebas fueron realizadas con longhorn, algunos problemas los cuales no inspiran mucha confianza me hicieron no escribir sobre esa implementación, claramente Rancher dice que es un proyecto aun en beta.

Hace unas semanas leí sobre Linstor [ http://vitobotta.com/2019/08/07/linstor-storage-with-kubernetes/ ], la instalación fue realizada en Ubuntu que es la misma distribución que estoy usando. He decidido usar esta implementación porque usa LVM como backend en los equipos que aportaran almacenamiento para el clúster, además de esto los nodos que están aportando almacenamiento no necesariamente deben tener k8s, al menos eso es lo que entiendo y algo que debo validar.

Instalando Linstor.

Prepararemos nuestros equipos con los siguientes pasos:

apt-get install linux-headers-$(uname -r)
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
apt install drbd-utils drbd-dkms lvm2
modprobe drbd
lsmod | grep -i drbd
echo drbd > /etc/modules-load.d/drbd.conf

 

En este punto ya los equipos están listos para instalar los componentes de Linstor. Para estar seguro de que todo estaba bien procedí a reiniciar el nodo.

Seleccionamos un equipo para que sea controlador del cluster de Linstor, además este mismo equipo puede aportar almacenamiento así que también instalaremos el componente de satellite.

apt install linstor-controller linstor-satellite linstor-client

Ahora habilitamos e inicializamos los componentes.

systemctl enable --now linstor-controller
systemctl start linstor-controller

En los demás equipos instalamos el componente de satélite.

apt install linstor-satellite linstor-client

Habilitamos el servicio y lo iniciamos.

systemctl enable --now linstor-satellite
systemctl start linstor-satellite

Desde el controller agregamos los equipos satélites.

linstor node create kube1 172.22.35.25
linstor node create kube2 172.22.35.26
linstor node create kube3 172.22.35.27

Esperamos unos minutos y ejecutamos:

linstor node list

Este comando nos mostrará la lista de nodos disponibles, será algo así:

Ya contamos con un clúster de Linstor pero aun no estamos presentando almacenamiento a este, procederemos a crear almacenamiento administrado por LVM, Linstor soporta ZFS, esta es una herramienta que nunca he usado en el pasado de manera seria así que prefiero LVM que tiene años disponible en las distribuciones Linux.

En cada máquina virtual para Kubernetes agregue dos discos, uno para el sistema operativo y otro para almacenamiento que ahora será usado en su totalidad con Linstor.

Lo primero es preparar el disco físico para ser usado en LVM.

pvcreate /dev/sdb

Luego creamos un volumen group (vg).

vgcreate kube /dev/sdb

He seleccionado kube para que sea el nombre del Volume Group.

Procederemos a crear un thin pool, esto nos permitirá crear volúmenes más grandes que el espacio físico del cual disponemos.

lvcreate -l 100%FREE --thinpool kube/lvmthinpool

Una vez realizados estos pasas en cada nodo que aportara almacenamiento al cluster, volvemos al controller para crear un storage-pool.

linstor storage-pool create lvmthin kube1 linstor-pool kube/lvmthinpool
linstor storage-pool create lvmthin kube2 linstor-pool kube/lvmthinpool
linstor storage-pool create lvmthin kube3 linstor-pool kube/lvmthinpool

validamos que nuestro storage-pool fue creado.

linstor storage-pool list

Debemos recibir lo siguiente:

Listo, ya contamos con una plataforma para provisionar almacenamiento a Kubernetes, lo interesante es que también podría provisionar almacenamiento a otras plataformas tales como Proxmox.

Kubernetes – que necesitamos?

Para habilitar que Kubernetes pueda usar almacenamiento proveniente de Linstor, debemos contar con el plugin CSI y crear StorageClass, recomiendo tener una versión de Kubernetes mínimo 1.13 para que todo funcione bien ya que ahí plugins que no están habilitados por defecto antes de esta versión. Al momento de crear los CRD estos fallaban con un mensaje que especificaba la falta de CSINodeInfo, actualizando RKE a 1.14.6 se resolvió.

Instalaremos todo lo necesario para usar Linstor usando esta línea la cual descargar la versión 0.7.2 del CSI y usando sed estamos cambian un valor de ejemplo por el controlador de Linstor que en mi caso es 172.22.35.25. Esto debe ser ejecutado en la misma maquina de donde administramos k8s.

curl https://raw.githubusercontent.com/LINBIT/linstor-csi/v0.7.0/examples/k8s/deploy/linstor-csi-1.14.yaml | sed "s/linstor-controller.example.com/172.22.35.25/g" | kubectl apply -f -

Podemos ver el avance del de la instalación con:

watch kubectl -n kube-system get all

Procederemos a crear un Storage Class usando este yaml

El número de réplicas debe ser el número de nodos de Kubernetes.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: linstor
provisioner: linstor.csi.linbit.com
parameters:
  autoPlace: "3"
  storagePool: "linstor-pool"

Para este punto ya podemos hacer solicitudes de volúmenes usando un PresistentVolumeClaim

En mi caso ya tenia varios yaml con requerimientos de pvc, aquí uno.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: services
  name: adguard-config
spec:
  storageClassName: linstor
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
       storage: 2Gi

Podemos ver que el STATUS es Bound, esto quiere decir que satisfactoriamente Linstor asigno espacio a Kubernetes para este volumen.

Desde el punto de vista de Linstor usando

linstor volume list

Podemos ver lo siguiente:

Estos son todos los volúmenes que están siendo usados por contenedores en Kubernetes.

Listo!

Ya puedo usar el cluster de Kubernetes, bueno por la cantidad de volúmenes que se ven en la imagen se puede deducir que lo estoy usando. He movido varios servicios hacia el clúster y hasta ahora muy feliz con Kubernetes.

El próximo paso es los respaldos, para esto estaré usando Velero de Heptio/VMware.

 

0

LACNIC31 – dia 4

LACNIC31 – dia 4

Hemos tenido otra sesión de discusión sobre políticas las cuales se busca que sean aceptadas mediante consenso, vuelvo y repito, esto es un tema el cual no quiero abordar sin tener cierto conocimiento de como es el proceso de aplicación y aprobación de estas, más adelante será.

https://www.lacnic.net/3635/49/evento/agenda-lacnic-31#miercoles-fpp

A las 11:30 inicio el FTL (Foro Técnico de LACNIC), recomendado para todos aquellos apasionados a las tecnologías como yo.

Aquí una lista de los temas presentados en el FTL y un pequeño comentario personal:

Introducción Foro Técnico de LACNIC

Esta es la presentación y que pasa en el FTL, también aprovecharon para invitar a otros a que participen en esta iniciativa de LACNIC.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/presentacion-ftl-2019.pdf

Video: https://youtu.be/ZGkDtoqvAIk

Problemas de seguridad del mundo real en una nube pública

Muchos de los problemas presentados aquí son conocidos y si no me equivoco existen implementaciones para mitigar ataques ya sean internos o externos, siendo los ataques internos (otro tenant o un empleado furioso) los más difíciles de detectar.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/charliekaufman.pdf

Video: https://youtu.be/HyGqL5YIfxc

UpDown RPKI LACNIC

Super interesante presentación sobre la funcionalidad UpDowm de RPKI, necesito investigar un monto sobre y esto y de posibles automatizaciones con BIRD y RouterOS que son las plataformas de enrutamiento que actualmente estoy usando.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/12-updown_rpki_lacnic.pdf

Video: https://youtu.be/RP6ePaLcp-Q

Juntos es posible, el paradigma de compartir los costos

Una presentación la cual me deja pensando y me apena, aquí podemos ver como se logra completar un proyecto que aporta a una nación de manera gigantesca, un IXP es parte de la infraestructura necesaria para que un país pueda sostenerse en caso de incidentes que afecten enlaces internacionales, lamentablemente, en RD tenemos poco interés en resolver este tema.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/63-juntos.pdf

Video: https://youtu.be/2QveRcIPOCw

Automatización de listas de prefijos en peering BGP – Cómo hacerlo y su importancia

Excelente presentación donde nos muestran herramientas para crear de manera automática las listas que usaremos en los filtros de BGP y así poder controlar anuncios recibidos por ASN conectados al nuestro. Usando IRR como fuente de información se crean listas para permitir que una subred sea anunciada a otros o aceptadas por nosotros mismos.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/48-lacnic31-douglasfischer_automatizacaodelistasdeprefixosbgp.pdf

Video: https://youtu.be/qBD7zCnbTF4

Privacidad en DNS

Esta demostrado que cada día la información generada por un computador es de mucho valor para terceros, soy muy participe de exponer lo mínimo de mi información personal al Internet, muchas veces se expone esta información de manera voluntaria, pero en otras ocasiones somos víctimas de técnicas para colectar dicha información.

Estas técnicas son desconocidas por muchas personas y es difícil entender porque deben hacer cambios en sus redes si todo esta funcionando bien. Personalmente no utilizo DNS de terceros, esta presentación me da mas razones para seguir corriendo mis propios DNS y apunarlos a los root zones sin necesidad de un resolver de una entidad la cual puede usar mi información para sacar beneficios.

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/fgont-lacnic-ftl2019-dns-privacy-final.pdf

Video: https://youtu.be/Gq_QHu8mCQs

Servicios de información de RIPE NCC para operadores

Desde hace alrededor de dos anos estoy usando varias herramientas de RIPE NCC, una de estas es RIPE Stats ( https://stats.ripe.net ), mucha información interesante desde el punto de vista curioso y mucho mas del punto de vista técnico.

https://stat.ripe.net/AS207036#tabId=at-a-glance

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/lacnic-31-en_comms-3.pdf

Video: https://youtu.be/cpIQOaA4bI0

BSDRP – Una opción de softrouter con FRR

Este es un viejo conocido y mucho mas aun porque esta basado en el sistema operativo que mas me ha gustado en todo el tiempo que he usado OpenSource, FreeBSD.

BSDRP es un proyecto fundado por la misma persona que una vez trabajo en FreeNAS. Este señor es un maestro en los equipos de embebidos.

Algo que tenia ganas de preguntar es porque uso FRR y no BIRD, no quería montar un flame-war 😊

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/4-bsdrp-lacnic31.pdf

Video: https://youtu.be/8DdtN_fj_uQ

RIPE Atlas Anchors en Máquinas Virtuales

Atlas, una plataforma que aporta un montón para un operador de redes, lamentablemente en RD ahí poco compromiso con este tipo de iniciativa.

Hace más de dos años que tengo un corriendo detrás de mi ASN (AS207036), he solicitado otro para ponerlo detrás de CLARO (AS6400).

https://atlas.ripe.net/probes/?search=&status=&af=&country=DO

Aquí se pueden ver los desplegados en DO y la gran cantidad de probes abandonados.

https://atlas.ripe.net/probes/28779/ – aaNetworks Probe – parece que tener que renombrarlo a Probe1

Presentación: https://www.lacnic.net/innovaportal/file/3635/1/ripe-atlas-virtual-machine-anchors-lacnic-31_last.pdf

Video: https://youtu.be/A7AvGVayQAA

0

LACNIC31 – dia 3

LACNIC31 – dia 3

Oficialmente LACNIC31 inicia el día de hoy con varios eventos de “rendición de cuenta” diría yo. La lista de estos eventos se puede encontrar en: https://www.lacnic.net/3635/49/evento/agenda-lacnic-31#martes-lacnic

Donde quiero que se enfoquen es en el Keynote, Radia Perlman ha tenido a cargo esta parte del inicio, y personalmente hacia muchos anos que no prestaba atención a alguien hablar como a esta señora, aun mejor cuando he investigado y leído que ha sido la creadora del Spanning Tree Protocol y grandes contribuciones como link-state routing protocols del cual se derivan tales como el protocolo de enrutamiento IS-IS y OSPF.

La presentación es mayormente una recopilación de acontecimientos y decisiones hechas en torno al desarrollo o colaboración en nuevas tecnologías.

Para los que se la perdieron en la transmisión en vivo, el STAFF de LACNIC ya ha publicado el video!

https://www.youtube.com/watch?v=0DcogUv4NNM&feature=youtu.be

nota: si quieren entender mejor como funciona spanning tree, prestarle atención al poema, epico!!

Foro público de políticas

Muy importante sección esta, se discutieron varias políticas que actualmente tiene el estado = DISCUSION. Como comenté en el post anterior, espero poder integrarme a este tipo de aportes porque me interesa mucho que los cambios necesarios sean realizados y así todos saldremos beneficiados.

El día de mañana promete mucho y tendrá más sesiones técnicas que los anteriores!!!

 

0

LACNIC31 – dia 2

LACNIC31 – dia 2

¡Seguimos sacándole provecho a este evento!

El día de hoy ha sido completo de IPv6, hemos tenido un refresh de que es IPv6 y de planes de direccionamiento, una de las partes más interesantes fue de los mecanismos de transición disponibles actualmente, en esta sección vimos los pro y contras de algunos de estos y las recomendaciones.

Mecanismos de transición IPv6-only y IPv4aaS en redes fijas y móviles.

https://www.lacnic.net/innovaportal/file/3512/1/ipv6-only_v13.pdf

Si le pegamos una mirada a la presentación de Jordit Palet podremos ver varias comparaciones y recomendaciones para ayudarnos al momento de seleccionar unas de estas tecnologías.

Una cosa esta clara, NAT64 tiene demasiados temas pendientes.

Teniendo en cuenta todo lo bueno que se hablo de 464XLAN este parece ser el ganador indiscutible, no crean mucho de lo que escribo con relación a esta implementación ya que no la he usado y pretendo subir unos laboratorios relacionado a estos métodos de transición.

IPv6 en Cable

Otro tema discutido en el día de hoy fue con relación a despliegues en un operador de Cable, muchas de las decisiones realizadas en este despliegue se pueden extrapolar a una implementación de otro tipo, por ejemplo, una implementación Wireless teniendo en cuenta que se debe tener control de CPE y que este soporte CLAT o dual-stack en el mejor de los casos.

https://www.lacnic.net/innovaportal/file/3512/1/lacnic-31—tutorial-ipv6-en-redes-de-cable-v2.pdf

 

Demo con conexión a internet de Jool/464XLAT.

Para cerrar el día nos han presentado una herramienta desarrollada por NIC México la cual nos permite implementar una plataforma con mecanismo de transición de IPv4/IPv6 de una manera rápida y fácil.

Robándome un poco de la página oficial del proyecto:

Jool is an Open Source implementation of IPv4/IPv6 Translation on Linux. Until version 3.2.x, it used to be only a Stateful NAT64; starting from 3.3.0, it also supports SIIT mode.

Si miramos en las implementaciones de transición soportadas vemos que sobre sale:

RFC 6877 464XLAT Rather implemented as SIIT-DC-DTM; see below.

Realizamos varios laboratorios los cuales se pueden encontrar en la diapositiva publica de la sesión:

https://www.lacnic.net/innovaportal/file/3512/1/jool.lacnic.31.pdf

Voy a probar esta solución en mi ambiente de enrutamiento virtual basado en EVE-ng para entender mejor como esta plataforma encajaría en una red empresarial y las ventajas que nos brindaría.

0

LACNIC31 – dia 1

LACNIC31 – dia 1

Iniciando con mi primera asistencia a este evento, hoy todo ha ido muy tranquilo.

Llegada al hotel, registro al evento y asistencia a la Sesión para Becados. La sesión fue muy interesante y saber que aplicaron casi 500 personas para asistir como becados a LACNIC31, de los cuales solo se seleccionaron 38 (conté la lista en lacnic.net) y saber que he sido uno de ellos me emociona mucho, y esa es la razón por la cual verán posts relacionados a LACNIC31 toda esta semana.

Luego de terminar la Sesión para Becados, me quede para la segunda sesión del día que fue relacionada a las políticas que se van a discutir en esta semana.

Es importante participar de las discusiones de políticas en LACNIC, aunque no lo he hecho anteriormente pretendo activarme en lo que a esto respecta para cambiar algunas cosas que personalmente no me gustan de cómo funciona la asignación de direcciones en LACNIC, eso es un tema para otro post.

Aquí esta la lista de políticas que están para discusión, si les interesa claro.

https://politicas.lacnic.net/politicas/list?state=ENDISCUSION