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 install wget readline-devel libX11-devel libXt-devel zlib-devel bzip2-devel xz-devel pcre-devel libcurl-devel -y
- R Installieren:
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:
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/Rscript /bin/Rscript
(VM 2: NFS-Server :: IP - 172.20.248.12)
- NFS-Tools installieren:
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:
- NFS-Server neustarten & Firewall anpassen:
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:
(VM 1 - R & RStudio-Server-Pro :: IP - 172.20.248.136)
- NFS-Tools installieren und Home-Verzeichnis mounten:
mount -t nfs 172.20.248.136:/home /home
- Testnutzer anlegen:
# Passwort setzen...
- fstab anpassen, sodass Home beim Systemstart gemountet wird:
[...]
172.20.248.12:/home /home nfs defaults 0 0
(VM 3 - Kubernetes-Cluster :: IP - 172.20.248.135)
- Nötige dependencies installieren:
- K3S installieren:
cd /install
curl sfL https://get.k3s.io | sh -
(VM 1 - R & RStudio-Server-Pro :: IP - 172.20.248.136)
- RStudio-Server konfigurieren
vi rserver.conf
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:
#
# 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:
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:
Path: /home/{USER}
MountPath: /home/{USER}
ReadOnly: false
Cluster: Kubernetes
Author
Starten Sie jetzt durch:
Wir freuen uns auf den Austausch mit Ihnen.