pixel
Seite wählen

NETWAYS Blog

A short introduction to Kubernetes

Ever since I was working in a DevOps role I was very curious about Kubernetes, what better way is there to learn through creating a YouTube video? Let me guide through the process of creating the YouTube Tutorial!

 

How did I get started?

First off I tried to watch a few different YouTube videos myself, and then transitioned to writing a script for it.
Since I was familiar with OpenStack, it was easier to get into it by diving head first into the documentation.
Even though the Kubernetes Documentation might be too technical or not well explained in some parts, in combination with the youtubers and blog posts you can get a good overview of K8s.
I gathered all the information I could find about all the objects and features in Kubernetes, and tried to get a broad understanding on how everything works.

 

Let’s hit the record button!

Since then I have been trying to see how I could record it best and which information I was getting across and what I needed to change.
After redoing my script and selecting, what Kubernetes knowledge I’d like to convey, I was finally able to get more into doing a proper recording.
Check out our webinar room at NETWAYS HQ! I was really happy that we already have such a good lighting and recording setup!

Rinse and repeat.

I recorded with OBS and really had a fun time, trying to get everything right and present it in a nice way.
As soon as I got some proper recordings down I demuxed the files with OBS and went on to edit the footage.
First I sorted everything into Intro, Welcome, Objects, Features, Benefits of Kubernetes and how to get started folders.
So I could easily edit the footage before putting it together.
Then I went into Adobe Premiere and cut the clips short and removed the unnecessary audio tracks.
After that I put everything together, threw in the Intro and Outro.
I was almost done after that, just needed to denoise the audio tracks and find some music for the intro and outro!

 

It’s a wrap!

Then the whole thing was finished, yay!
Who would’ve thought, creating a 12-minute-video would need that many steps prior, before it is actually uploaded on the internet? 😀 It was exciting to create the Kubernetes YouTube Tutorial, but now it’s even more exciting having the video ready!
Here’s the result and I hope you have fun watching the video, and maybe it helps you to get into Kubernetes more easily now!

YouTube player

 

If you are curious about your own Managed Kubernetes environment, then our NWS website is a great source of information for that. Our MyEngineers are also always available to help you create your dream cluster.
Cheers and have a good one!

New graphics cards for your NETWAYS projects!

We want to get the most out of our servers with a new feature and have provided an upgrade to our hardware. GPUs now available! Despite the current graphics card shortage, NWS now has the NVIDIA A10 graphics card for your servers!

Whether it’s 3D rendering, machine learning, or artificial intelligence, the new GPU combines top-notch professional graphics with powerful processing power and AI acceleration. It meets today’s challenges in design, creativity, and science.

Boost your business with even more powerful VMs for your NETWAYS Cloud and Managed Kubernetes projects. Whether you’re in the cloud or using Managed Kubernetes, if you want to process very large or complex amounts of data especially quickly, you’ll now find the right VM model thanks to our GPU-equipped servers.

 

So what can you accelerate with the new GPUs now?

Media and Video Editing

The NVIDIA A10 can handle 3D rendering, video transcoding, AI audio and video effects, and significantly shorten your processing time. You can work on your projects faster and get results sooner.

Remote Collaboration

The graphics card also includes the ability to use a high performance workstation with NVIDIA RTX Technology for ray tracing.

Artificial Intelligence & Deep Learning

The graphics card instances also provide high performance for training your AI or Deep Learning processes. This can shorten learning processes and get your team to their desired goal faster! Likewise, data analysis and other workspaces benefit from the high performance improvement thanks to GPU.

 

How can I use the feature now? We’ll show you!

All you have to do is create a new server, select the operating system and add GPU Accelerated.
Here we show what this would look like:

This would conclude our newest feature.
If you have any questions or problems, our MyEngineer team is always there to help you out.

Have fun with the new performance, wishes you the NWS Team 🙂

openSUSE-Kubic getestet…

Schon mal von openSUSE-Kubic gehört? Nein? Okay, als Fan des Chamäleons habe ich davon schon öfter gelesen, aber ausprobiert habe ich es  noch nie.
Also dann beschreibe ich kurz was sich hinter Kubic versteckt.

