Читать книгу K8s Applications mit MicroK8S auf Raspberry PI - Alfred Sabitzer - Страница 12
ОглавлениеLens – the Kubernetes IDE
Inspiration:
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.