Kubernetes Cluster in Proxmox VE (AlmaLinux/CentOS): Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
K
keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 19: Zeile 19:


Die Installation in einem VM Cluster wie Proxmox bietet sich aufgrund der Zeitersparnis an, dennoch sollte aber alles hier beschriebene grundsätzlich auch auf "echten" Maschinen funktionieren.
Die Installation in einem VM Cluster wie Proxmox bietet sich aufgrund der Zeitersparnis an, dennoch sollte aber alles hier beschriebene grundsätzlich auch auf "echten" Maschinen funktionieren.




Zeile 38: Zeile 36:
''Einige Kubernetes Deployments nutzen MongoDB als Datenbank.''
''Einige Kubernetes Deployments nutzen MongoDB als Datenbank.''


''Ab MongoDB 5.0 werden keine Systeme mehr unterstützt deren CPU das AVX-Flag nicht hat.''
''Ab MongoDB 5.0 werden keine Systeme mehr unterstützt deren CPU das AVX-Flag nicht gesetzt hat.''


''Damit es später keine Probleme gibt, sollte als CPU daher nicht 'kvm64' sondern 'host' ausgewählt werden.''
''Damit es später keine Probleme gibt, sollte daher als CPU nicht 'kvm64' sondern 'host' ausgewählt werden.''
 
Dies wird ebenfalls empfohlen um "Nested Virtualization" zu nutzen, wodurch die Performance erheblich verbessert werden kann.<ref>https://pve.proxmox.com/wiki/Nested_Virtualization</ref>


=== Controller und Worker ===
=== Controller und Worker ===
Zeile 162: Zeile 162:
setenforce 0
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
</syntaxhighlight>Jetzt können die Tool für den Cluster installiert werden:<syntaxhighlight lang="bash">
</syntaxhighlight>Jetzt können die Tools für den Cluster installiert werden:<syntaxhighlight lang="bash">
dnf update
dnf update
dnf install -y kubeadm kubectl kubelet nfs-utils --disableexcludes=kubernetes
dnf install -y kubeadm kubectl kubelet nfs-utils --disableexcludes=kubernetes
Zeile 171: Zeile 171:
- '''kubelet''' / Steuert die Kommunikation zwischen den Nodes und der API
- '''kubelet''' / Steuert die Kommunikation zwischen den Nodes und der API


- '''nfs-utils''' / Um NFS Exports in den Cluster einzubinden
- '''nfs-utils''' / Um NFS Exports als "Persistent Volume" in den Cluster einzubinden
 


Kubelet beim Neustart automatisch starten:<syntaxhighlight lang="bash">
Kubelet beim Neustart automatisch starten:<syntaxhighlight lang="bash">
systemctl enable kubelet
systemctl enable kubelet
</syntaxhighlight>
</syntaxhighlight>
=== Firewall konfigurieren ===
=== Firewall konfigurieren ===


Zeile 271: Zeile 273:
Wenn man jetzt mit <code>kubectl get nodes</code> den Status des einen Nodes abfragt wird man feststellen, dass dieser auf "Not Ready" bleibt...
Wenn man jetzt mit <code>kubectl get nodes</code> den Status des einen Nodes abfragt wird man feststellen, dass dieser auf "Not Ready" bleibt...


Mit <code>kubectl get pods -n kube-system</code> sieht man, dass die Pods "coredns" im Status "Pending" sind.
Mit <code>kubectl get pods -n kube-system</code> sieht man, dass die Pods "coredns" im Status "Pending" sind.<syntaxhighlight lang="bash">
 
NAME                                  READY  STATUS    RESTARTS        AGE
Das liegt daran, dass der "coredns" auf eine interne IP im Bereich 10.244.0.0/16 wartet.
coredns-787d4945fb-k4q67              1/1    Pending  0              5m16s
coredns-787d4945fb-klgw4              1/1    Pending  0              5m16s
etcd-k8s-ctrlr-1                      1/1    Running  0              6m31s
kube-apiserver-k8s-ctrlr-1            1/1    Running  0              6m30s
kube-controller-manager-k8s-ctrlr-1  1/1    Running  0              6m29s
kube-proxy-8gstv                      1/1    Running  0              5m13s
kube-scheduler-k8s-ctrlr-1            1/1    Running  0              6m31s
</syntaxhighlight>Das liegt daran, dass der "coredns" auf eine interne IP im Bereich 10.244.0.0/16 wartet.


Damit der Node eine IP zugewiesen bekommt, müssen wir als erstes den [https://github.com/flannel-io/flannel flannel-Agent] installieren.
Damit der Node eine IP zugewiesen bekommt, müssen wir als erstes den [https://github.com/flannel-io/flannel flannel-Agent] installieren.
Zeile 435: Zeile 444:


==== Keycloak (OIDC) ====
==== Keycloak (OIDC) ====
Folgt...
Siehe [[Kubernetes Dashboard mit Keycloak OIDC]]
 




Zeile 489: Zeile 499:
== Weiterführende Links ==
== Weiterführende Links ==
*[https://krew.sigs.k8s.io/plugins/ Plugins für kubectl Kommando]
*[https://krew.sigs.k8s.io/plugins/ Plugins für kubectl Kommando]
*[https://github.com/collabnix/kubetools Liste mit Tools für Kubernetes]
*[https://github.com/collabnix/kubetools Liste mit Tools für Kubernetes]
*[https://artifacthub.io/ Sammlung von Kubernetes Packages (Helm)]
*[https://artifacthub.io/ Sammlung von Kubernetes Packages (Helm)]
== Quellen ==
== Quellen ==
https://www.youtube.com/watch?v=U1VzcjCB_sY
https://docs.docker.com/engine/install/centos/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/


https://www.thegeekdiary.com/how-to-access-kubernetes-dashboard-externally/
* https://www.youtube.com/watch?v=U1VzcjCB_sY
* https://docs.docker.com/engine/install/centos/
* https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
* https://www.thegeekdiary.com/how-to-access-kubernetes-dashboard-externally/


=== Einzelnachweise ===
=== Einzelnachweise ===

Navigationsmenü