Kubic ist eine zertifizierte Kubernetes Distribution, die auf openSUSE-MicroOS basiert und dem openSUSE-Tumbleweed (Rolling-Release) zu Grunde liegt.
Es ist sozusagen ein fertiges Betriebssystem für den Einsatz von Kubernetes, alle nötigen Tools sind schon vorinstalliert, damit man sofort beginnen kann
seinen K8s Cluster aufzusetzen oder z.B. Docker Container zu bauen.
Hier wurde ein transactional Server eingerichtet, das heißt, es ist ein read-only BTRFS Filesystem gemountet und man kann nicht wie unter openSUSE/SLES bekannt zypper
per Kommandozeile benutzen um Software-Paket nach zu installieren, aber ich werde noch CodeSnippets mit einbauen wo das ersichtlich wird. Sondern jedes neu installiertes Software-Paket wird vorerst als Snapshot zur Verfügung gestellt, der dann nach dem Reboot des Servers mit einbezogen wird.
Diese Distribution Kubic kann man sich in verschiedenen Formaten herunterladen, z.B. als RaspberryPI, openStack oder ISO-Image uvm siehe Link. Ich habe mir das in unserer openStack Umgebung als Image geladen und getestet.

So dann schauen wir uns das mal auf der Kommandozeile an:
kubic:~ # rpm -qa |grep kube*
patterns-containers-kubic_worker-5.0-25.1.x86_64
hello-kubic-k8s-yaml-1.4-1.3.noarch
kube-prometheus-k8s-yaml-0.5.0+git20200729.f0955e0-1.5.noarch
kuberlr-0.3.1-1.6.x86_64
kubernetes1.22-client-1.22.2-1.1.x86_64
patterns-containers-kubeadm-5.0-25.1.x86_64
patterns-containers-kubic_admin-5.0-25.1.x86_64
kubic-haproxycfg-0.12.2-1.1.x86_64
kubernetes1.22-client-common-1.22.2-1.1.x86_64
kubicctl-0.12.2-1.1.x86_64
kubernetes-client-1.22.2-21.2.x86_64
health-checker-plugins-kubic-1.6-1.1.noarch
kubicd-0.12.2-1.1.x86_64
kubernetes1.22-kubelet-1.22.2-1.1.x86_64
kubernetes1.22-kubelet-common-1.22.2-1.1.x86_64
patterns-containers-kubic_loadbalancer-5.0-25.1.x86_64
kubernetes1.21-kubelet-1.21.5-2.1.x86_64
kubernetes-kubelet-1.22.2-21.2.x86_64
kubernetes1.22-kubeadm-1.22.2-1.1.x86_64
cri-o-kubeadm-criconfig-1.22.0-1.2.x86_64
patterns-containers-container_runtime_kubernetes-5.0-25.1.x86_64
kubernetes-kubeadm-1.22.2-21.2.x86_64
kubic:~ # rpm -qa |grep helm
helm-3.6.3-2.1.x86_64

Das Paket Docker musste ich noch nachinstallieren und mich noch in die Gruppe docker hinzufügen, damit ich mit dem Tool Minikube meine ersten Kubernetes Cluster testen konnte.

Da ich das schon im Vorfeld getan habe zeige ich nochmal kurz den Befehl mit dem ich das Paket Docker, Tmux installiert habe:
ransactional-update pkg install tmux docker
Checking for newer version.
transactional-update 3.6.2 started
Options: pkg install tmux docker
Separate /var detected.
2021-11-29 13:42:32 tukit 3.6.2 started
2021-11-29 13:42:32 Options: -c10 open
2021-11-29 13:42:32 Using snapshot 10 as base for new snapshot 11.
2021-11-29 13:42:32 Syncing /etc of previous snapshot 9 as base into new snapshot "/.snapshots/11/snapshot"
ID: 11
2021-11-29 13:42:33 Transaction completed.
Calling zypper install
zypper: nothing to update
Removing snapshot #11...
2021-11-29 13:42:34 tukit 3.6.2 started
2021-11-29 13:42:34 Options: abort 11
2021-11-29 13:42:34 Discarding snapshot 11.
2021-11-29 13:42:34 Transaction completed.
transactional-update finished

Diese Meldung kommt jetzt, da diese Pakete schon vorhanden sind, sonst würde zypper im Hintergrund die Pakete installieren.
Anschließend muss man einen Reboot durchführen, sonst wird das nicht live geschaltet.
Dann noch folgendes:
usermod -a username -G docker
Damit man mit einem bestimmten $user docker run … ausführen kann.

