Читать книгу K8s Applications mit MicroK8S auf Raspberry PI - Alfred Sabitzer - Страница 12

Оглавление

Lens – the Kubernetes IDE

Inspiration:

https://k8slens.dev/

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

https://dev.to/anaisintech/getting-started-with-kubernetes-kubectl-and-microk8s-on-ubuntu-pko

https://microk8s.io/docs/services-and-ports

https://microk8s.io/docs/troubleshooting

Lens ist eine recht vernünftige IDE um mit Kubernetes zu arbeiten. Unter Ubuntu kann das direkt aus dem Software-Repository installiert werden.

Abbildung 15: Lens - Installation unter Ubuntu

Damit das Tool funktionieren kann, brauchen wir auf unserem lokalen Rechner kubectl.

alfred@bureau:~$ snap install kubectl --classic

kubectl version --client

kubectl 1.22.4 aus Canonical✓ installiert

Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-18T02:34:11Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}

alfred@bureau:~$ kubectl cluster-info

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

The connection to the server localhost:8080 was refused - did you specify the right host or port?

alfred@bureau:~$

Nun fehlt noch die Konfig. Die holen wir uns aus dem existierenden Cluster.

alfred@pc1:~/.kube$ microk8s config > config

alfred@pc1:~/.kube$ cat config

apiVersion: v1

clusters:

- cluster:

certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUREekNDQWZlZ0F3SUJBZ0lVSmdyRlRBbmh6SjBXZThxakdFVFErMDFHYWJRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0Z6RVZNQk1HQTFVRUF3d01NVEF1TVRVeUxqRTRNeTR4TUI0WERUSXhNVEV5TXpBM016WXpPRm9YRFRNeApNVEV5TVRBM016WXpPRm93RnpFVk1CTUdBMVVFQXd3TU1UQXVNVFV5TGpFNE15NHhNSUlCSWpBTkJna3Foa2lHCjl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUExYVQ3Y2hkaHUwRzNwc2EvYjdUZHU3UFRoK3l5ek41TmkyRzMKaDBmbUwweUpqOExHL2FGSm9QdW1RRVBNdWYvRFVWUVQrbmFDdjJrdmtjSjFtdlgzdlhBb1hwMHR1S1FLOEFxawp2a1UwNU8rb1pScERJZFQvUUlSSm1Ba3UraHJwWHJscE1TeHRjdUxWZ3hjc0ZpWGU4ZzVxYXVEOGVSMzZudlN1CnJzK3o2RE1rS1lvVzdlYWp4L0loNDBsNkNNY3VVVDNPVnIyTEh0Sm0vM2NaKzZlVEQ3aTNFUjA3TlVmcVk5Y1oKaXcvUzRlSWtUVC9HRjFwZG5mbUtYdnB4NnFKaWVjWDVPanEzM1l5UitBZ3FPdnlBNzVIOWp5SEtqOTdDekdqdgp5ZGJjcmJtYW5SVU1FditlVWVyVDFMeW13SDNFSDk0OUM5VXhkV2pXZTEydVNZaS9YUUlEQVFBQm8xTXdVVEFkCkJnTlZIUTRFRmdRVTZhZjNUSWc3ZjV6N21kYno3NGtCZ2FHVFRMWXdId1lEVlIwakJCZ3dGb0FVNmFmM1RJZzcKZjV6N21kYno3NGtCZ2FHVFRMWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUXNGQUFPQwpBUUVBUHppRnhmU29EWjdscGt1TGF0a0VVdy9vUGg0YlIyM2g4bXoyTkpWc0p2NW92bXIvaVA2NXdKa2tKMDVRCnliays0Y0d3TnlFemdQVTBJaFRERnpRVU0vWFRyQlEwZG0zSGFsSHNHVE1iK05Ua3V2REFJQlUzUVhyOWJJYlkKbzVuaUl0SWVRdGR4dVBTbXYwZ2laQ3l6bWpQZTVOcnlRc05ONFQyeFp2UUcrcDhkVnBzWmZhVTd0NERZZlZhbwppTW5KVFJNazdKS3c5M3Y5VDRRcHdsMWthQnlFcjhYUkhWOGxUQUVPa1djOGdlNWx5NlEza1ZGeVAzYUx4djJqCll6K3BxVExncENRQ3JJRlVqcVhpTkdUeUtlQXp1TWlFaWFrclRnODhNZlhaTVdHc0l5NW5GdWt0clpYT0xhL3QKZVo2NEorKzg2SzRrQXRidVdNQUJORjNObEE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==

server: https://192.168.0.201:16443

name: microk8s-cluster

contexts:

- context:

