Tech Doku: Testumgebung für den RStudio-Job-Launcher mit k3s Kubernetes-Cluster

In dieser technischen Dokumentation wollen wir eine Schritt-für-Schritt Anleitung zum Aufsetzen einer Testumgebung geben, in der die Möglichkeiten des Job-Launchers von RStudio-Server-Pro (RSP) in Kombination mit einem Kubernetes-Cluster getestet werden können. Wir verwenden hierfür 3 lokale virtuelle Maschinen, die wie folgt konfiguriert sind:


1.) R & RStudio-Server-Pro
Betriebssystem: CentOS 7 64-Bit
Arbeitsspeicher: 2GB
#Prozessorkerne: 1
Zusatzinformation: R-Version: 3.6.1 (Link)

RSP-Version: 1.2.1335-1 (Link)

Beschreibung: Enthält R sowie RStudio-Server-Pro und den damit enthaltenen Job-Launcher.
2.) NFS-Server
Betriebssystem: CentOS 7 64-Bit
Arbeitsspeicher: 1GB
#Prozessorkerne: 1
Zusatzinformation: -
Beschreibung: Stellt den NFS-Server bereit, welcher benötigt wird, damit das Kubernetes-Cluster die Ergebnisse der ausgelagerten Jobs wieder im Home-Verzeichnis des jeweiligen Nutzers ablegen kann.
3.) Kubernetes-Cluster
Betriebssystem: CentOS 7 64-Bit
Arbeitsspeicher: 2GB
#Prozessorkerne: 2 (!)
Zusatzinformation: k3s-Version: 0.8.1 (Link)
Beschreibung: Da das Aufsetzen eines Kubernetes-Clusters in der Regel ein sehr komplexer Vorgang ist, verwenden wir hier die Lightweight-Distribution k3s, welche schnell zu installieren ist und ohne große Ressourcen auskommt. Genauere Informationen sind der offiziellen Seite zu entnehmen.

 