Hier nochmal zur Vollständigkeit eine Installation vom Paket LXC
transactional-update pkg install lxc
Checking for newer version.
transactional-update 3.6.2 started
Options: pkg install lxc
Separate /var detected.
2021-11-30 08:37:36 tukit 3.6.2 started
2021-11-30 08:37:36 Options: -c11 open
2021-11-30 08:37:36 Using snapshot 11 as base for new snapshot 12.
2021-11-30 08:37:36 Syncing /etc of previous snapshot 10 as base into new snapshot "/.snapshots/12/snapshot"
ID: 12
2021-11-30 08:37:36 Transaction completed.
Calling zypper install
2021-11-30 08:37:37 tukit 3.6.2 started
2021-11-30 08:37:37 Options: callext 12 zypper -R {} install lxc
2021-11-30 08:37:37 Executing `zypper -R /.snapshots/12/snapshot install lxc`:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 5 NEW packages are going to be installed:
libcap-progs liblxc1 lxc lxcfs lxcfs-hooks-lxc

5 new packages to install.
Overall download size: 860.6 KiB. Already cached: 0 B. After the operation, additional 2.6 MiB will be used.
Continue? [y/n/v/...? shows all options] (y):

Checking for file conflicts: [......done]
Warning: 5 packages had to be excluded from file conflicts check because they are not yet downloaded.

Note: Checking for file conflicts requires not installed packages to be downloaded in advance in
order to access their file lists. See option '--download-in-advance / --dry-run --download-only'
in the zypper manual page for details.
2021-11-30 08:37:54 Application returned with exit status 0.
2021-11-30 08:37:55 Transaction completed.
Trying to rebuild kdump initrd
2021-11-30 08:37:55 tukit 3.6.2 started
2021-11-30 08:37:55 Options: close 12
2021-11-30 08:37:55 New default snapshot is #12 (/.snapshots/12/snapshot).
2021-11-30 08:37:55 Transaction completed.

Wichtig hier:
Please reboot your machine to activate the changes and avoid data loss.
New default snapshot is #12 (/.snapshots/12/snapshot).
transactional-update finished

Wie man jetzt zum Testen von Kubernetes mit z.B. Minikube kommt, werde ich hier nicht beschreiben, denn dazu gibt es
genügend Informationen im Internet. Vor allem kann ich das Kubernetes , das wir hosten, sehr empfehlen, einfach Anfrage bei uns starten.

Nur wie gesagt, wer den Einstieg in ein selbst gehostetes K8s lernen möchte, ist der Einstieg mit openSUSE-Kubic sehr vorteilhaft, da vieles schon vorkonfiguriert ist.

So ich denke für den ersten Überblick von Kubic reicht das vorerst, ich wünsche schon mal viel Spaß beim ausprobieren und besucht unser K8s Training!

Johannes Carraro
Johannes Carraro
Senior Systems Engineer

Bevor Johannes bei NETWAYS anheuerte war er knapp drei Jahre als Systemadministrator in Ansbach tätig. Seit Februar 2016 verstärkt er nun unser Team Operations als Senior Systems Engineer. In seiner Freizeit spielt Johannes E-Gitarre, bastelt an Linux Systemen zuhause herum und ertüchtigt sich beim Tischtennisspielen im Verein, bzw. Mountainbiken, Inlinern und nicht zuletzt Skifahren.

4 Dinge, die neu sind bei NWS Kubernetes

Getreu dem Motto: „you answered – we listened“ hat unser NWS-Platform-Team diese Woche für unsere Kunden neue Optionen zum Erstellen von Managed Kubernetes Clustern eingeführt, die im folgenden kurz erläutert und vorgestellt werden:

 

1. Neue Kubernetes Versionen

Das neueste Kubernetes Major Release 1.21 ist jetzt – einen Monat nach dem offiziellem Release – auch für NWS Kunden einsatzbereit! Änderungen und Neuigkeiten findet man wie gewohnt im offiziellen Changelog.

Neben der aktuellen Version 1.21 gibt es weiterhin die Möglichkeit, Kubernetes Cluster in den Versionen 1.18, 1.19 und 1.20 zu erstellen. Die Version 1.18 ist  jedoch bereits „End of Life“ und deswegen nicht mehr unbedingt zu empfehlen.

 

Kubernetes Cluster erstellen

2. Private Cluster

