Einen K8S Cluster betreiben - Kubernetes für dummies - Teil 3

Moin zusammen


in Teil 1-2 ging es darum den K8S Cluster aufzusetzen und kurz mittels eines Webserverdeployments zu testen.


AUf dem Master muss also beim Aufrugf kubectl get nodes folgendes kommen:

Code
olaf-krause@k8s-master-i:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-compute-i Ready <none> 5d14h v1.17.2
k8s-compute-ii Ready <none> 2m40s v1.17.2
k8s-master-i Ready master 5d21h v1.17.2

Jetzt geht es darum was für Werkzeuge gibt es den Cluster zu betreiben/nutzen. Ich möchte das gar nicht so sehr aus K8S Administratorsicht (K8S Infra) betrachten sondern eher aus Nutzer der Images deployed und betreibt. Hm naja evtl. ist das auch immer diesselbe Person. Folgende Tools habt Ihr schon kennengelernt:

  • kubeadm ist ein Kommandozeilenprogramm zur einfachen Bereitstellung eines sicheren Kubernetes-Clusters auf physischen oder Cloud-Servern oder virtuellen Maschinen.
  • kubectl ist ein Kommandozeilenprogramm für Kubernetes. Es steuert den Kubernetes Clustermanager.

weitere standard tools sind unter https://kubernetes.io/de/docs/reference/tools/ gelistet. Wie

  • kubefed ist ein Kommandozeilenprogramm um Ihnen bei der Verwaltung Ihrer Verbundcluster zu helfen.
  • Dashboard, die webbasierte Benutzeroberfläche von Kubernetes ermöglicht es Ihnen containerisierte Anwendungen in einem Kubernetes-Cluster bereitzustellen Fehler zu beheben und den Cluster und seine Ressourcen selbst zu verwalten.
  • Kubernetes Helm ist ein Tool zur Verwaltung von Paketen mit vorkonfigurierten Kubernetes-Ressourcen, auch bekannt als Kubernetes charts.

Weiteres findet Ihr unter https://dzone.com/articles/50-useful-kubernetes-tools - es gibt hunderte, man könnte sich also locker wochenlang damit beschäftigen. Wir werden uns Dashboard & Helm jetzt mal genauer anschauen um zu lernen wir wir denn Applikation in unserem Cluster bereitstellen könnnen.

Installation Kubernetes Dashboard

Als erstes sollte man schauen was die letzte releaseversion ist: https://github.com/kubernetes/dashboard/releases. Stand 08.02.2020 die 2.0.0-rc5. Also lautet das Installationskommando (als user):

Zu installation ersetzt man oben das apply durch ein delete. Zu Verfügung stellen kann man das Dash board nun mit

Code
kubectl proxy --address 192.168.0.40 --accept-hosts='^*$'

Wobei die IP Adresse natürlich angepasst werden muss. Default wenn man nichts angibt ist localhost (nützt einem nicht wenn man keine GUI für einen webbrowser hat).

Dashboard login


Die Dashboard URL http://localhost:8001/api/v1/n…-dashboard:/proxy/#/login (localhost müssen wir so stehen lassen! siehe unten).


Um sich einloggen zu können brauchen wir eine Berechtigung, dazu erstellen wir uns jetzt ein token:

Hmm es funktioniert trotzdem nicht. Grund das Dashboard läuft in der http variante nur auf localhost. Das kann man aber austricksen mit einem putty portforward:


Putty forward und das Dashboard


Im Dashboard sieht man den nginx service den wir im letzten Teil deployed haben. Klickt man auf cluster/nodes dann sieht man die cluster nodes mit CPU etc. Zustand. Das soll es eigentlich auch erstmal bzgl. Dashboard sein. Ihr könnt da mal etwas drin rumstöbern und wir werden da evtl. später nochmals drauf zurückkommen - ist eben eine nette Visualisierung.

Anmerkung: Sollte man ein leeres Dashboard sehen und oben recht bei der Glocke lauter permissions Fehler kommen habt Ihr ein token mit zuwenig Rechten erwischt -> anderes Token nehmen.


Was ich aber selber auch festgestellt habe - man muss ich auf jeden Fall auch mit dem Securitykonzepten für Kubernetes beschäftigen und mit der Ingress Komponente. Das manuelle Portforwarding wie wir es hier mit kubectl genutzt haben macht ja für eine Produktivumgebung nicht wirklich Sinn.

Installation Helm

Die Installation ist sehr einfach mit

Code
olaf-krause@k8s-master-i:~$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
olaf-krause@k8s-master-i:~$ chmod 700 get_helm.sh
olaf-krause@k8s-master-i:~$ ./get_helm.sh
Downloading https://get.helm.sh/helm-v3.0.3-linux-amd64.tar.gz
Preparing to install helm into /usr/local/bin
[sudo] password for olaf-krause:
helm installed into /usr/local/bin/helm

erledigt. Dann müsst Ihr noch das Helm Chart Repo konfigurieren

Code
olaf-krause@k8s-master-i:~$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
"stable" has been added to your repositories

Charts sind quasi vorgefertigte Schablonen um Softwarepakete zu deployen. Siehe hier https://hub.helm.sh/ für eine Auswahl. Oder Ihr ruft einfach

Code
helm search repo stable

auf um eine Liste in der Shell zu bekommen.

Hinweis: Ab der Version 3 von Helm wird kein Tiller mehr verwendet (man findet das of als mandatory wenn man über Helm liest). Siehe auch https://www.heise.de/developer…t-auf-Tiller-4586105.html


Das erste deplyoment mit Helm

Ich nehme mal Traefik. Grund ist simple ich habe mich außerhalb von K8S schon mal kurz mit Traefik beschäftigt und wir brauchen eh einen Ingress controller um die Cloud sinnvoll betrieben zu können.

Im Dashboard sieht das jetzt so aus:

Trafik als zweiter service sichtbar

man kann sich die deployten pakete äh charts einfach mit

Code
olaf-krause@k8s-master-i:~$ helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
traefik default 1 2020-02-08 12:48:49.234103505 +0000 UTC deployed traefik-1.86.1 1.7.20

anzeigen lassen und mit helm uninstall <name> deinstallieren. Das war mal wieder ein einfacherer Teil. Wer die Chart Repos mit einer GUI anschauen möchte sollte sich https://github.com/helm/monocular anschauen - evtl. kommt das ja in einer der nächsten Folgen.


Zuerst wird aber vermutlich das Thema Ingress Controller und Storage kommen da es zum Betrieb notwendig ist und irgendwie wollen wir ja von außen an die containern rankommen und auch Daten speichern.


Bis denne Ole

PV 18,2kWp - BHKW EcoPower 1.0, 30kWh LiON Sunny Island System

BMW i3 60Ah (Verbrauch ca. 13,8kWh/100km; SW: I001-16-07-506)

Comments