Allgemeines
Die Leocloud ist eine bare metal Kubernetes - Installation, die zur Verfügung steht, um Cloud - Anwendungen zu hosten. Die dort eingesetzten Anwendungen stehen in einer eigenen Subdomain von cloud.htl-leonding.ac.at zur Verfügung.
Verwenden Sie folgenden Prompt für Ihren Agenten:
Read https://cloud.htl-leonding.ac.at/llms.txt and follow it.
Install the LeoCloud skill into this repository, then deploy this project to LeoCloud.
Um Anwendungen in der LeoCloud installieren zu können, müssen Sie ein gültiges Konto der HTL-Leonding haben. Es ist keine eigenene Registrierung notwendig, zur Anmeldung wird das normale Schulkonto verwendet.
Die Commandline - Tools leocloud und kubectl müssen sich in einem Ordner befinden, der im Suchpfad des Betriebssystems liegt.
Anmerkungen
Für das Arbeiten mit der LeoCloud sind Grundkenntnisse im Cloud-Computing und Kubernetes erforderlich. Es ist nicht erwünscht die LeoCloud zur Software - Entwicklung zu verwenden. Zum Erstellen und Debuggen einer Anwendung muss zuerst minikube verwendet werden. LeoCloud ist 1:1 kompatibel mit minikube. Erst wenn die Anwendung problemlos auf minikube funktioniert kann sie auf der LeoCloud eingespielt werden. Wenn Sie Fragen zur LeoCloud haben ist es zwingend erforderlich, dass vorher die Anwendung, um die es geht, auf minikube problemlos läuft und diese erfolgreich vorgeführt werden kann. Erst danach können angebliche Probleme mit der LeoCloud behandelt werden.
leocloud
Leocloud für Linux und OSX
um leocloud zu installieren führen Sie im Terminal folgendes aus:
bash -c "$(curl -fsSL https://cloud.htl-leonding.ac.at/html/install.sh)"
leocloud für Windows
Es gibt kein leocloud für Windows. Es wird auch keine leocloud.exe angeboten, weder zum
Herunterladen noch im Archiv der Clients. LeoCloud wird für Linux und macOS ausgeliefert.
Unter Windows arbeiten Sie mit dem Windows-Subsystem für Linux (WSL): Sie installieren dort Ubuntu und darin die Linux-Version von leocloud. Das ist der einzige unterstützte Weg.
-
Installieren Sie Ubuntu für Windows.
-
Aktualisieren Sie Ubuntu für Windows mit:
sudo apt update && sudo apt full-upgradeStarten Sie Ubuntu danach neu, und zwar nicht in Ubuntu, sondern in der PowerShell:
wsl --shutdownsudo do-release-upgrade -
installieren Sie leocloud wie in Leocloud für Linux und OSX beschrieben.
leocloud zeigt die Adresse der Login - Seite immer im Terminal an und versucht dann, sie im Browser zu öffnen. Sollte sich das Browser - Login Fenster nicht automatisch öffnen (z.b. unter Windows mit WSL2), kopieren Sie die angezeigte Adresse und öffnen Sie sie selbst in einem Browser.
kubectl
kubectl muss laut den Anweisungen unter Install Tools installiert sein. Die korrekte Installation muss durch folgende Eingabe im Terminal überprüft werden:
kubectl
Es sollten jetzt die verfügbaren kubectl Kommandos aufgelistet werden.
kubectl config Datei erstellen
Damit kubectl funktioniert brauchen wir eine gültige Konfigurationsdatei. Diese wird als ~/.kube/config gespeichert.
Eine bereits vorhandene Datei müssen Sie nicht umbenennen oder löschen. Ihre LeoCloud - Einträge werden in die vorhandene Datei eingefügt; alle anderen Cluster, Benutzer und Kontexte, die Sie schon hatten, bleiben unverändert erhalten.
Nach einem erfolgreichen Login ist der Kontext leocloud der aktuelle Kontext. kubectl arbeitet danach ohne weitere Angaben in Ihrem eigenen Namespace.
Für das Zusammenführen wird kubectl selbst verwendet, es muss also installiert sein (siehe kubectl). Fehlt kubectl, bricht der Befehl mit einer entsprechenden Meldung ab und ändert nichts an Ihrer Konfigurationsdatei.
Die Datei enthält ein Zugangs - Token und wird deshalb so angelegt, dass nur Ihr eigenes Benutzerkonto sie lesen kann.
Die Konfigurationsdatei wird erstellt mit:
leocloud auth login
Danach überprüfen wir, ob alles funktioniert:
kubectl get nodes
kubectl config view
In der Ausgabe des letzten Kommandos sehen Sie den Namen Ihres Namespaces. Ab jetzt können sie in ihrem eigenen Namespace with gewohnt mit kubectl arbeiten. Der einzige Unterschied zu minikube ist, dass ihr Namespace - Name nicht "default" ist.
die Sitzung auf diesem Rechner beenden
leocloud auth logout
Damit werden die gespeicherten Zugangsdaten von diesem Rechner entfernt, und aus ~/.kube/config werden genau jene Einträge entfernt, die der Login angelegt hat. Alle anderen Einträge in dieser Datei bleiben bestehen.
|
Important
|
Sie sind damit noch nicht im Browser abgemeldet. Solange die Single - Sign - On - Sitzung im Browser besteht, meldet Sie ein neuer Login sofort wieder als dieselbe Person an, ohne nach dem Passwort zu fragen. Der Befehl öffnet deshalb die Abmelde - Seite im Browser. Bestätigen Sie die Abmeldung dort mit einem Klick auf "Logout". Erst danach können Sie sich als jemand anderer anmelden. Öffnet sich kein Browser, dann öffnen Sie die Adresse, die der Befehl im Terminal anzeigt, selbst in einem Browser. Das gilt auch dann, wenn auf diesem Rechner keine Sitzung mehr gespeichert war. |
die eigene Homepage erstellen und aufrufen
leocloud get template nginx | kubectl apply -f -
Dies startet das Deployment. Anschließend beobachten Sie den Vorgang mit
kubectl get pods
bis alle Pods "RUNNING" sind.
den eigenen Hostnamen anzeigen
kubectl describe ingress
die eigene Homepage öffnen
Die Homepage öffnet sich mit:
leocloud get home
Dies zeigt Ihnen im Browser die Informationen an, die sie zum Erstellen Ihrer Deployments und Services benötigen.
Was ein Pod in der LeoCloud nicht darf
Ihre Pods laufen auf Rechnern, die Sie mit allen anderen teilen. Deshalb gilt in jedem LeoCloud-Namespace die Kubernetes-Stufe baseline (Pod Security Standard). Ein Pod wird abgelehnt, wenn er eines der folgenden Dinge verlangt:
-
das Netzwerk, die Prozesse oder die IPC des Rechners (
hostNetwork,hostPID,hostIPC), -
ein Verzeichnis des Rechners als Volume (
hostPath), -
einen Port direkt auf dem Rechner (
hostPort), -
den privilegierten Modus (
privileged: true), -
zusätzliche Linux-Capabilities (
capabilities.add, etwaNET_ADMINoderSYS_ADMIN).
Alles andere funktioniert wie bisher — die Vorlage leocloud get template nginx zum Beispiel ist
davon nicht betroffen. Für einen Webserver brauchen Sie keinen Port auf dem Rechner: dafür gibt es
den Service und den Ingress.
-
Ein Pod, den Sie direkt anlegen, wird sofort abgelehnt. Die Meldung nennt die Stufe und das Feld:
pods "..." is forbidden: violates PodSecurity "baseline:latest": host namespaces (hostNetwork=true)
-
Ein Deployment (ebenso Job, CronJob, StatefulSet) wird angenommen.
kubectl applygibt dabei eine Warnung aus, die das Feld nennt:Warning: would violate PodSecurity "baseline:latest": host namespaces (hostNetwork=true)
Die Pods dazu werden aber nicht angelegt:
kubectl get podszeigt keine. Den Grund sehen Sie mitkubectl get eventsals
FailedCreatemit derselben Meldung. Entfernen Sie das genannte Feld aus Ihrem Deployment und wenden Sie es erneut an.
Diese Stufe können Sie in Ihrem Namespace nicht ändern oder abschalten.
Ein Pod, der bereits läuft, wird nicht beendet. Muss er aber neu angelegt werden — bei einer neuen Version Ihres Deployments oder wenn ein Rechner neu startet —, wird der neue Pod abgelehnt.
Wie viel Platz ein Pod auf dem Rechner hat
Ein Container schreibt nicht nur in seine persistenten Volumes, sondern auch auf die Festplatte des Rechners, auf dem er läuft. Dazu zählt:
-
alles, was er in sein eigenes Dateisystem schreibt, etwa nach
/tmp, -
seine Logs (alles, was er auf die Konsole ausgibt),
-
Volumes vom Typ
emptyDir.
Diese Festplatte teilen Sie mit allen anderen. Deshalb gelten in jedem LeoCloud-Namespace folgende
Grenzen (Kubernetes nennt diesen Speicher ephemeral-storage):
-
Ein Container, der selbst nichts angibt, darf 2Gi schreiben. Reserviert werden für ihn 100Mi.
-
Ein Container darf höchstens 20Gi verlangen. Ein Pod, der mehr verlangt, wird abgelehnt.
-
Alle Pods eines Namespaces zusammen dürfen höchstens 40Gi verlangen. Zwanzig Container ohne eigene Angabe füllen das bereits. Während ein Deployment eine neue Version ausrollt, zählen der alte und der neue Pod gleichzeitig.
Braucht ein Container mehr als 2Gi, geben Sie die Grenze im Deployment selbst an, bis höchstens 20Gi:
containers:
- name: meine-anwendung
resources:
requests:
ephemeral-storage: 1Gi
limits:
ephemeral-storage: 5Gi
Geben Sie dabei immer auch limits an. Ein Container, der nur requests nennt, bekommt die
Grenze von 2Gi; verlangt er mehr als 2Gi, wird er abgelehnt.
Daten, die wachsen, gehören in ein PersistentVolumeClaim, nicht in das Dateisystem des Containers: eine Datenbank, hochgeladene Dateien, Backups, Archive. Was im Container selbst liegt, ist beim nächsten Neustart des Pods ohnehin weg.
Die Vorlage leocloud get template nginx ist davon nicht betroffen.
Der Pod wird beendet — nur dieser Pod, andere laufen weiter. kubectl get pods zeigt ihn als
Evicted oder Error. Den Grund sehen Sie mit
kubectl describe pod MYPOD
unter Message; er nennt die überschrittene Grenze. Gehört der Pod zu einem Deployment, wird ein
neuer gestartet — schreibt er wieder zu viel, wird auch er beendet. Ersetzen Sie MYPOD durch den
Namen des Pods.
-
Ein Pod, den Sie direkt anlegen, wird sofort abgelehnt. Die Meldung nennt die Grenze des Namespaces und wie viel davon schon verbraucht ist.
-
Ein Deployment wird angenommen, aber seine neuen Pods werden nicht angelegt. Den Grund sehen Sie mit
kubectl get eventsals
FailedCreate. Löschen Sie Deployments, die Sie nicht mehr brauchen, oder geben Sie Ihren Containern kleinere Grenzen.
Diese Grenzen können Sie in Ihrem Namespace nicht ändern oder abschalten.
Ein Pod, der bereits lief, bevor diese Grenzen in Ihrem Namespace galten, läuft ohne Grenze weiter. Muss er neu angelegt werden — bei einer neuen Version Ihres Deployments oder wenn ein Rechner neu startet —, bekommt der neue Pod die Grenzen.
Services und Speicher (PersistentVolumeClaim)
Ein Service ist immer vom Typ ClusterIP. Lassen Sie den Typ einfach weg, dann ist es dieser.
Die Typen NodePort, LoadBalancer und ExternalName werden abgelehnt. Von außen erreichbar ist
Ihre Anwendung nur über einen Ingress auf Ihrem eigenen Hostnamen — so wie in der Vorlage
leocloud get template nginx.
Ein PersistentVolumeClaim verlangt höchstens 20Gi. Ein Claim, der mehr verlangt, wird abgelehnt. Einen bestehenden Claim können Sie nicht über 20Gi hinaus vergrößern.
-
Ein Service eines anderen Typs wird bei
kubectl applysofort abgelehnt:LeoCloud: a service of type NodePort is not allowed in this namespace. Only type ClusterIP is allowed (leave the type out). An application is reached from outside through an ingress on your hostname.
Entfernen Sie die Zeile
type:aus dem Service oder schreiben Sietype: ClusterIP. -
Ein zu großer Claim wird bei
kubectl applysofort abgelehnt:LeoCloud: this volume claim requests 25Gi of storage. A claim in this namespace may request at most 20Gi, and an existing claim cannot be enlarged beyond 20Gi.
Schreiben Sie bei
storage:höchstens20Gi. -
Ein StatefulSet mit
volumeClaimTemplateswird angenommen, aber ein zu großer Claim wird nicht angelegt, und der Pod startet nicht. Den Grund sehen Sie mitkubectl get eventsals
FailedCreatemit derselben Meldung.
Diese Regeln können Sie in Ihrem Namespace nicht ändern oder abschalten.
Ingress: welche Einstellungen wirken
Den Ingress Ihrer Anwendung liest der Ingress-Controller Traefik. So wie in der Vorlage
leocloud get template nginx gilt:
Die Ingress-Klasse steht im Feld ingressClassName, nicht in einer Annotation:
spec:
ingressClassName: nginx
Steht in Ihrem Ingress noch die ältere Annotation kubernetes.io/ingress.class: nginx (aus einem
älteren Tutorial), dann löschen Sie diese Zeile und schreiben stattdessen das Feld.
Es wirken nur die Annotationen nginx.ingress.kubernetes.io/…, die Traefik als unterstützt
auflistet. Die Liste: doc.traefik.io/traefik/reference/routing-configuration/kubernetes/ingress-nginx/
Keine Wirkung haben:
-
Annotationen anderer Ingress-Controller, zum Beispiel
traefik.ingress.kubernetes.io/…odernginx.org/…, -
eine Annotation
nginx.ingress.kubernetes.io/…, die in dieser Liste nicht als unterstützt steht (dort unter „Unsupported Annotations“).
Eine solche Annotation wird nicht beachtet. Entfernen Sie sie, damit Ihr Ingress zeigt, was tatsächlich gilt.
Der Pfad einer Anfrage kommt so bei Ihrem Service an, wie er gesendet wurde: //, /./ und
/../ werden weder zusammengefasst noch aufgelöst.
Dashboard
Das Dashboard ist eine Web-Oberfläche für Ihren Namespace. Sie erreichen es im Browser unter dashboard.cloud.htl-leonding.ac.at. Sie müssen dafür nichts in Ihrem Namespace starten.
-
Geben Sie im Terminal ein:
leocloud dashboardDer Befehl gibt einen Token aus, der eine Stunde gilt, und öffnet die Adresse im Browser. Öffnet sich kein Browser (zum Beispiel unter WSL), öffnen Sie die Adresse selbst.
-
Kopieren Sie den Token in das Anmeldefeld der Seite und melden Sie sich an.
Die Anmeldung gilt eine Stunde. Danach führen Sie leocloud dashboard noch einmal aus und melden
sich mit dem neuen Token an. Auf einem Computer, den auch andere benutzen, melden Sie sich am Ende ab.
Im Dashboard sehen und ändern Sie dasselbe wie mit kubectl: die Objekte in Ihrem eigenen
Namespace. Die Liste der Namespaces zeigt alle Namespaces der LeoCloud, aber Inhalte sehen Sie
nur in Ihrem eigenen.
Die Übersicht über den ganzen Cluster zeigt zwei Meldungen „Forbidden" (für Ereignisse und für
Messwerte der Knoten). Alles in Ihrem eigenen Namespace funktioniert trotzdem.
Wie viel CPU und Arbeitsspeicher Ihre Pods gerade verbrauchen, sehen Sie im Dashboard bei den Pods
und im Terminal mit kubectl top pod. Den Verbrauch der Knoten (kubectl top node) sehen Sie nicht.
Gibt leocloud dashboard stattdessen eine Anleitung mit sechs Schritten aus, ist Ihr leocloud
veraltet; die Vorlage, mit der diese Anleitung beginnt, gibt es nicht mehr. Installieren Sie
leocloud neu, mit demselben Befehl wie in Leocloud für Linux und OSX.
Happy Leoclouding!
Container Registry (ghcr.io)
Ihr Image laden Sie in die Container Registry von GitHub, ghcr.io. Ein Image heißt dort
ghcr.io/<github-user>/<image>, ganz in Kleinbuchstaben, auch wenn Ihr GitHub-Name Großbuchstaben
enthält. Ersetzen Sie <github-user> in allen Befehlen dieses Abschnitts durch Ihren GitHub-Namen.
Token anlegen
Die Registry akzeptiert nur einen Personal access token (classic). Ein fine-grained Token funktioniert für die Registry nicht, auch wenn GitHub ihn zuerst anbietet.
-
Öffnen Sie dieses Formular für einen neuen classic Token. Die Berechtigung
write:packages(Images hochladen und herunterladen) ist darin schon ausgewählt. -
Wählen Sie bei Expiration den Eintrag Custom und ein Datum am Ende des Schuljahres (Anfang Juli). Die Voreinstellung von 30 Tagen läuft mitten im Projekt ab.
-
Klicken Sie unten auf Generate token.
-
GitHub zeigt den Token nur ein einziges Mal. Kopieren Sie ihn sofort, bevor Sie die Seite verlassen, und bewahren Sie ihn sicher auf, zum Beispiel in einem Passwortmanager. Er beginnt mit
ghp_.
Geben Sie den Token niemandem weiter, auch keinem Agenten, und schreiben Sie ihn in keine Datei Ihres Repositorys.
Anmelden
docker login ghcr.io -u <github-user>
Bei Password: fügen Sie den Token ein und drücken Enter. Beim Einfügen wird nichts angezeigt;
das ist normal. Unter Linux und in WSL warnt Docker eventuell, dass das Passwort unverschlüsselt
gespeichert wird; die Anmeldung hat trotzdem funktioniert. Erscheint statt Login Succeeded die
Meldung unauthorized oder denied, ist der Token falsch, abgelaufen oder ohne write:packages:
Legen Sie einen neuen an und melden Sie sich erneut an.
Das Paket finden
Nach dem ersten Hochladen (docker push) erscheint das Image als Paket in Ihrem GitHub-Profil,
unter github.com/<github-user>?tab=packages. Ein neues Paket ist privat. Der Cluster
kann es dann ohne Zugangsdaten nicht laden, und der Pod zeigt ImagePullBackOff oder ErrImagePull.
Das Paket öffentlich machen
Wir empfehlen, das Paket öffentlich zu machen. Dann braucht niemand Zugangsdaten, um es zu laden, und im Cluster muss kein Geheimnis liegen.
|
Warning
|
Ein öffentliches Paket lässt sich nicht wieder privat machen. Alles im Image — Ihr Code
und jede Datei, die hineinkopiert wurde — kann dann jeder herunterladen und lesen. Prüfen Sie
vorher: Eine Datei .dockerignore hält mindestens .env, .git und private Schlüssel aus dem
Image heraus, und das Dockerfile enthält kein Passwort und keinen Token. Auch alle früher
hochgeladenen Versionen werden öffentlich; enthält eine davon ein Geheimnis, löschen Sie zuerst das
ganze Paket und laden es neu hoch.
|
Öffnen Sie die Einstellungen des Pakets: auf der Seite des Pakets rechts Package settings, oder
direkt github.com/users/<github-user>/packages/container/<image>/settings. Ganz unten
unter Danger Zone: Change visibility → Public → Namen des Pakets eintippen → bestätigen.
Ob das Paket wirklich öffentlich ist, prüfen Sie ohne Zugangsdaten (das leere Verzeichnis sorgt dafür, dass Ihre gespeicherte Anmeldung nicht benutzt wird):
DOCKER_CONFIG="$(mktemp -d)" docker manifest inspect ghcr.io/<github-user>/<image>:<tag>
Gibt der Befehl ein Manifest (JSON) aus, ist das Paket öffentlich. unauthorized heißt: noch
privat. denied heißt: Ein Image dieses Namens mit diesem Tag gibt es nicht.
Muss Ihr Paket privat bleiben, braucht der Cluster ein Pull Secret mit einem Token, der Pakete
lesen darf (read:packages). Legen Sie es direkt mit kubectl create secret docker-registry an,
nie aus einer Datei Ihres Repositorys.
Problembehandlung
Sollten Sie Probleme mit Ihrer Anwendung haben, denken Sie daran: es gibt nur zwei schwierige Dinge beim Entwickeln von Software.
Löschen Sie Ihren Namespace mit kubectl delete namespace MYNAMESPACE wobei sie MYNAMESPACE durch den Namen Ihres Namespaces ersetzen.
Den Namespace finden Sie mit oder wie oben beschrieben mit kubectl config view.leocloud get home
Achtung: damit löschen Sie auch alle Daten in Ihren persistenten Volumes — sofort und unwiderruflich. Das Löschen des Namespaces ist kein Neustart, sondern entfernt den gesamten Inhalt. Es gibt keine Frist, innerhalb derer sich etwas zurückholen ließe. Holen Sie vorher heraus, was Sie behalten wollen — siehe Lebensdauer Ihres Bereichs. Danach neu einloggen; Sie bekommen einen leeren Bereich. Melden Sie sich gleich nach dem Löschen an, kann die Anmeldung abgelehnt werden, weil der alte Namespace noch entfernt wird; führen Sie den Befehl dann in ein paar Sekunden noch einmal aus.
Lebensdauer Ihres Bereichs
Ihr Namespace bleibt nicht dauerhaft bestehen. Er wird entfernt, wenn Ihr Jahrgang die fünfjährige Ausbildung abgeschlossen hat: Wer im Jahr Y eingetreten ist, verliert seinen Bereich beim Aufräumen nach dem Jahr Y + 5. Solange Sie an der Schule sind, bleibt Ihr Bereich bestehen, auch über die Ferien.
Wer eine Klasse wiederholt, ist nach diesen fünf Jahren noch an der Schule. Deshalb wird ein Bereich mit seinem Jahrgang nur entfernt, wenn bei der letzten Anmeldung zwischen September und Juni des abgelaufenen Schuljahres die Abschlussklasse Ihres Ausbildungszweigs eingetragen wurde: die 5. Klasse, in der Abendschule das 6. Semester. Bei jeder Anmeldung wird Ihre aktuelle Klasse aus dem Schulkonto übernommen. Ist eine niedrigere Klasse eingetragen, oder haben Sie sich in diesem Schuljahr nicht angemeldet, wird Ihr Bereich nicht mit Ihrem Jahrgang entfernt, und die Administration entscheidet einzeln.
-
Melden Sie sich in jedem Schuljahr zwischen September und Juni mindestens einmal bei LeoCloud an. Dann ist die eingetragene Klasse die richtige.
-
Wenn Sie die Abschlussklasse wiederholen, kann LeoCloud Sie nicht von jemandem unterscheiden, der die Schule abgeschlossen hat. Sie erhalten dann die Verständigung vor dem Löschen. Antworten Sie vor dem darin genannten Tag auf diese Nachricht, dann bleibt Ihr Bereich bestehen.
Bereiche ohne Matrikelnummer — Lehrende, Seminarteilnehmerinnen und Seminarteilnehmer — sind von dieser Regel nicht erfasst und werden einzeln entschieden.
Für Prüfungszugänge gilt etwas anderes — siehe Prüfungszugänge.
-
Sie werden vorher per E-Mail verständigt, mindestens 7 Tage davor. Die Nachricht nennt den Tag, an dem gelöscht wird.
-
Verständigt wird an die Adresse, die bei Ihrer Anmeldung aus dem Schulkonto übernommen wurde. Es wird keine Adresse aus dem Namen Ihres Namespaces gebildet.
-
Früher als angekündigt wird nicht gelöscht. Später kann es werden.
-
der gesamte Namespace: alle Deployments, Services und Ingresses,
-
alle Daten in den persistenten Volumes,
-
Ihr Zugang. Eine noch vorhandene
~/.kube/configfunktioniert danach nicht mehr.
Die Daten in den persistenten Volumes werden in dem Moment vernichtet, in dem der Bereich gelöscht wird. Es gibt keine Aufbewahrungsfrist — weder 30 Tage noch eine kürzere. Danach liegt am Fileserver nichts mehr, was noch herausgegeben werden könnte, und niemand kann die Daten zurückholen, auch die Administration nicht.
Dasselbe gilt, wenn Sie selbst löschen: kubectl delete pvc und kubectl delete namespace
vernichten die Daten sofort und endgültig.
Sichern Sie deshalb selbst, was Sie behalten wollen, solange Ihr Bereich noch besteht. Der folgende Befehl ist die einzige Rettung, die es gibt. Aus einem laufenden Pod geht das zum Beispiel so:
kubectl cp MYNAMESPACE/MYPOD:/pfad/im/pod ./ziel-am-eigenen-rechner
Ersetzen Sie dabei MYNAMESPACE durch den Namen Ihres Namespaces, MYPOD durch den Namen des Pods und die beiden Pfade durch den Ordner im Pod und durch das Ziel auf Ihrem eigenen Rechner.
Prüfungszugänge
Für praktische Prüfungen gibt die Schule eigene Zugänge aus. Ihr Benutzername beginnt mit test,
danach folgen zwei Buchstaben für den Prüfungssatz und die Katalognummer — zum Beispiel testee01.
Für diese Zugänge gilt die Regel im vorigen Abschnitt nicht.
Ein Prüfungsbereich wird 24 Stunden nach seiner Erstellung gelöscht. Der Zeitpunkt wird beim Anlegen am Namespace vermerkt und kann abgelesen werden:
kubectl get namespace MYNAMESPACE -o jsonpath='{.metadata.annotations.cloud\.htl-leonding\.ac\.at/delete-after}'
Ersetzen Sie dabei MYNAMESPACE durch den Namen Ihres Namespaces.
Wer sich ein zweites Mal anmeldet — weil die Konfigurationsdatei verloren gegangen ist oder ein anderer Rechner verwendet wird — bekommt denselben Bereich zurück, mit allem, was darin schon läuft. Es wird dabei nichts gelöscht und nichts neu angelegt. Die 24 Stunden verlängern sich dadurch aber auch nicht: sie laufen ab dem ersten Anlegen.
Kommt die Anmeldung genau in dem Moment, in dem der Bereich gerade entfernt wird, wird sie abgelehnt mit der Aufforderung, den Befehl in ein paar Sekunden noch einmal auszuführen. Der nächste Versuch legt dann einen neuen, leeren Bereich an.
-
Es wird nicht vorher verständigt. Ein Prüfungszugang hat keine E-Mail-Adresse, und es wird auch keine gebildet.
Holen Sie also heraus, was Sie behalten wollen, bevor die 24 Stunden um sind.
Download as Pdf
Diese Dokument steht auch als user-manual.pdf zur Verfügung.