cluster: microk8s-cluster

user: admin

name: microk8s

current-context: microk8s

kind: Config

preferences: {}

users:

- name: admin

user:

token: WDZKL1VldzE4aFVNVm03amdmVFR5Z1h2UzNZcTZjeWxNUzVud2ZPcWR5WT0K

alfred@pc1:~/.kube$

Wir kopieren die config auf unseren Rechner in den Ordner ${HOME}/.kube.

alfred@bureau:~/.kube$ ls -lisa

insgesamt 480

1706699 4 drwxr-x--- 2 alfred alfred 4096 Nov 26 11:52 .

1311228 472 drwx-----T 52 alfred alfred 479232 Nov 26 11:52 ..

1705911 4 -rw-rw-r-- 1 alfred alfred 1874 Nov 26 11:51 config

alfred@bureau:~/.kube$

alfred@bureau:~/.kube$ kubectl config get-clusters

NAME

microk8s-cluster

alfred@bureau:~/.kube$

alfred@bureau:~/.kube$ kubectl cluster-info

Kubernetes control plane is running at https://192.168.0.201:16443

CoreDNS is running at https://192.168.0.201:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

alfred@bureau:~/.kube$

Nun funktioniert die Kommand-Line-Version. Wir installieren noch die bash-completion (das spart viel Tipparbeit).

alfred@bureau:~$ sudo apt-get install bash-completion

Paketlisten werden gelesen… Fertig

Abhängigkeitsbaum wird aufgebaut… Fertig

Statusinformationen werden eingelesen… Fertig

bash-completion ist schon die neueste Version (1:2.11-2ubuntu1).

bash-completion wurde als manuell installiert festgelegt.

0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

alfred@bureau:~$

alfred@bureau:~$ echo 'source <(kubectl completion bash)' >>~/.bashrc

alfred@bureau:~$ sudo su -l

root@bureau:~# kubectl completion bash >/etc/bash_completion.d/kubectl

root@bureau:~# exit

Abgemeldet

alfred@bureau:~$ echo 'alias k=kubectl' >>~/.bashrc

echo 'complete -F __start_kubectl k' >>~/.bashrc

alfred@bureau:~$

Nun loggen wir uns neu ein. Somit funktioniert der Alias und der Zugriff auf den Cluster von außen.

alfred@bureau:~$ k get all

NAME READY STATUS RESTARTS AGE

pod/webserver-depl-bff4d4675-8v9nz 1/1 Running 2 (179m ago) 18h

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 3d3h

service/webserver-svc ClusterIP 10.152.183.121 <none> 443/TCP,80/TCP 38h

NAME READY UP-TO-DATE AVAILABLE AGE

deployment.apps/webserver-depl 1/1 1 1 38h

NAME DESIRED CURRENT READY AGE

replicaset.apps/webserver-depl-cf898f654 0 0 0 38h

replicaset.apps/webserver-depl-98f95758b 0 0 0 38h

replicaset.apps/webserver-depl-646544ddfd 0 0 0 37h

replicaset.apps/webserver-depl-dd8c746d6 0 0 0 37h

replicaset.apps/webserver-depl-86c6d7549f 0 0 0 37h

replicaset.apps/webserver-depl-b485f9695 0 0 0 19h

replicaset.apps/webserver-depl-c8599c9f5 0 0 0 19h

replicaset.apps/webserver-depl-bff4d4675 1 1 1 18h

alfred@bureau:~$

Jetzt können wir den Cluster in der Lens einrichten.

Abbildung 16: Lens - Cluster hinzufügen

Es wird die config aus ${HOME}/.kube/config verwendet.

Abbildung 17: Lens - Cluster Ansicht

Nun ist Lens mit dem Cluster verbunden. Somit kann komfortabel vom eigenen Rechner aus gearbeitet werden.

Alternativ ist natürlich auch das Kubernet Dashboard als Webapplikation vorhanden.

Abbildung 18: Kubernetes Dashboard

Somit kann der Cluster bequem verwaltet und diagnostiziert werden.

Wie sicher das exponieren der API nach aussen ist, weiß ich noch nicht. Im Internet sollten der Cluster durch die Firewall geschützt sein (nur die Ingress-Ports sichtbar).

Generell sollte bei Einsatz im Internet der Firewall große Beachtung zuteil werden. Lokal zu Hause ist die Architektur etwas einfacher.

Abbildung 19: Netzwerk Architektur

Hier ist nur der Ingress nach aussen sichtbar. Alles andere kann von aussen nicht erreicht werden. In Richtung Intranet ist alles erlaubt.

K8s Applications mit MicroK8S auf Raspberry PI

Подняться наверх