kubernetes - minikube
2023-11-22 / 2024-08-19 | ||
Notizsammlung zu Kubernetes, diese steckt aber noch in den Kinderfüßen...
Siehe dazu die Beispiele im Github, darin sind auch yamls abgelegt. Im VSCode kann Kubernetes bequem als GUI und Commands verwendet werden.
install kubectl
sudo apt update && sudo apt install -y apt-transport-https
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
Install minikube - "quickly sets up a local Kubernetes cluster"
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
start cluster
minikube start
# für die Benutzung von von NetworkPolicies siehe unten...
start dashboardweboberfläche
minikube addons enable metrics-server
# Das Dashboard bleibt in der jeweiligen Session aktiv und wird durch beenden der Session auch wieder beendet.
minikube dashboard
local Registry
install
minikube addons enable registry
echo $(minikube ip)
sudo nano /etc/docker/daemon.json
{
"insecure-registries" : [ "<minikube ip>:5000" ]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
minikube start
use
# bauen oder taggen
docker build --tag $(minikube ip):5000/<image> .
docker tag <image> $(minikube ip):5000/<image>
# schubsen
docker push $(minikube ip):5000/test-img
# benutzen im manifest
localhost:5000/<image>
notes
Die Registry ist nicht persistiert und muss nach einem Restart neu befüttert werden.
delete
minikube delete --all --purge
Services
LoadBalancer
# open direct in browser...
minikube service <service-name> --namespace <namespace>
# get the URL
minikube service <service-name> --namespace <namespace> --url
# tunnel zum cluster bzw. service erstellen
minikube tunnel
# deploy LoadBalancer Service with external IP
externalIPs: # external fixed IP addresses
- <minikube ip>
NetworkPolicies
Per default werden von minikube keine NetworkPolicies unterstützt. Bei der Ersteinrichtung kann das CNI auf calico geändert werden, so kann auch mit NetworkPolicies gearbeitet werden.
minikube start --cni calico
Mein minikube...
# function in .bash_aliases
function mykube {
minikube start --cni calico
# Bei der Erstinstallation Addons Aktivieren...
minikube addons enable metrics-server
minikube addons enable registry
# Sleep vor Push notwendig!
echo "wait for push ..."
for i in {0..99}; do if [ $i -lt 10 ]; then echo -ne 'wait for push ... '$i'%\r'; else echo -ne 'wait for push ... '$i'%\r'; fi; sleep 0.3s; done; echo 'wait for push ... 100%'
# Push Images
docker push 192.168.49.2:5000/js-motd-kubernetes-example
docker push 192.168.49.2:5000/ubuntu-bash
}
Notes
~/.kube/config
minikube addons list
| ingress | minikube | disabled | Kubernetes
| ingress-dns | minikube | disabled | minikube
https://kubernetes.io/de/docs/tasks/tools/install-kubectl/
https://kubernetes.io/docs/concepts/storage/
https://kubernetes.io/docs/concepts/configuration/
https://kubernetes.io/docs/concepts/services-networking/network-policies/
https://github.com/kubernetes/ingress-nginx
https://docs.k3s.io/quick-start
https://minikube.sigs.k8s.io/docs/start/
https://minikube.sigs.k8s.io/docs/tutorials/setup_minikube_gui/