Beim Erstellen eines Clusters kann man ab sofort zwischen einem „Private“ oder einem „Public“ Cluster wählen. Damit wird die Erreichbarkeit der Kubernetes-API des Clusters gesteuert. Ein privater Cluster hat nur eine interne IP und keine weitere öffentliche Floating-IP und ist dementsprechend nur von innerhalb der Kundenumgebung (OpenStack- oder Kubernetes-Projekt) erreichbar oder via VPN.

 

3. Individuelle Subnetze

Ebenso kann beim Erstellen eines neuen Clusters das Subnetz – in dem die Nodes kommunizieren – frei gewählt werden. Das ist insbesondere dann hilfreich, wenn man einen privaten Kubernetes Cluster per VPN mit einem bestehenden Firmennetz verbindet!

 

4. Rotate CA

Das Rotieren der Kubernetes CA kann jetzt über die Web-Oberfläche angestoßen werden. Es wird eine neue Cluster CA erzeugt und entsprechend neue Schlüssel und Zertifikate für Service-Accounts und Kubernetes-Nodes verteilt. Die bestehende kubeconfig-Datei des Administrators muss dann durch eine neue ausgetauscht werden.

 

Kubernetes Tutorials

Wer sich nochmal eine genaue Anleitung, wie man schnell und einfach sein Managed Kubernetes bei NWS aufsetzt, durchlesen möchte, der findet diese und viele weitere Kubernetes Tutorials auf unserer Website. Gerne mal vorbeischauen!

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.

How To NWS: Managed Kubernetes

This entry is part 5 of 7 in the series How To NWS

Nachdem sich im letzten Blog alles um OpenStack gedreht hat,  möchte ich heute die Gelegenheit nutzen, um  unser Managed Kubernetes Angebot vorzustellen.

Was ist Kubernetes überhaupt und wie lässt es sich einsetzen? Um diese Fragen zu beantworten, macht es Sinn zunächst kurz die Entwicklung der Ressourcennutzung auf einem Betriebssystem aufzuzeigen.

Entwicklung der Ressourcennutzung:

Früher gab es keine Möglichkeit auf einem physischen Server Ressourcengrenzen für eine Anwendung zu setzen. Beanspruchte eine App viele Ressourcen, blieb für die anderen entsprechend wenig zur Verfügung. Dieses Problem wurde durch die Virtualisierung gelöst. Nun konnte die CPU von einem physikalischen Server auf mehrere Virtuelle Maschinen aufgeteilt werden. Jede VM bekommt hierbei feste Ressourcengrenzen zugeteilt und somit können mehrere Apps nebeneinander auf einem Server laufen, ohne sich gegenseitig die notwendigen Ressourcen streitig zu machen. Durch die Virtualisierung war nun auch die Möglichkeit der Skalierbarkeit gegeben. Bei Bedarf lassen sich die Ressourcen einer VM leicht erhöhen und später genauso wieder herunterdrehen.  So lässt sich ein physischer Server wesentlich kosteneffizienter betreiben.

Jede VM bringt allerdings immer ihr eigenes, installiertes Betriebssystem mit. Abhängig von der Zahl der eingesetzten VMs auf einem Server werden so entsprechend viele Ressourcen mit dem Betriebssystemunterbau belegt. Mit der Containervirtualisierung konnte man diesen Umstand umgehen. In Containern werden zwar auch Anwendungen virtualisiert. Aber im Unterschied zu VMs besitzen Container kein eigenes Betriebssystem, sondern nutzen das des Hostsystems. Sie brauchen somit weniger Arbeitsspeicher, CPU- Leistung und Speicherplatz – sind also deutlich leichtgewichtiger. In einem Container wird die Anwendung mit all ihren Bibliotheken und Einstellungen in einem Installationspaket zusammengefasst und kann so leicht installiert und isoliert von anderen Anwendungen auf dem gleichen System betreiben werden. Diese Eigenschaft passt perfekt zu Anwendungen, die im Microservice-Architekturansatz entwickelt werden. Dabei wird die Anwendung in kleinere Einheiten (Microservices) aufgeteilt, die jeweils einen Teilaspekt der Anwendung bereitstellen. In einem Container verpackt, lässt sich ein fehlerhafter Microservice viel unkomplizierter austauschen, als bei einer Anwendung mit monolithischem Aufbau.

Kubernetes:

An dieser Stelle kommt nun Kubernetes ins Spiel. Denn irgendjemand muss bei den ganzen Microservices ja den Überblick und das Steuer in der Hand behalten. Das Kubernetes Projekt wurde 2014 von Google als OpenSource-Projekt veröffentlicht. Der Name kommt aus dem Griechischen und bedeutet so viel wie Steuermann/ Pilot.  In Kurzform wird es auch oft als „k8s“ bezeichnet.

