Return to Video

https:/.../35c3-wikipakawg-17-deu-Einfuehrung_in_Kubernetes_Deployments_fuer_Codefor_Labs_hd.mp4

  • 0:00 - 0:18
    35C3 Vorspannmusik
  • 0:18 - 0:24
    Herald: Hallo, hallo! Okay, unser nächster
    Speaker hier ist der Tobias von "Code for
  • 0:24 - 0:31
    Münster" und hat das Thema Kubernetes
    Development oder so – und ich habe keine
  • 0:31 - 0:34
    Ahnung, was das ist und er konnte es mir so
    schnell auch nicht wirklich verständlich
  • 0:34 - 0:38
    erklären, aber er wird das jetzt für
    euch sicher ausführlich machen. Also ein
  • 0:38 - 0:41
    kleiner Applaus für Tobias bitte.
    Applause
  • 0:41 - 0:47
    Tobias: Vielen Dank! Ja, also ich werde
    jetzt in ein paar Minuten mal versuchen
  • 0:47 - 0:52
    Kubernetes so ein bisschen die
    Architektur zu erklären und warum ich
  • 0:52 - 0:58
    glaube, dass das ein ganz gute Plattform
    ist um eben in "Code-for-Labs" seine Apps zu
  • 0:58 - 1:04
    deployen und dann auch weiter maintainen
    zu können. Wer von euch weiß ungefähr, was
  • 1:04 - 1:11
    Kubernetes ist? Ja top! Und kennt ihr auch
    alle schon Docker und Container-
  • 1:11 - 1:16
    Technologie? Also grundsätzlich, wenn
    irgendwelche fragen sind, haut die einfach
  • 1:16 - 1:20
    zwischendurch raus. Wir können hier auch
    so ein bisschen, einfach so, Frage-und-Antwort
  • 1:20 - 1:28
    machen. Ansonsten fange ich einfach mal so
    an. In Münster treffen wir uns regelmäßig,
  • 1:28 - 1:35
    seit drei Jahren mittlerweile, unter dem
    Topic "Code for Münster" und ich glaube seit
  • 1:35 - 1:39
    zwei Jahren haben wir auch schon ein
    Kubernetes-Cluster laufen. Ich selber mache
  • 1:39 - 1:46
    auch beruflich einiges damit, also auch
    deswegen habe ich da eigentlich Spaß dran
  • 1:46 - 1:50
    und mittlerweile, bei uns in Münster, sind
    glaube ich auch schon so drei Leute, die
  • 1:50 - 1:55
    theoretisch Kubernetes betreuen könnten
    und grundsätzlich jeder der neu irgendwie
  • 1:55 - 2:02
    dazu kommt, kommt nicht darum, irgendwie
    Docker kennen zu lernen, aber hat auch
  • 2:02 - 2:09
    durchaus viele Vorteile und ich hoffe die
    kriege ich jetzt rüber gebracht. Wir können
  • 2:09 - 2:14
    mit dem spaßigsten Teil beginnen, da
    versuche ich was zu zeichnen. Wenn das
  • 2:14 - 2:18
    jetzt irgendwie gar nicht klappt, dann habe ich
    die Zeichnung von gestern aus dem Zug noch,
  • 2:18 - 2:23
    die ich Ihnen zeigen könnte. Grundsätzlich
    zur Architektur von Kubernetes: Es gibt
  • 2:23 - 2:32
    da drei Grundprinzipien. Das eine ist das
    alles, was man gegen die Kubernetes-API
  • 2:32 - 2:37
    schicken möchte, also alles was nachher im
    Cluster laufen soll, das definiert man
  • 2:37 - 2:44
    vorher in einer Datei, in einem Manifest. Das ist
    klassischerweise in YAML, kann auch JSON
  • 2:44 - 2:47
    sein, aber es ist einfach ein
    strukturiertes Format. Ich kann mal kurz
  • 2:47 - 2:56
    ein Beispiel, glaube ich, auch zeigen. Hier,
    das sind alle unsere Sachen, die wir bei
  • 2:56 - 3:06
    uns im Cluster laufen lassen und eine
    Beispiel-App hier. Da haben wir halt einige
  • 3:06 - 3:11
    Dateien. Die wichtigste ist diese hier, das
    sieht am Anfang ein bisschen wild aus,
  • 3:11 - 3:16
    im Endeffekt, wenn man Docker kennt und
    Containerisierung, ist das die Zeile. Man
  • 3:16 - 3:22
    sagt dieses Image soll ausgeführt werden
    und kann dazu noch ein paar Dinge angeben
  • 3:22 - 3:26
    und dann gibt es noch so weitere
    Abstraktions-Geschichten, wie Service und
  • 3:26 - 3:30
    Ingress, erzähl ich gleich auch noch was
    dazu.
  • 3:30 - 3:35
    Am Anfang mag das alles ein
    bisschen viel sein, hat aber den Vorteil,
  • 3:35 - 3:40
    dass eben egal auf welchem Cloud-Provider
    man läuft oder ob man selber Server
  • 3:40 - 3:47
    betreibt, man quasi nur diese Kubernetes-
    Abstraktionsschicht braucht und man
  • 3:47 - 3:55
    sich gegenseitig aushelfen kann, gerade
    speziell in diese "Code-For-Labs". Also
  • 3:55 - 4:01
    diese Manifeste kann die Kubernetes-API
    verstehen. Das heißt, am Anfang haben wir
  • 4:01 - 4:15
    hier - ach so - unsere YAML-Dateien und dann
    die Kubernetes-API, die läuft auf einem
  • 4:15 - 4:27
    Server. Das Ganze ist dann die Control
    Plane von Kubernetes, quasi das ist das
  • 4:27 - 4:32
    Herzstück und alles was wir machen, über
    die Kommandozeile oder Ähnliches, geht über
  • 4:32 - 4:39
    den API-Server. Der API-Server hat dann
    noch eine Datenbank im Hintergrund, weil er
  • 4:39 - 4:45
    selbst einfach nicht viel macht. Der nimmt
    einfach nur die Manifeste entgegen, legt die in
  • 4:45 - 4:52
    der Datenbank ab und verteilt die dann
    eventuell an Controller, die es dann noch
  • 4:52 - 4:58
    gibt und davon kann's dann mehrere geben.
    Also an sich, die Struktur, serverseitig, ist
  • 4:58 - 5:07
    relativ simpel. Dann hat man noch weitere
    Server, die nennen wir einfach nur "Nodes",
  • 5:07 - 5:15
    und jeder von diesen Servern hat eine
    Software laufen, nennt sich "Cubelet", und der
  • 5:15 - 5:26
    API-Server unterhält sich mit denen dann
    in erster Linie und, ja, das ist im Grunde
  • 5:26 - 5:29
    die Grundstruktur. Auf all diesen Nodes
    läuft dann Docker oder eine andere
  • 5:29 - 5:37
    Containerisierungsform und die Idee, das
    Besondere jetzt oder ein weiterer
  • 5:37 - 5:40
    Architekturpunkt von Kubernetes ist, dass
    er ständig vergleicht: Was möchten wir
  • 5:40 - 5:47
    eigentlich, dass auf dem Cluster läuft –
    das sind eben unsere YAML Manifeste –
  • 5:47 - 5:52
    und über die Cubelets kann er eben erfragen:
    Was läuft wirklich? Also sobald es eine
  • 5:52 - 5:58
    Differenz gibt, kann er hingehen und
    versuchen, das irgendwie auszugleichen. Also
  • 5:58 - 6:03
    wenn irgendeine App abgestürzt ist oder zu
    viel Speicher gebraucht hat oder ist
  • 6:03 - 6:07
    Netzwerkprobleme gab, dann kriegt er das
    mit. Das ist eventuell
  • 6:07 - 6:12
    ein Unterschied gegenüber einem Setup, wo
    man selber Docker-Container startet oder
  • 6:12 - 6:28
    über "Docker Compose" oder Ähnliches. Gibt's so
    weit schon mal Fragen? Sonst ist das im
  • 6:28 - 6:32
    Grunde das Wichtigste, was so Kubernetes
    angeht. Und es soll jetzt ja auch nicht
  • 6:32 - 6:38
    jeder in den Code-for-Labs komplett das
    Bedienen von Kubernetes
  • 6:38 - 6:44
    beherrschen müssen. Das ist bei uns in
    Münster auch nicht der Fall, aber trotzdem
  • 6:44 - 6:48
    hilft es, dass man mit mehreren Leuten
    gemeinsam Dinge auf dem Cluster spielt
  • 6:48 - 6:59
    oder auf Servern laufen lässt. Diese YAML-
    Manifeste kann man nämlich sehr gut
  • 6:59 - 7:05
    einfach alle in einem Git-Repo liegen
    haben. Diese YAML-Manifeste schickt man
  • 7:05 - 7:11
    gegen die Kubernetes-API, indem man auf
    der Kommandozeile "cubecontrol apply" ausführt,
  • 7:11 - 7:15
    kann man rekursiv machen über ganze
    Verzeichnisse. Und hier bei uns in Münster
  • 7:15 - 7:21
    habt ihr eben schon gesehen, das sind quasi
    die Verzeichnisse mit allen Apps, die wir
  • 7:21 - 7:28
    drauf laufen lassen haben und – halt alle
    Änderungen, die am Server, einem Cluster,
  • 7:28 - 7:33
    geschehen sollen, laufen über dieses Repo.
    Also das heißt: Die Leute stellen Pull-
  • 7:33 - 7:39
    Requests, wenn eine neue App rein soll oder
    wenn irgendwelche Konfigurationen geändert
  • 7:39 - 7:43
    werden oder neue Versionen ausgerollt
    werden soll – und andere können drüber
  • 7:43 - 7:53
    schauen, ob das okay ist und das Ganze dann
    committen, mergen und dann kann man es
  • 7:53 - 7:58
    gegen den Cluster spielen. Das heißt, es
    ist nicht so, dass irgendjemand mit SSH auf
  • 7:58 - 8:03
    Maschinen draufgeht und da dann
    irgendwelche Details konfiguriert und man
  • 8:03 - 8:07
    hat nachher mehrere Server und
    typischerweise weiß keiner so genau wie
  • 8:07 - 8:15
    wichtig welche Konfigurationseinstellung
    ist oder irgendwelche Sicherheitspatches
  • 8:15 - 8:20
    jetzt schon drauf sind oder eben nicht. In
    diesem Kubernetes-Setup können wir
  • 8:20 - 8:25
    theoretisch auch hingehen und den ganzen
    Cluster wegschmeißen, neue Server
  • 8:25 - 8:30
    aufsetzen und alles gegen den Server
    spielen und die Sachen kämen dann wieder
  • 8:30 - 8:35
    hoch. Abgesehen von dem Kram, den man in den
    Datenbanken oder auf dem Filesystem hat, da
  • 8:35 - 8:39
    muss man sich dann eben um die Backups
    kümmern, aber theoretisch ist es ein
  • 8:39 - 8:49
    relativ klar strukturierter Ansatz, also
    man hat gut einsehbar, was auf dem Cluster
  • 8:49 - 8:54
    laufen soll und Kubernetes sorgt dann dafür,
    dass es auch der Fall ist. Man hat einige
  • 8:54 - 9:00
    Abstraktionsmöglichkeiten, wenn es um die
    Domainverwaltung geht oder Let's Encrypt,
  • 9:00 - 9:06
    zeig ich gleich kurz. Und man hat quasi
    dann auch, wenn man sich dieses Repo
  • 9:06 - 9:13
    anschaut, dann so ein Audit Log. Also man
    weiß, was passiert ist, wer wann was gemacht hat,
  • 9:13 - 9:19
    sodass man durchaus mit mehreren Leuten
    gemeinsam so ein Cluster betreiben kann
  • 9:19 - 9:23
    und solange ein paar Leute Kubernetes
    verstehen, können die halt aushelfen und es
  • 9:23 - 9:33
    ist nicht irgendwie eine Person, die nur Zugang
    hat und an der dann alles hängt. Also ein
  • 9:33 - 9:43
    Beispiel ist die unsere "Traffics Shiny App".
    Da kam einer zu uns, der gut R konnte, hatte
  • 9:43 - 9:47
    aber noch keine Idee von Docker und meinte,
    bei ihnen an der Uni gehen sie auch
  • 9:47 - 9:52
    einfach per SSH auf die Maschinen und
    starten da irgendwas und – Aber da
  • 9:52 - 9:58
    wir das halt gar nicht mehr machen, haben
    wir ihm soweit Docker beigebracht – oder es
  • 9:58 - 10:02
    hat ihn auch interessiert und im Endeffekt,
    wenn er an seiner App halt was Neues
  • 10:02 - 10:08
    gebastelt hat, dann kann er auf GitHub
    hingehen und ein neues Release erzeugen, als
  • 10:08 - 10:16
    ein Beispiel für eine sehr einfache Pipeline.
    Und das würde dann automatisch einen neuen
  • 10:16 - 10:28
    Build anstoßen, auf dem Docker-Hub. Und dann
    läuft auf dem Cluster ein Tool von der
  • 10:28 - 10:34
    Firma "weaveworks", das einfach im Cluster
    sitzt und die ganze Zeit auf dem Docker-Hub
  • 10:34 - 10:39
    schaut, ob neue Images da sind. Und
    sobald er eine neue Version findet, würde
  • 10:39 - 10:46
    er die auf den Cluster schieben. Also, da
    muss man jetzt auch nicht unbedingt den
  • 10:46 - 10:51
    Docker-Hub nehmen, man kann auch Quay
    nehmen, anstatt GitHub auch GitLab. GitLab hat
  • 10:51 - 10:56
    selber für Kubernetes, glaube ich, ein paar
    Tools und Integrationen. Aber theoretisch
  • 10:56 - 11:02
    können halt Leute, die auch eben gar keine
    Lust haben an Server-Management, mit
  • 11:02 - 11:06
    relativ simplen Sachen ihre neue App basteln,
    sagen neues Release und wenn sie ein
  • 11:06 - 11:16
    bisschen warten, ist die automatisch dann
    auf dem Cluster in der neuen Version. Wenn
  • 11:16 - 11:21
    jetzt mehrere Leute gemeinsam auf dem
    Cluster unterwegs sind, dann möchte man ja
  • 11:21 - 11:27
    trotzdem, auch wenn sie gegenseitig sich
    freundlich gesinnt sind, ein bisschen
  • 11:27 - 11:35
    Isolation haben, sodass man ihnen die
    – wenn eine App irgendwie Amok läuft,
  • 11:35 - 11:42
    dass das dann nicht alle anderen mit runter
    reißt – und da bietet Kubernetes auch von
  • 11:42 - 11:49
    Haus aus eine Menge Sachen. Einmal kann man
    nach Namespaces isolieren. Hier, das
  • 11:49 - 11:55
    wäre das Kommandozeilen-Tool "CubeControl".
    Hier sieht man jetzt die Namespaces, die
  • 11:55 - 12:01
    laufen und die Apps kann man mehr oder
    weniger gegeneinander über Namespaces
  • 12:01 - 12:05
    isolieren. Aber so könnte man neben meinem
    Team oder eben auch einem Code-For-Lab in
  • 12:05 - 12:14
    die Namespace zuweisen und ihnen den
    Zugriff auf anderen Namespaces verhindern.
  • 12:14 - 12:17
    Und was auch noch interessant ist: Man kann
    dann nachher die Container, die man laufen
  • 12:17 - 12:23
    lässt, denen kann man jeweils zuweisen, wie
    viel Speicher sie maximal benutzen dürfen
  • 12:23 - 12:27
    oder wie viel CPU und in Zukunft
    wahrscheinlich auch noch ein paar mehr
  • 12:27 - 12:34
    Sachen. Das definiert man dann genauso in
    den in den YAML-Manifesten. Deswegen sehen
  • 12:34 - 12:44
    die halt sehr komplex aus, weil man darüber
    alles Mögliche nachher einrichten kann. Es
  • 12:44 - 12:52
    gibt dann – ja – also Kubernetes wird, alle
    drei Monate gibt es ein neues Release und
  • 12:52 - 13:00
    da kommen eigentlich halt laufend neue
    Features rein. Es wird von einer Foundation,
  • 13:00 - 13:10
    von der "Cloud Native Computing Foundation"
    heißt sie glaube ich, soweit betreut und im
  • 13:10 - 13:14
    Hintergrund stehen halt alle möglichen
    großen Firmen und auch viele kleine, von
  • 13:14 - 13:20
    RedHat, Microsoft, Amazon, Google
    logischerweise und die gesamte Entwicklung
  • 13:20 - 13:26
    geschieht aber komplett offen, also man
    kann alles auf GitHub – Kubernetes verfolgen
  • 13:26 - 13:30
    und es gibt so Special Interest Groups für
    die verschiedenen Bereiche, eben auch bei
  • 13:30 - 13:36
    Netzwerk-Geschichten oder Rechte-
    Geschichten, die machen auch teilweise
  • 13:36 - 13:40
    wöchentliche Treffen, wo man sich dann
    irgendwie zuschalten kann über Hangout. Also das
  • 13:40 - 13:46
    ganze System ist halt sehr offen und die
    Community ist sehr wichtig in dem ganzen
  • 13:46 - 13:53
    Entwicklungsprozess und laufend gibt es
    halt weitere Features vor allem in Sachen
  • 13:53 - 14:02
    Sicherheit, ja, oder auch Dinge, die uns
    das Leben einfacher machen. Zum Beispiel
  • 14:02 - 14:07
    gibt es eine Abstraktionsschicht, das nennt
    sich Ingresses. Also wir haben unsere Apps
  • 14:07 - 14:13
    jetzt in Containern laufen auf dem
    Cluster. Jetzt hätten wir gerne, dass wir
  • 14:13 - 14:18
    die von außen immer die Domain erreichen
    können. Und da gibt es einfach ein Tool das
  • 14:18 - 14:27
    man installieren kann. Das nennt sich – das
    ist im Endeffekt ein Proxy auf Basis von
  • 14:27 - 14:36
    NGINX, hier haben wir nur Text, wir können
    mal kurz bei uns schauen, die werden auch
  • 14:36 - 14:41
    über die YAML-Manifeste
    definiert und hier sehen wir jetzt die
  • 14:41 - 14:47
    verschiedenen Domains und die verweisen
    jeweils dann quasi über einen
  • 14:47 - 14:52
    Zwischenschritt noch auf die Container, die
    laufen. Das heißt, wir definieren, ich habe
  • 14:52 - 15:02
    glaube ich, wo hab ichs, wahrscheinlich hier –
    Genau. Das sieht im Endeffekt so aus. Auch
  • 15:02 - 15:09
    wieder für diese "Traffics Shiny App", da
    tragen wir ein: Das soll die Domain
  • 15:09 - 15:17
    sein, verweist auf Container, die unter dem
    Namen laufen und außerdem hätten wir gerne
  • 15:17 - 15:24
    das automatisch Let's Encrypt eingerichtet
    wird. Also derjenige, der diese App bastelt
  • 15:24 - 15:29
    und auf den Cluster schiebt, braucht sich
    selbst darum auch nicht kümmern. Er muss
  • 15:29 - 15:33
    nur sagen, wie die Adresse heißen soll, dann
    wird es angelegt, im Hintergrund "Let´s
  • 15:33 - 15:40
    Encrypt"-Zertifikate erzeugt – die werden
    auch passend erneuert. Man muss es nur halt
  • 15:40 - 15:43
    einmal definieren, dass man das gerne haben
    möchte und man muss noch ein Cert-
  • 15:43 - 15:49
    Manager im Cluster laufen lassen. Also im
    Endeffekt: Dieser Ingres-Controller oder
  • 15:49 - 15:55
    die Cert-Manager, die laufen die ganze Zeit
    im Hintergrund und gucken, ob eine neue
  • 15:55 - 16:01
    Ingress-Definition gegen die Kubernetes-
    API geschickt wird. Und sobald sie das
  • 16:01 - 16:06
    sehen, konfigurieren sie NGINX neu, holen
    sich die "Let's Encrypt"-Zertifikate, legen
  • 16:06 - 16:12
    die passend ab. Also alles Dinge, die man
    sich im Detail anschauen kann, wenn man
  • 16:12 - 16:26
    möchte, aber eben nicht unbedingt muss.
    Was natürlich auch ganz nett ist, wenn man
  • 16:26 - 16:33
    einmal Monitoring für den Cluster
    eingerichtet hat – oder eben Logdateien, die
  • 16:33 - 16:37
    kann man alle zentral sich von all den
    Containern holen, die über mehrere Server
  • 16:37 - 16:45
    verteilt laufen und dann zentral sich
    anschauen. Also zu Monitoring wird oft
  • 16:45 - 16:52
    Prometheus im Hintergrund eingesetzt und
    Graphana, und so kann man sich Dashboards
  • 16:52 - 16:56
    irgendwie basteln und jeweils dann auch für
    eine bestimmte App oder für einen Namespace
  • 16:56 - 17:02
    filtern und den tatsächlichen CPU oder
    Netzwerkverkehr sich anschauen. Also es
  • 17:02 - 17:07
    muss halt nur einmal gemacht werden und
    auch wenn neue Apps eingerichtet werden
  • 17:07 - 17:14
    und hoch kommen, läuft automatisch alles
    mit ins Monitoring oder Logging über
  • 17:14 - 17:23
    Elasticsearch und Kibana. Ja, und dann kann
    man auf der Basis auch Alerts definieren
  • 17:23 - 17:28
    und die in seinen Slack-Channel (also Open-
    Knowledge-Channel) theoretisch irgendwie
  • 17:28 - 17:32
    schicken lassen und dann könnten ein paar
    Freiwillige sich darum kümmern, wenn sie
  • 17:32 - 17:42
    sehen, dass irgendwas im Argen liegt. Paar
    Sachen gibt es auch bei uns immer noch zu
  • 17:42 - 17:48
    verbessern. Also einmal zur Zeit nutzen wir
    den Standardweg zur Authentifizierung. Das
  • 17:48 - 17:54
    sind Zertifikate bei Kubernetes. Das kann
    man eventuell auch eleganter lösen über
  • 17:54 - 17:59
    ein Keycloak-Setup und dann hauen wir
    unsere Leute in eine GitHub-Gruppe und die
  • 17:59 - 18:04
    bekommen dann darüber Zugriff. Wir haben
    auch schon laufen ein verteiltes
  • 18:04 - 18:14
    Dateisystem. Also alle unsere drei Server
    laufen zur Zeit bei Scaleway, und die haben
  • 18:14 - 18:18
    halt irgendwie keinen Cloudspeicher.
    Deswegen muss man sich halt selber darum
  • 18:18 - 18:25
    kümmern, dass man sein System am
    besten verteilt laufen lässt, weil wir ja
  • 18:25 - 18:30
    auch ausfallsicher sein wollen, falls
    mal ein Node irgendwie komplett abschmiert.
  • 18:30 - 18:34
    Und da gibt es auch verschiedene Sachen,
    die fürs Kubernetes Umfeld gebastelt
  • 18:34 - 18:41
    werden. Zum Beispiel OpenEBS. Da
    kann man dann einfach die dis definieren,
  • 18:41 - 18:47
    die bei den bei den Servern hängen und
    sagt, wie stark die Replizierung sein soll.
  • 18:47 - 18:53
    Wir spielen ein bisschen rum. Also da gibt es
    auch immer Versionsupdates und man muss
  • 18:53 - 18:57
    gucken, wie gut man das migriert kriegt. Ist
    noch ein bisschen testweise, aber auch
  • 18:57 - 19:04
    theoretisch dann die Möglichkeit, dass man
    einfach eine App starten lässt, der
  • 19:04 - 19:08
    Speicher OpenEBS zuweist und egal,
    ob diese App nachher – auf welchem Server
  • 19:08 - 19:17
    die nachher startet, kriegt die Zugriff auf
    ihre Daten. Das ist falsch, da muss
  • 19:17 - 19:24
    man ein Leerzeichen zwischen. So weit von
    mir. Wir haben unser Setup bei
  • 19:24 - 19:30
    "Code for Münster" laufen. Ich selber kann auch
    gerne noch mehr zu Kubernetes erzählen.
  • 19:30 - 19:37
    Also auch die nächsten ein, zwei Tage.
    @webwurst ist das Kürzel auf Twitter, GitHub,
  • 19:37 - 19:44
    Gmail oder einfach googlen. Der Name ist nicht so
    oft verwendet. Ja, also die Grundidee für
  • 19:44 - 19:48
    den Talk war ein bisschen, dass, wenn andere
    Code-for-Labs irgendwie auch Lust haben... Am
  • 19:48 - 19:51
    meisten Sinn macht es wahrscheinlich, dass
    man sich Server teilt. Also wir haben eben
  • 19:51 - 19:56
    drei Server, die jetzt jeweils – die
    insgesamt ungefähr 100 Gigabyte RAM
  • 19:56 - 20:02
    haben. Das ist uns eigentlich zu viel, aber
    kleinere sind irgendwie wieder teurer. Also
  • 20:02 - 20:07
    falls sich Leute zusammentun wollen oder
    einfach nur neugierig sind auf Kubernetes
  • 20:07 - 20:14
    und wie man das sinnvoll einsetzt, haben
    wir die Beispiele, helfen gerne aus – ja, und
  • 20:14 - 20:21
    würden gerne auch zusammenarbeit mit
    anderen Code-for-Labs. Vielen Dank.
  • 20:21 - 20:27
    Applaus
  • 20:27 - 20:32
    Herald: Tobias – danke dir. So, wir haben noch
    ein bisschen Zeit für Fragen. Also wenn
  • 20:32 - 20:35
    irgendwer eine Frage hat, dann könnt ihr
    mal irgendein Zeichen geben. Dann komme ich
  • 20:35 - 20:46
    gerne mit dem Mikrofon zu euch.
    Mensch 1: Ich hätte 'ne Frage, und zwar:
  • 20:46 - 20:53
    Ich hab das eben nicht ganz verstanden.
    OpenEBS wolltet ihr als verteiltes Dateisystem
  • 20:53 - 20:59
    später einsetzen. Was nutzt ihr jetzt und
    wieso habt ihr euch für OpenEBS entschieden?
  • 20:59 - 21:04
    Tobias: Wir hatten uns vorher mal Rook
    angeschaut. Wir haben jetzt OpenEBS schon
  • 21:04 - 21:08
    laufen, aber ich nenne es noch
    experimentell. Also version 0.7 läuft,
  • 21:08 - 21:14
    gerade 0.8 ist glaube ich raus. Warum? Ich
    hatte mit denen auf der auf der KubeCon
  • 21:14 - 21:18
    in Kopenhagen gesprochen und das sind
    irgendwie 200 Leute im Team, die viel Storage
  • 21:18 - 21:24
    schon gemacht haben, komplett Open Source
    und ich glaube, die haben da ganz gute
  • 21:24 - 21:29
    ideen – auch wenn das relativ komplex ist,
    was die da so schreiben zu ihrer
  • 21:29 - 21:33
    Architektur. Aber ja, das ist einfach der
    Grund. Wir sind auch offen für anderes, wenn's
  • 21:33 - 21:38
    gute Erfahrungen gibt, wenn du welche hast...
    Mensch1: Nee, also ich frage deshalb, weil
  • 21:38 - 21:43
    wir haben nämlich auch den Instanzen,
    mit denen ich bisher Erfahrungen gesammelt
  • 21:43 - 21:48
    habe, war das immer das große Fragezeichen
    am Ende: Was was benutzen wir als Persistant
  • 21:48 - 21:56
    Storage? Weil ich finde, da sind die
    Hürden sehr hoch für einen Einstieg, sage ich
  • 21:56 - 22:02
    mal. – oder was auch immer man da
    irgendwie als als Dateisystem benutzen kann...
  • 22:02 - 22:04
    Und deswegen war ich einfach
    nur neugierig.
  • 22:04 - 22:06
    Tobias: Das stimmt.
    Mensch1: Weil, die Entscheidung steht
  • 22:06 - 22:10
    uns auch noch bevor.
    Tobias: Alternativ, wenn du eine verteilte
  • 22:10 - 22:16
    Datenbank hast, kannst du eben auch Local
    Storage benutzen, aber – ja – musst du
  • 22:16 - 22:21
    halt irgendwie über die Datenbank
    dann gehen. Ja.
  • 22:21 - 22:24
    Herald: Hier hinten war noch...
  • 22:24 - 22:28
    Mensch 2: Hallo. Ich wollte fragen: Wie lange
    hat es dauert, euch das ganze Setup aufzusetzen
  • 22:28 - 22:32
    und seid ihr irgendwo darauf gestoßen,
    wo ihr das nicht so umsetzen konntet, wie ihr
  • 22:32 - 22:36
    das umsetzen wolltet, beim Alarming oder
    Monitoring oder so? Also irgendwas rein
  • 22:36 - 22:42
    hacken haben müssen?
    Tobias: Das Ganze ist schwer zu sagen. Als
  • 22:42 - 22:48
    wir angefangen haben, hatten wir auch
    relativ – ich glaube, da gab es noch nicht so
  • 22:48 - 22:51
    super viel fertiges Tooling. Ich glaub,
    Prometheus und Graphana hatten wir selbst
  • 22:51 - 22:57
    gebastelt, dann mit Docker auch noch, und das
    war so "learning by doing" auch ein bisschen.
  • 22:57 - 23:03
    Aber mittlerweile sehe ich jetzt eben
    halt: Storage ist immer ein bisschen eine
  • 23:03 - 23:08
    Schwierigkeit oder verteilte Datenbanken,
    aber grundsätzlich – der Aufbau von dem
  • 23:08 - 23:15
    System oder eben auch diese einfache
    Pipeline mit Flux, das steht halt und
  • 23:15 - 23:22
    tut. Also, da haben wir keine großen Probleme
    gerade. Auch im Monitoring ändert
  • 23:22 - 23:28
    sich halt laufend was. Also am spannendsten
    ist jetzt der Prometheus Operator
  • 23:28 - 23:32
    eventuell und da gibt es dann Kube
    Prometheus, und die generieren dir eine
  • 23:32 - 23:36
    ganze Menge Dashboards, und du hast auch
    eine Art Programmiersprache dann für die
  • 23:36 - 23:41
    Dashboards, die du verwenden kannst. Ja, es gibt
    ständig was Neues zu entdecken und
  • 23:41 - 23:46
    auszuprobieren.
    Herald: Okay, hier war noch jemand...
  • 23:46 - 23:56
    Mensch 3: Vielleicht könnt ihr auch noch
    probieren, die StorageOS. ich
  • 23:56 - 24:02
    habe mit den Leuten auch geredet auch in
    Kopenhagen. Sieht auch interessant aus.
  • 24:02 - 24:05
    Und dann, Sie haben drei Server?
    Tobias: Ja.
  • 24:05 - 24:08
    Mensch 3: So, das sind drei Master
    und auch Node?
  • 24:08 - 24:13
    Tobias: Ja. Also wir haben den Master
    halt nur auf einem laufen, aber
  • 24:13 - 24:16
    trotzdem nutzen wir den auch für normale –
    Mensch 3: Nur ein Master?
  • 24:16 - 24:19
    Tobias: Ja, wir haben einen Master,
    und wenn der down geht,
  • 24:19 - 24:23
    läuft ja der restliche Kram auch noch
    weiter, bis wir ihn wieder hochziehen.
  • 24:23 - 24:27
    Das Ding ist, dass wir das eben auch
    alles hobbymäßig machen und selber
  • 24:27 - 24:35
    finanzieren. Also für das Code-for... auch
    nur einer. Funktioniert aber, wenn
  • 24:35 - 24:39
    ich den einfach neu starte, dann
    warte ich fünf Minuten und dann hat sich
  • 24:39 - 24:44
    alles wieder gefunden. Ja, und die Apps auf
    den anderen Nodes laufen halt eh weiter und
  • 24:44 - 24:49
    können weiter von außen erreichbar sein.
    Mensch 3: Habt ihr schon mal gedacht, ein
  • 24:49 - 24:55
    Operator? Dann bräuchte man nicht
    die Storage distribuieren, aber dann
  • 24:55 - 25:02
    alle sieben, dann wird zum Beispiel Postgres,
    der wird realisiert und der Operator, der
  • 25:02 - 25:05
    handelt das.
    Tobias: Ja, gucken wir uns auf jeden Fall
  • 25:05 - 25:12
    an, was es da gibt. Oft hat man eben nicht –
    Elasticsearch tut es ganz gut, wenn man
  • 25:12 - 25:17
    das Ding in dreifach laufen lässt. Postgres
    und MySQL kann man ganz gut hochziehen als
  • 25:17 - 25:24
    Operator über mehrere Nodes, aber
    sobald irgendwas schief läuft, können die
  • 25:24 - 25:27
    Operator zur Zeit da noch nicht aushelfen.
    Dann muss man die man alle manuell neu
  • 25:27 - 25:31
    starten. Das ist okay, aber irgendwie –
    es gibt nicht so viel was sich selbst dann
  • 25:31 - 25:33
    repariert. Wird wahrscheinlich noch kommen,
    aber –
  • 25:33 - 25:40
    Herald: Du hattest eine Frage?
    Mensch 4: Du hattest gerade, wenn der
  • 25:40 - 25:45
    Master kaputt geht, dann funktionieren die
    Services trotzdem weiter. Wie macht ihr das
  • 25:45 - 25:49
    dann mit diesem Ingress, also wo kommt
    das DNS an?
  • 25:49 - 25:54
    Tobias: Wir haben es versucht über so
    einen DNS Round Robin. Also es war einfach –
  • 25:54 - 25:59
    Der Ingress Controller läuft auf allen – dingens.
    Ja gerne was Besseres, aber bei Scaleway, wo wir
  • 25:59 - 26:03
    sind, die haben halt keinen Loadbalancer
    davor. Also die bieten das nicht irgendwie als
  • 26:03 - 26:07
    Service an. Die haben wohl eine IP, die man
    von Node zu Node ziehen kann, aber auch nicht
  • 26:07 - 26:13
    gleichzeitig an mehrere. Ja, es ist halt ein
    günstiges Setup für Code-for. Wenn sich mehr
  • 26:13 - 26:17
    zusammentun, können wir vielleicht auch
    etwas Spannenderes uns überlegen. Ja, aber
  • 26:17 - 26:28
    bisher ist es einfach so gelöst. Wir haben jetzt
    ja auch nicht so lebenswichtige Apps, genau.
  • 26:28 - 26:41
    Herald: Okay, hat noch jemand eine Frage? Ich
    sehe keine mehr. Sonst schreit noch mal jemand.
  • 26:41 - 26:47
    Tobias: Gut, also wenn noch irgendwie
    Fragen später sind: Schreibt auf "Open-
  • 26:47 - 26:51
    Knowledge-Slack, Code for Münster" oder
    @webwurst oder über Twitter oder sonstwie.
  • 26:51 - 26:56
    Würde ich mich gerne unterhalten mit Leuten.
    Herald: Dann nochmal Applaus für Tobias, bitte.
  • 26:56 - 27:02
    Applaus
    Tobias: Vielen Dank.
  • 27:02 - 27:07
    Abspannmusik
  • 27:07 - 27:24
    Untertitel erstellt von c3subtitles.de
    im Jahr 2019. Mach mit und hilf uns!
Title:
https:/.../35c3-wikipakawg-17-deu-Einfuehrung_in_Kubernetes_Deployments_fuer_Codefor_Labs_hd.mp4
Video Language:
German
Duration:
27:24

German subtitles

Revisions