Mit (!) (oder mit # (!) in Codeblöcken) gekennzeichnete Textpassagen sind Stolpersteine, auf welche wir beim Aufsetzen des Systems gestoßen sind. Auf diese wird im letzten Abschnitt Troubleshooting nochmal referenziert, inklusive den Fehlermeldung, die durch falsche Eingaben auftreten können.

Die meisten Befehle müssen mit sudo-Rechten ausgeführt werden. Um etwas Schreibarbeit einzusparen, werden hier alle Befehle als root ausgeführt.

(VM 1 - R & RStudio-Server-Pro :: IP - 172.20.248.136)

  • Notwendige dependencies installieren:
yum groupinstall "Development Tools" -y
yum install wget readline-devel libX11-devel libXt-devel zlib-devel bzip2-devel xz-devel pcre-devel libcurl-devel -y
  • R Installieren:
mkdir /install
cd /install
wget https://cloud.r-project.org/src/base/R-3/R-3.6.1.tar.gz
tar -xzf R-3.6.1.tar.gz
cd R-3.6.1
./configure ––prefix=/opt/R/$(cat VERSION) ––enable-memory-profiling ––enable-R-shlib ––with-blas ––with-lapack ––with-x
  • RStudio-Server-Pro installieren:
cd ..
wget https://download2.rstudio.org/server/centos6/x86_64/rstudio-server-rhel-pro-1.2.1335-1-x86_64.rpm
yum install rstudio-server-rhel-pro-1.2.1335-1-x86_64.rpm -y
  • Symlinks setzen: (!)
ln -s /opt/R/3.6.1/bin/R /bin/R
ln -s /opt/R/3.6.1/bin/Rscript /bin/Rscript

(VM 2: NFS-Server :: IP - 172.20.248.12)

  • NFS-Tools installieren:
yum install nfs-utils
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
  • Home-Verzeichnis zum Export vorbereiten:
vi /etc/exports
/home *(rw,sync,no_root_squash,no_all_squash) # (!)
  • NFS-Server neustarten & Firewall anpassen:
systemctl restart nfs-server
firewall-cmd ––permanent ––zone=public ––add-service=nfs
firewall-cmd ––permanent ––zone=public ––add-service=mountd
firewall-cmd ––permanent ––zone=public ––add-service=rpc-bind
firewall-cmd ––reload
  • Alle Exporte freigeben:
exportfs -a

(VM 1 - R & RStudio-Server-Pro :: IP - 172.20.248.136)

  • NFS-Tools installieren und Home-Verzeichnis mounten:
yum install nfs-utils -y # (!)
mount -t nfs 172.20.248.136:/home /home
  • Testnutzer anlegen:
useradd -m user_1
# Passwort setzen...
  • fstab anpassen, sodass Home beim Systemstart gemountet wird:
vi /etc/fstab

[...]

172.20.248.12:/home      /home                    nfs defaults   0 0

(VM 3 - Kubernetes-Cluster :: IP - 172.20.248.135)

  • Nötige dependencies installieren:
yum install policycoreutils-python-2.5-29.el7_6.1.x86_64 -y
  • K3S installieren:
mkdir /install
cd /install
curl sfL https://get.k3s.io | sh -

(VM 1 - R & RStudio-Server-Pro :: IP - 172.20.248.136)

  • RStudio-Server konfigurieren
cd /etc/rstudio
vi rserver.conf
# Server configuration file
launcher-address=127.0.0.1
launcher-port=5559
launcher-sessions-enabled=1
launcher-default-cluster=Kubernetes
launcher-sessions-callback-address=http://172.20.248.136:8787 # (!)
launcher-sessions-container-run-as-root=0
launcher-sessions-create-container-user=1
  • Job-Launcher konfigurieren:
vi launcher.conf
# This file contains sample configuration for the Job Launcher.
#
# There are two section types, [server] and [cluster]. There should be one [server] section for the config, and one [cluster] section for each cluster you want the Job Launcher to connect to.
#
# An examples configuration is below. You can uncomment any lines to use them. For more detailed documentation, please see the Job Launcher documentation.
#
[server]
address=127.0.0.1
port=5559
server-user=rstudio-server
admin-group=rstudio-server
authorization-enabled=1
thread-pool-size=4
enable-debug-logging=1[cluster]
name=Kubernetes
type=Kubernetes
exe=/usr/lib/rstudio-server/bin/rstudio-kubernetes-launcher[cluster]
name=Local
type=Local
  • Kubernetes-Plugin konfigurieren:
vi launcher.kubernetes.profiles.conf
[*]
default-cpus=1
default-mem-mb=512
max-cpus=2
max-mem-mb=1024
container-images=rstudio/r-session-complete:centos7-1.2.1335-1-r-3.5.3,r-base:latest
default-container-image=rstudio/r-session-complete:centos7-1.2.1335-1-r-3.5.3
allow-unknown-images=0
  • Job-Launcher für NFS-Mounting konfigurieren:
vi launcher-mounts
Host: 172.20.248.12
Path: /home/{USER}
MountPath: /home/{USER}
ReadOnly: false
Cluster: Kubernetes
Published: 17. September 2019

Author

Christian Ewald

Christian Ewald ist seit 2017 in den Bereichen Data Science und aicon der eoda GmbH tätig. Im Bereich Data Science arbeitet er als R-Entwickler, spezialisiert auf die Entwicklung von WebApps mit shiny. Im Bereich aicon widmet er sich größtenteils der Evaluation von aktuellen Technologien. Privat interessiert er sich für Containerisierung und Cloud-Computing.

Row edge-slant Shape Decorative svg added to top
Row edge-slant Shape Decorative svg added to bottom

Starten Sie jetzt durch:
Wir freuen uns auf den Austausch mit Ihnen. 







    Nach oben scrollen