From 375e08921f888ac11ebcfe1159e1ede5877c2845 Mon Sep 17 00:00:00 2001 From: Tomasz Date: Wed, 31 May 2023 13:30:01 +0200 Subject: [PATCH 1/2] Kubernets intro --- IUM_12.Publikacja.ipynb | 112 +++++++++++++++++++++++++++++++++------- IUM_13.Kubernets.ipynb | 102 ++++++++++++++++++++++++++++++++++++ img/pod.jpg | Bin 0 -> 56807 bytes 3 files changed, 194 insertions(+), 20 deletions(-) create mode 100644 IUM_13.Kubernets.ipynb create mode 100755 img/pod.jpg diff --git a/IUM_12.Publikacja.ipynb b/IUM_12.Publikacja.ipynb index acef223..e9e1315 100644 --- a/IUM_12.Publikacja.ipynb +++ b/IUM_12.Publikacja.ipynb @@ -22,7 +22,11 @@ { "cell_type": "markdown", "id": "a5f10a0e", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "# Abstract\n", "- Umiejętność pisania artykułu naukowego może okazać się przydatna dla osób zajmujących się uczeniem maszynowym.\n", @@ -33,7 +37,11 @@ { "cell_type": "markdown", "id": "35d3630d", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "# Introduction\n", "\n", @@ -49,7 +57,11 @@ { "cell_type": "markdown", "id": "1033fc4d", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "# Related work\n", "\n", @@ -66,7 +78,11 @@ { "cell_type": "markdown", "id": "2c7eb238", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "# Methods" ] @@ -76,7 +92,7 @@ "id": "changed-president", "metadata": { "slideshow": { - "slide_type": "slide" + "slide_type": "fragment" } }, "source": [ @@ -94,7 +110,11 @@ { "cell_type": "markdown", "id": "8cb9b025", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "" ] @@ -102,7 +122,11 @@ { "cell_type": "markdown", "id": "d3e245eb", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Tytuł\n", "- powinien odzwierciedlać treść artykułu ;)\n", @@ -115,7 +139,11 @@ { "cell_type": "markdown", "id": "1f150ddb", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Abstrakt\n", "\n", @@ -127,7 +155,11 @@ { "cell_type": "markdown", "id": "6005b4bd", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Wprowadzenie\n", " - Kontekst badań\n", @@ -139,7 +171,11 @@ { "cell_type": "markdown", "id": "1308de25", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Related work\n", " - Kontekst naukowy\n", @@ -152,7 +188,11 @@ { "cell_type": "markdown", "id": "b6cf4464", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Metody\n", "- Jak przeprowadziliśmy nasze badania/eksperymenty\n", @@ -168,7 +208,11 @@ { "cell_type": "markdown", "id": "5aee7988", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Wyniki\n", "- Jakie wyniki otrzymaliśmy\n", @@ -179,7 +223,11 @@ { "cell_type": "markdown", "id": "7be88b24", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "#### Konkluzje\n", "- Interpretacja wyników\n", @@ -191,7 +239,11 @@ { "cell_type": "markdown", "id": "4753cf22", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "## Latex\n", "\n", @@ -209,7 +261,11 @@ { "cell_type": "markdown", "id": "918e3b39", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "### Struktura\n", "```latex\n", @@ -345,7 +401,11 @@ { "cell_type": "markdown", "id": "3ea5c879", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "```bibtex\n", "\n", @@ -410,8 +470,12 @@ }, { "cell_type": "markdown", - "id": "58d780a2", - "metadata": {}, + "id": "ba75e390", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "## arXiv.org\n", " - https://arxiv.org/\n", @@ -422,7 +486,11 @@ { "cell_type": "markdown", "id": "e1822b3c", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "### JupyterBook\n", "https://jupyterbook.org/en/stable/intro.html\n" @@ -431,7 +499,11 @@ { "cell_type": "markdown", "id": "ceef2f3f", - "metadata": {}, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, "source": [ "### The Turing Way\n", "*The Turing Way handbook to reproducible, ethical and collaborative data science*\n", diff --git a/IUM_13.Kubernets.ipynb b/IUM_13.Kubernets.ipynb new file mode 100644 index 0000000..0115568 --- /dev/null +++ b/IUM_13.Kubernets.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3c047009", + "metadata": {}, + "source": [ + "# Kubernets\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "000a2f83", + "metadata": {}, + "source": [ + "Kubernets (aka. K8s) - system służący do automatyzacji:\n", + " - deployemntu\n", + " - skalowania\n", + " - zarządzania \n", + " skonteneryzowanymi aplikacjami" + ] + }, + { + "cell_type": "markdown", + "id": "14048d45", + "metadata": {}, + "source": [ + "## Motywacja\n", + "- Kubernets jest środowiskiem, w którym działa Kubeflow - system stworzony z myślą o rozwoju i deploymencie modeli ML" + ] + }, + { + "cell_type": "markdown", + "id": "f58251c5", + "metadata": {}, + "source": [ + "## Instalacja\n", + "- Instalacja do nauki i eksperymentów (nieprodukcyjna): https://minikube.sigs.k8s.io/docs/start/" + ] + }, + { + "cell_type": "markdown", + "id": "6a1263d7", + "metadata": {}, + "source": [ + "## Hello Minikube - interaktywny samouczek\n", + "1. Otwórz stronę: https://kubernetes.io/pl/docs/tutorials/hello-minikube/\n", + "2. Kliknij na \"Launch Terminal\" i wykonuj polecenia w otwartym terminalu (możesz klikać na fragmentach kodu a same przekopiują się do terminala i uruchomią)\n", + "\n", + "Większość interaktywnych samouczków z kubernetes.io przestała działać z końcem marca (https://kubernetes.io/blog/2023/02/14/kubernetes-katacoda-tutorials-stop-from-2023-03-31/), ale ten powyżej (i czasami niektóre inne, jeśli macie szczęście) wciąż działa" + ] + }, + { + "cell_type": "markdown", + "id": "cd5b7090", + "metadata": {}, + "source": [ + "## Terminologia\n", + "- Pod - (z angielskiego \"strąk\", np. strąk groszku, ale też grupa wielorybów <\"pod of whales\">)\n", + " grupa jednego lub więcej kontenerów wraz z przynależnymi wolumenami (volumes), adresem IP i informacją jak mogą być uruchomione\n", + "\n", + "- Node (węzeł) - pody (jeden lub więcej) są uruchamiane na węzłach - maszynach (fizycznych lub wirtualnych)\n", + "- Cluster - grupa węzłów\n", + "- Service - abstrakcja zapewniająca stabilny dostęp do Podów. Ponieważ Pod-y są efemeryczne, mogą być uruchamiane automatczynie np. w wyniki awarii węzła. Service definiuje jakie Pod-y (np. z jaką etykietą) są dostępne pod danym portem (więcej informacji: https://kubernetes.io/docs/concepts/services-networking/service/)" + ] + }, + { + "cell_type": "markdown", + "id": "ac693d0c", + "metadata": {}, + "source": [ + "## Materiały\n", + "Zapoznaj się z następującymi materiałami:\n", + "1. https://kubernetes.io/pl/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/\n", + "1. https://kubernetes.io/pl/docs/tutorials/kubernetes-basics/explore/explore-intro/\n", + "2. https://kubernetes.io/pl/docs/tutorials/kubernetes-basics/expose/expose-intro/" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/img/pod.jpg b/img/pod.jpg new file mode 100755 index 0000000000000000000000000000000000000000..ff0003831a5d3ce1edebf2e6f36607baac637cdd GIT binary patch literal 56807 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

6RI2aPToDS=0y~5F~XtG#jPwKwub)scjw+2w~;$ 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 Date: Wed, 31 May 2023 13:40:53 +0200 Subject: [PATCH 2/2] Update --- IUM_13.Kubernets.ipynb | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/IUM_13.Kubernets.ipynb b/IUM_13.Kubernets.ipynb index 0115568..0ee9f84 100644 --- a/IUM_13.Kubernets.ipynb +++ b/IUM_13.Kubernets.ipynb @@ -5,13 +5,14 @@ "id": "3c047009", "metadata": {}, "source": [ - "# Kubernets\n", - "\n" + "# Kubernetes\n", + "\n", + "" ] }, { "cell_type": "markdown", - "id": "000a2f83", + "id": "8b27f9bb", "metadata": {}, "source": [ "Kubernets (aka. K8s) - system służący do automatyzacji:\n", @@ -23,16 +24,16 @@ }, { "cell_type": "markdown", - "id": "14048d45", + "id": "ce90b7e7", "metadata": {}, "source": [ "## Motywacja\n", - "- Kubernets jest środowiskiem, w którym działa Kubeflow - system stworzony z myślą o rozwoju i deploymencie modeli ML" + "- Kubernetes jest środowiskiem, w którym działa Kubeflow - system stworzony z myślą o rozwoju i deploymencie modeli ML" ] }, { "cell_type": "markdown", - "id": "f58251c5", + "id": "251b4267", "metadata": {}, "source": [ "## Instalacja\n", @@ -41,7 +42,7 @@ }, { "cell_type": "markdown", - "id": "6a1263d7", + "id": "5bad769c", "metadata": {}, "source": [ "## Hello Minikube - interaktywny samouczek\n", @@ -53,21 +54,23 @@ }, { "cell_type": "markdown", - "id": "cd5b7090", + "id": "1f3bc2f7", "metadata": {}, "source": [ "## Terminologia\n", "- Pod - (z angielskiego \"strąk\", np. strąk groszku, ale też grupa wielorybów <\"pod of whales\">)\n", " grupa jednego lub więcej kontenerów wraz z przynależnymi wolumenami (volumes), adresem IP i informacją jak mogą być uruchomione\n", "\n", - "- Node (węzeł) - pody (jeden lub więcej) są uruchamiane na węzłach - maszynach (fizycznych lub wirtualnych)\n", + "- Node (węzeł) - pody (jeden lub więcej) są uruchamiane na węzłach - maszynach (fizycznych lub wirtualnych). Na każdym węźle jest uruchomiony proces \"kublet\", służący do komunikacji z \"control plane\", czyli serwerem kontrolującym klaster\n", "- Cluster - grupa węzłów\n", - "- Service - abstrakcja zapewniająca stabilny dostęp do Podów. Ponieważ Pod-y są efemeryczne, mogą być uruchamiane automatczynie np. w wyniki awarii węzła. Service definiuje jakie Pod-y (np. z jaką etykietą) są dostępne pod danym portem (więcej informacji: https://kubernetes.io/docs/concepts/services-networking/service/)" + "- Service - abstrakcja zapewniająca stabilny dostęp do Podów. Ponieważ Pod-y są efemeryczne, mogą być uruchamiane automatczynie np. w wyniki awarii węzła. Service definiuje jakie Pod-y (np. z jaką etykietą) są dostępne pod danym portem (więcej informacji: https://kubernetes.io/docs/concepts/services-networking/service/)\n", + "\n", + "- Schemat klastra: https://kubernetes.io/docs/concepts/overview/components/" ] }, { "cell_type": "markdown", - "id": "ac693d0c", + "id": "803a1108", "metadata": {}, "source": [ "## Materiały\n", @@ -76,6 +79,15 @@ "1. https://kubernetes.io/pl/docs/tutorials/kubernetes-basics/explore/explore-intro/\n", "2. https://kubernetes.io/pl/docs/tutorials/kubernetes-basics/expose/expose-intro/" ] + }, + { + "cell_type": "markdown", + "id": "c21daf1a", + "metadata": {}, + "source": [ + "## Zadanie\n", + "Brak ;)" + ] } ], "metadata": {