Dans un précédent article, j’avais réalisé un test avec MicroK8s et une carte Pine A64 :
Je profite de l’arrivée de la nouvelle carte Rock Pi S de Radxa Team qui démarre à 9,99$ pour initier un cluster K8S avec une carte Pine A64:
La carte Rock Pi S est équipée d’un SoC Rockchip RK3308 qui intègre quatre cœurs ARM Cortex-A35 64 bits (pouvant atteindre jusqu’à 1,3 GHz). Le SoC contient également un détecteur d’activité vocale (VAD) intégré pour une utilisation avec des applications vocales intelligentes. Radxa a inclus un en-tête GPIO à 26 broches ainsi qu’un lecteur de carte microSD.
De plus, la carte Rock Pi S possède un port Ethernet 100 Mbps, un port USB 2.0 Type-A et un port USB 2.0 Type-C qui supporte l’alimentation OTG et 5V. La carte est livrée avec 256 Mo ou 512 Mo de RAM. En option, la carte Rock Pi S peut intégrer jusqu’à 8 Go de stockage NAND embarqué, un module RTL8723BS compatible Wi-Fi 4 (jusqu’à 802.11 n) et du Bluetooth 4.0. La carte fonctionne actuellement sous Debian, Slackware et supportera aussi le Buildroot.
Je charge la distribution Debian 9.9 correspondante à cette carte :
via Etcher :
Je charge également une image Armbian pour la carte Pine A64 (encore une fois avec Etcher) :
Je peux alors relier ces deux cartes via deux cables Ethernet attachés à un switch pour faire la liaison vers mon réseau local dans le cadre de cette expérience :
Je charge sur la carte Rock Pi S un serveur k3s sans agent :
$ curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable-agent" sh -
en ayant récuperée le binaire k3s ARM 64 Bits sur Github :
Je charge le même binaire sur la carte Pine A64 et je peux lier cette dernière à la carte Rock Pi S pour former mon cluster Kubernetes :
$ curl -sfL https://get.k3s.io | K3S_URL=https://<IP Rock Pi S>:6443 K3S_TOKEN=XXX sh -
J’ai lié la carte Pine A64 à ZeroTier :
$ curl -s https://install.zerotier.com | bash$ zerotier-cli join <NETWORK ID>
Il est alors possible de déployer MetalLB pour obtenir un service de Load Balancing alternatif à celui fourni par défaut avec Traefik dans k3s :
$ kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml
avec cette configuration pour le DHCP :
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.193.10-192.168.193.100
Déploiement du chatbot vocal dédié au démonstrateur FC :
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: fcbot
spec:
replicas: 1
template:
metadata:
labels:
app: fcbot
spec:
containers:
- name: fcbot
image: mcas/pwafcbot-armv8:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: fcbot-service
labels:
app: fcbot-service
spec:
type: LoadBalancer
ports:
# the port that this service should serve on
- port: 8000
targetPort: 80
protocol: TCP
selector:
app: fcbot
Ici le service émet sur le port TCP 8000. Pour profiter de l’adresse IP fournie par ZeroTier et bénéficier d’un accès en HTTPS, je vais utiliser Cloudflare Argo Tunnel (le chatbot étant sous la forme d’un Progressive Web App) :
Je récupère la version ARM 64 Bits de Cloudflared sur Github qui est chargée sur la carte Pine A64 :
Dès lors, lancement d’un tunnel vers l’IP du service du chatbot vocal :
$ cloudflared tunnel --url http://192.168.193.11:8000
Cloudflare me retourne une adresse que j’utilise pour poser mes questions au Chatbot :
Pour monitorer ces cartes, j’utilise ici PM2 Plus de Keymetrics avec pm2-server-monit (en ayant installé auparavant Nodejs en sa version ARM 64 Bits) :
$ curl -sL https://deb.nodesource.com/setup_12.x | bash -
$ apt-get install -y nodejs
$ npm install pm2 -g
$ pm2 install pm2-server-monit
Les deux cartes apparaissent après liaison sur le dashboard de PM2 Plus :
D e nouvelles images Linux devraient être disponibles pour cette carte Rock Pi S permettant son utilisation en tant qu’agent au sein du cluster k3s :
A suivre !