Unser Managed Kubernetes Service kommt also typischerweise beim Hosting von Anwendungen zum Einsatz, die im Microservice-Architekturansatz entwickelt werden. Hier realisiert Kubernetes die Automatisierung der Bereitstellung, Skalierung und Verwaltung der containerisierten Anwendungen. Es orchestriert die Cluster virtueller Maschinen und plant wann Container auf diesen ausgeführt werden sollen. Kubernetes verteilt die Services automatisch so intelligent über dem gesamten Cluster, dass die vorhandenen Ressourcen optimal ausgenutzt werden. Es koordiniert also die Computer-, Netzwerk- und Speicherinfrastruktur im Namen der Benutzer-Workloads.

Für ein neues Kubernetes-Projekt musst du anfangs festlegen, ob Dein Cluster hochverfügbar sein soll und wie viele Knoten Du benötigst. Mittels kubectl gibst Du dann an, welche Container wie oft und auf wie vielen Worker Nodes gestartet werden sollen. Du definierst also lediglich das Ziel und der Rest geht automatisch. Die Controlplane startet selbstständig innerhalb von kürzester Zeit alle Container auf den entsprechenden Worker Nodes samt den dafür notwendigen Loadbalancern. In der Folge überwacht die Control Plane ständig, ob Ist- und Soll-Zustand auf den Nodes übereinstimmen. Fällt einer aus, wird automatisch ein neuer Worker Node mit dem entsprechendem Pod, in dem der Container liegt, hochgefahren. Genauso verhält es sich auch bei geupdateten Containern. Werden bei  der gehosteten Anwendung Bugs behoben oder neue Features hinzugefügt, wird diese in einem neuen Container bereitgestellt. Das erkennt Kubernetes und testet den neuen Container auf seine Funktionalität. Ist diese gegeben, werden automatisch alle alten Container durch die neuen ausgetauscht. So können Entwickler Kubernetes komplett in ihre Entwicklungs-, CI und Deployment-Umgebung integrieren und sich eine Menge manueller Handgriffe sparen. Weiterhin kann mittels Autoscaling sichergestellt werden, dass beim Erreichen einer bestimmten Lastgrenze weitere zusätzliche Instanzen hinzu- und nach der Unterschreitung wieder abgeschaltet werden. Kubernetes sorgt also für eine flexible Anpassbarkeit in Echtzeit. Das vereinbart eine stets stabile Performance mit einer möglichst effizienten Kostenstruktur.

Der Managed-Part:

Die größte Herausforderung bei Kubernetes liegt in der Komplexität des eigentlichen Erstellens, Betriebs und Instandhaltens des Kubernetes Clusters. Und hier kommt die gute Nachricht für Dich: diese Aufgaben liegen komplett bei uns. Wir sorgen im Hintergrund permanent für Updates, Backups und eine stabile zugrunde liegende Infrastruktur. Diese besteht auch hier aus unserer OpenStack Umgebung, mittels derer alle notwendigen VMs, Loadbalancer etc. gestartet werden. Unsere Kunden können also sämtliche Annehmlichkeiten von Kubernetes nutzen, ohne sich um den Aufbau des nötigen Fachwissens zum Betrieb eines K8s-Clusters kümmern zu müssen.

Du bist neugierig geworden?

Dann geht es hier zu unserer Kubernetes Seite: https://nws.netways.de/de/kubernetes/

Hier findest du unsere Preisliste: https://nws.netways.de/de/preise/

Und hier findest Du Tutorials und Webinare zu Kubernetes: https://nws.netways.de/de/

Stefan Schneider
Stefan Schneider
Account Manager

Vor seiner Zeit bei NETWAYS hat Stefan als Projektmanager in einer Nürnberger Agentur dabei geholfen, Werbeprojekte auf die Straße zu bringen. Seit Juni 2017 ist er nun stolzes Mitglied der NETWAYS-Crew. Hier war er zuerst der Ansprechpartner für unserer Schulungen und kümmert sich aktuell um alle Anfragen rund um unser Hostingangebot. Die Freizeit vertreibt sich Stefan am liebsten mit Sport. Vom Joggen über Slacklining bis zum PennyBoard fahren ist er für alles zu haben.