Documenation PDF

This commit is contained in:
Christoph Walther
2024-09-20 12:36:35 +02:00
parent d1e1f9bd7c
commit e8abeb48e8
6 changed files with 61 additions and 51 deletions

2
.gitattributes vendored Normal file
View File

@ -0,0 +1,2 @@
*.pdf filter=lfs diff=lfs merge=lfs -text
*.iso filter=lfs diff=lfs merge=lfs -text

View File

@ -1,29 +1,24 @@
@inproceedings{totschnig_openhpi_2013, @misc{noauthor_codegrade_nodate,
address = {Aachen, Germany}, title = {The {CodeGrade} {Documentation}{CodeGrade} {QuietStorm}.1 documentation},
title = {{openHPI}: {Evolution} of a {MOOC} {Platform} from {LMS} to {SOA}:}, url = {https://docs.codegra.de/},
isbn = {978-989-8565-53-2}, urldate = {2024-08-25},
shorttitle = {{openHPI}}, file = {The CodeGrade Documentation — CodeGrade QuietStorm.1 documentation:/Users/chris/Zotero/storage/K79YSBN2/docs.codegra.de.html:text/html},
url = {http://www.scitepress.org/DigitalLibrary/Link.aspx?doi=10.5220/0004416905930598},
doi = {10.5220/0004416905930598},
language = {en},
urldate = {2024-08-27},
booktitle = {Proceedings of the 5th {International} {Conference} on {Computer} {Supported} {Education}},
publisher = {SciTePress - Science and and Technology Publications},
author = {Totschnig, Michael and Willems, Christian and Meinel, Christoph},
year = {2013},
pages = {593--598},
file = {2013 - openHPI Evolution of a MOOC Platform from LMS to .pdf:/home/chris/Zotero/storage/UBWTRJJ7/2013 - openHPI Evolution of a MOOC Platform from LMS to .pdf:application/pdf},
} }
@article{serth_codeocean_2021, @misc{noauthor_check50_nodate,
title = {{CodeOcean} and {CodeHarbor}: {Auto}-{Grader} and {Code} {Repository}}, title = {check50 {Documentation}},
abstract = {The Hasso Plattner Institute (HPI) successfully operates a MOOC (Massive Open Online Course) platform since 2012. Since 2013, global enterprises, international organizations, governments, and research projects funded by the German ministry of education are partnering with us to operate their own instances of the platform. The focus of our platform instance is on IT topics, which includes programming courses in different programming languages. An important element of these courses are graded hands-on programming assignments. MOOCs, even more than traditional classroom situations, depend on automated solutions to assess programming exercises. Manual evaluation is not an option due to the massive amount of users that participate in these courses. The paper at hand presents two of the tools developed in this context at the HPI: CodeOcean—an auto-grader for a variety of programming languages, and CodeHarbor, a tool to share auto-gradable programming exercises between various online platforms.}, url = {https://cs50.readthedocs.io/projects/check50/en/latest/},
urldate = {2024-08-25},
file = {check50 — check50 Docs:/Users/chris/Zotero/storage/FKGGRXQ8/latest.html:text/html},
}
@misc{noauthor_submit50_nodate,
title = {submit50},
url = {https://cs50.readthedocs.io/submit50/},
abstract = {submit50 is a command-line tool with which you can submit work (e.g., problem sets) to a course (e.g., CS50). Its based on git, a “distributed version control system” that allows you to save diffe...},
language = {en}, language = {en},
journal = {Seventh SPLICE Workshop at SIGCSE 2021 “CS Education Infrastructure for All III: From Ideas to Practice (SPLICE'21)}, urldate = {2024-08-25},
author = {Serth, Sebastian and Staubitz, Thomas and Teusner, Ralf and Meinel, Christoph},
year = {2021},
file = {Serth et al. - CodeOcean and CodeHarbor Auto-Grader and Code Rep.pdf:/home/chris/Zotero/storage/ECQHYIQ8/Serth et al. - CodeOcean and CodeHarbor Auto-Grader and Code Rep.pdf:application/pdf},
} }
@inproceedings{staubitz_codeocean_2016, @inproceedings{staubitz_codeocean_2016,
@ -39,27 +34,39 @@
note = {ISSN: 2165-9567}, note = {ISSN: 2165-9567},
keywords = {Automated Assessment, Computer languages, E-Learning, Electronic learning, Hands-on Experience, Interoperability, MOOC, Online Assessment, Programming, Programming profession, Scalability}, keywords = {Automated Assessment, Computer languages, E-Learning, Electronic learning, Hands-on Experience, Interoperability, MOOC, Online Assessment, Programming, Programming profession, Scalability},
pages = {314--323}, pages = {314--323},
file = {CodeOcean_-_A_versatile_platform_for_practical_programming_excercises_in_online_environments:/home/chris/Zotero/storage/JG6WSTH2/CodeOcean_-_A_versatile_platform_for_practical_programming_excercises_in_online_environments.pdf:application/pdf;IEEE Xplore Abstract Record:/home/chris/Zotero/storage/QVILNJDL/7474573.html:text/html}, file = {CodeOcean_-_A_versatile_platform_for_practical_programming_excercises_in_online_environments:/Users/chris/Zotero/storage/JG6WSTH2/CodeOcean_-_A_versatile_platform_for_practical_programming_excercises_in_online_environments.pdf:application/pdf;IEEE Xplore Abstract Record:/Users/chris/Zotero/storage/QVILNJDL/7474573.html:text/html},
} }
@misc{noauthor_submit50_nodate, @article{serth_codeocean_2021,
title = {submit50}, title = {{CodeOcean} and {CodeHarbor}: {Auto}-{Grader} and {Code} {Repository}},
url = {https://cs50.readthedocs.io/submit50/}, abstract = {The Hasso Plattner Institute (HPI) successfully operates a MOOC (Massive Open Online Course) platform since 2012. Since 2013, global enterprises, international organizations, governments, and research projects funded by the German ministry of education are partnering with us to operate their own instances of the platform. The focus of our platform instance is on IT topics, which includes programming courses in different programming languages. An important element of these courses are graded hands-on programming assignments. MOOCs, even more than traditional classroom situations, depend on automated solutions to assess programming exercises. Manual evaluation is not an option due to the massive amount of users that participate in these courses. The paper at hand presents two of the tools developed in this context at the HPI: CodeOcean—an auto-grader for a variety of programming languages, and CodeHarbor, a tool to share auto-gradable programming exercises between various online platforms.},
abstract = {submit50 is a command-line tool with which you can submit work (e.g., problem sets) to a course (e.g., CS50). Its based on git, a “distributed version control system” that allows you to save diffe...},
language = {en}, language = {en},
urldate = {2024-08-25}, journal = {Seventh SPLICE Workshop at SIGCSE 2021 “CS Education Infrastructure for All III: From Ideas to Practice (SPLICE'21)},
author = {Serth, Sebastian and Staubitz, Thomas and Teusner, Ralf and Meinel, Christoph},
year = {2021},
file = {Serth et al. - CodeOcean and CodeHarbor Auto-Grader and Code Rep.pdf:/Users/chris/Zotero/storage/ECQHYIQ8/Serth et al. - CodeOcean and CodeHarbor Auto-Grader and Code Rep.pdf:application/pdf},
} }
@misc{noauthor_check50_nodate, @inproceedings{totschnig_openhpi_2013,
title = {check50 {Documentation}}, address = {Aachen, Germany},
url = {https://cs50.readthedocs.io/projects/check50/en/latest/}, title = {{openHPI}: {Evolution} of a {MOOC} {Platform} from {LMS} to {SOA}:},
urldate = {2024-08-25}, isbn = {978-989-8565-53-2},
file = {check50 — check50 Docs:/home/chris/Zotero/storage/FKGGRXQ8/latest.html:text/html}, shorttitle = {{openHPI}},
url = {http://www.scitepress.org/DigitalLibrary/Link.aspx?doi=10.5220/0004416905930598},
doi = {10.5220/0004416905930598},
language = {en},
urldate = {2024-08-27},
booktitle = {Proceedings of the 5th {International} {Conference} on {Computer} {Supported} {Education}},
publisher = {SciTePress - Science and and Technology Publications},
author = {Totschnig, Michael and Willems, Christian and Meinel, Christoph},
year = {2013},
pages = {593--598},
file = {2013 - openHPI Evolution of a MOOC Platform from LMS to .pdf:/Users/chris/Zotero/storage/UBWTRJJ7/2013 - openHPI Evolution of a MOOC Platform from LMS to .pdf:application/pdf},
} }
@misc{noauthor_codegrade_nodate, @misc{noauthor_tutor_nodate,
title = {The {CodeGrade} {Documentation} {CodeGrade} {QuietStorm}.1 documentation}, title = {Tutor: the {Docker}-based {Open} {edX} distribution designed for peace of mind — {Tutor} documentation},
url = {https://docs.codegra.de/}, url = {https://docs.tutor.edly.io/},
urldate = {2024-08-25}, urldate = {2024-09-20},
file = {The CodeGrade Documentation — CodeGrade QuietStorm.1 documentation:/home/chris/Zotero/storage/K79YSBN2/docs.codegra.de.html:text/html}, file = {Tutor\: the Docker-based Open edX distribution designed for peace of mind — Tutor documentation:/Users/chris/Zotero/storage/LDFYGRBX/docs.tutor.edly.io.html:text/html},
} }

View File

@ -15,6 +15,7 @@ In particular, this project aims to provide the following benefits to Open edX o
* Scalable hosting for instances of any size. This means for example that the default configuration includes autoscaling of LMS pods to handle increased traffic. * Scalable hosting for instances of any size. This means for example that the default configuration includes autoscaling of LMS pods to handle increased traffic.
* Flexibility: this project aims to be "batteries included" and to support setting up all the resources that you need, with useful default configurations, but it is carefully designed so that operators can configure, replace, or disable any components as needed. * Flexibility: this project aims to be "batteries included" and to support setting up all the resources that you need, with useful default configurations, but it is carefully designed so that operators can configure, replace, or disable any components as needed.
cite:[noauthor_tutor_nodate]
image:edX-k8s.drawio.svg[edX-K8s Deployment,align=center] image:edX-k8s.drawio.svg[edX-K8s Deployment,align=center]
@ -104,4 +105,4 @@ kubectl get svc -n harmony harmony-ingress-nginx-controller
``` ```
To test that your load balancer is working, go to `http://<the external ip>/cluster-echo-test` . To test that your load balancer is working, go to `http://<the external ip>/cluster-echo-test` .
You may need to ignore the HTTPS warnings, but then you should see a response with some basic JSON output. You may need to ignore the HTTPS warnings, but then you should see a response with some basic JSON output.

View File

@ -1,14 +1,14 @@
Kubernetes und Nomad sind beides Plattformen für das Management und die Orchestrierung von Containern, aber sie haben unterschiedliche Konzepte und Architekturen. Um die beiden Systeme zu vergleichen, insbesondere in Bezug auf Begriffe wie Deployment, Job, Pod, und deren Umsetzung in beiden Systemen, ist es wichtig, die jeweilige Architektur und Konzepte im Detail zu verstehen. Kubernetes und Nomad sind beides Plattformen für das Management und die Orchestrierung von Containern, aber sie haben unterschiedliche Konzepte und Architekturen. Um die beiden Systeme zu vergleichen, insbesondere in Bezug auf Begriffe wie Deployment, Job, Pod, und deren Umsetzung in beiden Systemen, ist es wichtig, die jeweilige Architektur und Konzepte im Detail zu verstehen.
=== 1. Grundlegende Architektur === Grundlegende Architektur ===
- **Kubernetes** besteht aus einem Master-Node (Control Plane) und mehreren Worker-Nodes. Der Master-Node übernimmt die Steuerung, Scheduling, und Verwaltung der Clusterressourcen. Die Worker-Nodes führen die Container (Pods) aus. - **Kubernetes** besteht aus einem Master-Node (Control Plane) und mehreren Worker-Nodes. Der Master-Node übernimmt die Steuerung, Scheduling, und Verwaltung der Clusterressourcen. Die Worker-Nodes führen die Container (Pods) aus.
- **Nomad** hat eine zentrale Architektur, bei der ein Nomad-Cluster aus Servern und Clients besteht. Die Server verwalten den Zustand und die Planung von Jobs, während die Clients die Jobs tatsächlich ausführen. Nomad ist etwas flexibler, da es nicht nur Container, sondern auch andere Arten von Workloads (z. B. Nicht-Container-Anwendungen, Batch-Jobs) orchestrieren kann. - **Nomad** hat eine zentrale Architektur, bei der ein Nomad-Cluster aus Servern und Clients besteht. Die Server verwalten den Zustand und die Planung von Jobs, während die Clients die Jobs tatsächlich ausführen. Nomad ist etwas flexibler, da es nicht nur Container, sondern auch andere Arten von Workloads (z. B. Nicht-Container-Anwendungen, Batch-Jobs) orchestrieren kann.
=== 2. **Vergleich wichtiger Konzepte** === Vergleich wichtiger Konzepte ===
[cols="^3a,a,a", frame="none"] [cols="^a,2a,2a", frame="none"]
|=== |===
| Konzept | Kubernetes | Nomad | Konzept | Kubernetes | Nomad
@ -27,7 +27,7 @@ Kubernetes und Nomad sind beides Plattformen für das Management und die Orchest
| **StatefulSet**| Kubernetes verwendet StatefulSets für zustandsbehaftete Anwendungen, die individuelle, persistente Speicher benötigen und geordnete Starts und Beendigungen erfordern. | Nomad unterstützt Stateful-Anwendungen durch die Verwendung von Volumes und Persistent Data. Es gibt jedoch keine direkte Entsprechung zum StatefulSet von Kubernetes. | **StatefulSet**| Kubernetes verwendet StatefulSets für zustandsbehaftete Anwendungen, die individuelle, persistente Speicher benötigen und geordnete Starts und Beendigungen erfordern. | Nomad unterstützt Stateful-Anwendungen durch die Verwendung von Volumes und Persistent Data. Es gibt jedoch keine direkte Entsprechung zum StatefulSet von Kubernetes.
|=== |===
=== 3. **Entsprechungen für eine Nomad-zu-Kubernetes-Umsetzung** === Entsprechungen für eine Nomad-zu-Kubernetes-Umsetzung ===
Wenn du eine **Nomad-Job-Definition** in eine Kubernetes-Umgebung umschreiben möchtest, sind folgende Konzepte besonders relevant: Wenn du eine **Nomad-Job-Definition** in eine Kubernetes-Umgebung umschreiben möchtest, sind folgende Konzepte besonders relevant:
@ -44,7 +44,7 @@ Wenn du eine **Nomad-Job-Definition** in eine Kubernetes-Umgebung umschreiben m
- **Task-Gruppen in Nomad -> Kubernetes Pods** - **Task-Gruppen in Nomad -> Kubernetes Pods**
- In Nomad gibt es "Task Groups", die eine Gruppe von Tasks innerhalb eines Jobs darstellen, die zusammen bereitgestellt werden. Das ist vergleichbar mit Kubernetes Pods, die mehrere Container enthalten. - In Nomad gibt es "Task Groups", die eine Gruppe von Tasks innerhalb eines Jobs darstellen, die zusammen bereitgestellt werden. Das ist vergleichbar mit Kubernetes Pods, die mehrere Container enthalten.
### 4. **Spezielle Deployment-Szenarien** === Spezielle Deployment-Szenarien ===
- **Stateful Anwendungen**: - **Stateful Anwendungen**:
- In Kubernetes verwendet man StatefulSets, um zustandsbehaftete Anwendungen zu deployen, während Nomad hier mit individuellen Jobs und Persistent Volumes arbeitet. - In Kubernetes verwendet man StatefulSets, um zustandsbehaftete Anwendungen zu deployen, während Nomad hier mit individuellen Jobs und Persistent Volumes arbeitet.
@ -52,7 +52,7 @@ Wenn du eine **Nomad-Job-Definition** in eine Kubernetes-Umgebung umschreiben m
- **Service Mesh und Service Discovery**: - **Service Mesh und Service Discovery**:
- Kubernetes verwendet standardmäßig Services und optional zusätzliche Service-Mesh-Lösungen wie Istio, um Netzwerktraffic zu steuern. Nomad verwendet oft Consul für Service Discovery und kann in ein Service-Mesh integriert werden. - Kubernetes verwendet standardmäßig Services und optional zusätzliche Service-Mesh-Lösungen wie Istio, um Netzwerktraffic zu steuern. Nomad verwendet oft Consul für Service Discovery und kann in ein Service-Mesh integriert werden.
=== 5. **Beispiel: Nomad-Job zu Kubernetes Deployment** === Beispiel: Nomad-Job zu Kubernetes Deployment ===
#### Nomad Job Definition: #### Nomad Job Definition:
```hcl ```hcl
@ -76,7 +76,7 @@ job "example" {
} }
``` ```
#### Entsprechendes Kubernetes Deployment: ==== Entsprechendes Kubernetes Deployment: ====
```yaml ```yaml
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
@ -103,10 +103,10 @@ spec:
memory: "256Mi" memory: "256Mi"
``` ```
=== Wichtige Unterschiede und Gemeinsamkeiten für die Umsetzung === Wichtige Unterschiede und Gemeinsamkeiten für die Umsetzung ===
- **Pods in Kubernetes** entsprechen **Task Groups in Nomad**, mit jedem Task in Nomad, der einem Container in Kubernetes entspricht. - **Pods in Kubernetes** entsprechen **Task Groups in Nomad**, mit jedem Task in Nomad, der einem Container in Kubernetes entspricht.
- **Nomad Jobs** sind flexibler und können sowohl Batch-Prozesse als auch Services umfassen, während in Kubernetes Batch-Jobs von Deployments (für kontinuierlich laufende Dienste) unterschieden werden. - **Nomad Jobs** sind flexibler und können sowohl Batch-Prozesse als auch Services umfassen, während in Kubernetes Batch-Jobs von Deployments (für kontinuierlich laufende Dienste) unterschieden werden.
- Kubernetes bietet umfangreiche **Netzwerk- und Service-Optionen** (z. B. Services, Ingress) sowie spezielle Features wie **StatefulSets** und **DaemonSets** für spezifische Anwendungsfälle. - Kubernetes bietet umfangreiche **Netzwerk- und Service-Optionen** (z. B. Services, Ingress) sowie spezielle Features wie **StatefulSets** und **DaemonSets** für spezifische Anwendungsfälle.
Das Umschreiben von Nomad zu Kubernetes kann relativ einfach sein, da viele Konzepte direkt übertragbar sind, es aber spezifische Unterschiede in der Art gibt, wie Tasks gruppiert und verwaltet werden. Das Umschreiben von Nomad zu Kubernetes kann relativ einfach sein, da viele Konzepte direkt übertragbar sind, es aber spezifische Unterschiede in der Art gibt, wie Tasks gruppiert und verwaltet werden.

View File

@ -3,6 +3,3 @@ bibliography::[]
[bibliography] [bibliography]
== References
* [[[tutor]]] https://docs.tutor.edly.io/ "Tutor Documentation" - Tutor is a platform for creating and managing online courses.

BIN
main.pdf (Stored with Git LFS) Normal file

Binary file not shown.