Labels: app=hello-world
pod-template-hash=6bb7844865
Annotations: cni.projectcalico.org/podIP: 10.1.80.118/32
cni.projectcalico.org/podIPs: 10.1.80.118/32
sidecar.istio.io/inject: false
Status: Running
IP: 10.1.80.118
IPs:
IP: 10.1.80.118
Controlled By: ReplicaSet/hello-world-6bb7844865
Containers:
hello-world:
Container ID: containerd://e9d5a90c4ac98c57f9f27bdbe88b0bd5535d4e297ecbb103118a963d554615a9
Image: docker.registry:5000/hello-world:20211003
Image ID: docker.registry:5000/hello-world@sha256:1bb9b5564a34689396c097bb410a837d5e074b61caff822cb43921f425b09a50
Port:
Host Port:
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Sun, 03 Oct 2021 20:56:08 +0200
Finished: Sun, 03 Oct 2021 20:56:08 +0200
Ready: False
Restart Count: 1
Limits:
cpu: 1
memory: 64Mi
Requests:
cpu: 500m
memory: 24Mi
Liveness: exec [/hello-world] delay=5s timeout=1s period=10s #success=1 #failure=3
Readiness: exec [/hello-world] delay=3s timeout=1s period=3s #success=1 #failure=3
Environment:
FOO: bar
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-vtwl2 (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kube-api-access-vtwl2:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional:
DownwardAPI: true
QoS Class: Burstable
Node-Selectors:
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 23s default-scheduler Successfully assigned default/hello-world-6bb7844865-4j5bw to pc5
Warning BackOff 14s (x4 over 19s) kubelet Back-off restarting failed container
Normal Pulled 1s (x3 over 22s) kubelet Container image "docker.registry:5000/hello-world:20211003" already present on machine
Normal Created 1s (x3 over 22s) kubelet Created container hello-world
Normal Started 1s (x3 over 21s) kubelet Started container hello-world
alfred@pc1:/opt/cluster/go$
alfred@pc1:/opt/cluster/go$ kubectl get pod hello-world-6bb7844865-4j5bw
NAME READY STATUS RESTARTS AGE
hello-world-6bb7844865-4j5bw 0/1 CrashLoopBackOff 4 108s
alfred@pc1:/opt/cluster/go$
alfred@pc1:/opt/cluster/go$ kubectl logs hello-world-6bb7844865-4j5bw
hello world
alfred@pc1:/opt/cluster/go$
Das heist, der Service wird ordnungsgemäß installiert, läuft auch einmal und terminiert dann (so ist das Programm). Aus Kubernetes Sicht wird aber über das Deployment versucht den Service wieder herzustellen. Daher wird er permanent restarted. Für das Hello-World Prinzip reicht das. Für einen richtigen Service aber natürlich nicht.
Darum löschen wir den Service auch wieder.
alfred@pc1:/opt/cluster/go$ kubectl delete -f hello-world.yaml
deployment.apps "hello-world" deleted
service "hello-world-service" deleted
alfred@pc1:/opt/cluster/go$
Aber wir haben nun ein funktionierendes Setup. Können auf der Entwicklungsmaschine docker-Container erzeugen, diese in das Repository am Kubernetes Cluster einspielen, und den Service dann auch starten.
Golang IDE
Inspiration:
https://golang.org/doc/articles/wiki/
https://github.com/visualfc/liteide
https://linuxize.com/post/how-to-install-atom-text-editor-on-ubuntu-20-04/
https://www.gophercoders.com/install/atom/configure/
https://snapcraft.io/install/liteide-tpaw/ubuntu
https://elearning.wsldp.com/pcmagazine/install-liteide-on-ubuntu/
Um vernünftig Go Programme entwicklen zu können, braucht man eine vernünftige IDE. Neben IntelliJ (leider nicht in der Community-Edition) gibt es noch LiteIDE sowie den beliebten Editor Atom (wahrscheinlich gibt es noch viele andere). Ich verwenden den Atom-Editor.
Abbildung 10: Atom Editor
Nachdem das Plugin eingerichtet ist, kann man das Projekt bereits editieren.
Damit alles funktioniert muß natürlich go selbst vorhanden sein.
Abbildung 11: Atom Konfiguriert
Man kann aber auch LiteIDE benutzen.
Abbildung 12: LiteIDE
Womit man am liebsten arbeitet, muß jeder für sich selbst entscheiden.
Was auch immer man installiert, meine Rat ist die Applikation nicht über snap zu installieren (wegen des Isolation-Levels), sondern direkt. Die Interaktion zwischen den Snaps (setzen von Variablen usw.) funktioniert sonst unter Umständen nicht wie erwartet.
Am Beispiel von LiteIDE. Siehe auch https://elearning.wsldp.com/pcmagazine/install-liteide-on-ubuntu/
Download der richtigen Datei, entpacken nach /usr/local. Danach wird für den bequement Start eine desktop Datei erzeugt.
[Desktop Entry]
Version=1.0
Name=LiteIDE
Comment="IDE for editing and building projects written in the Go programming language"
GenericName=GoIDE
Exec=/usr/local/liteide/bin/liteide
Terminal=false
Type=Application
Icon=/usr/local/liteide/share/liteide/welcome/images/liteide128.xpm
Categories=Development;
StartupNotify=true
Diese Datei wird dann mit dem Statement
alfred@bureau:~$ cd Schreibtisch/
alfred@bureau:~/Schreibtisch$ ll
insgesamt 480
drwx-----T 2 alfred alfred 4096 Okt 10 09:23 ./
drwx-----T 49 alfred alfred 479232 Okt 10 09:24 ../
-rw-r--r-- 1 alfred alfred 361 Okt 10 09:22 LiteIDE.desktop
alfred@bureau:~/Schreibtisch$ sudo desktop-file-install LiteIDE.desktop
alfred@bureau:~/Schreibtisch$
nach
alfred@bureau:~/Schreibtisch$ ll /usr/share/applications/LiteIDE.desktop
-rw-r--r-- 1 root root 361 Okt 10 09:30 /usr/share/applications/LiteIDE.desktop
alfred@bureau:~/Schreibtisch$
kopiert, und leicht modifiziert. Ab dann kann man im Launcher diese Applikation zu den Favoriten hinzufügen.
Abbildung 13: LiteIDE zu Favoriten hinzufügen
Ab jetzt ist der Start leicht.
Abbildung 14: LiteIDE System Environment
Jetzt muß nur noch das Systemenvironment richtig sein, dann steht dem Entwickeln, testen, Debuggen nichts mehr im Wege.
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.
Читать дальше