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

Aus RT-Wiki - IT-Notizbuch
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
__NOINDEX__
__NOINDEX__
Anleitung um ein Kubernetes Cluster innerhalb von Proxmox VE einzurichten.
'''''Getestet auf AlmaLinux 8'''''


<nowiki>######################</nowiki>
<nowiki>######################</nowiki>
Zeile 7: Zeile 14:
<nowiki>######################</nowiki>
<nowiki>######################</nowiki>


<nowiki>#</nowiki> Statische IP
<nowiki>#</nowiki> Feste IP einrichten


Grafische Oberfläche:<syntaxhighlight lang="bash">
nmtui
nmtui
</syntaxhighlight>Oder per Konsole (Name des Interfaces kann abweichen):<syntaxhighlight lang="bash">
vi /etc/sysconfig/network-scripts/ifcfg-ens18
</syntaxhighlight>Beispiel:<syntaxhighlight lang="bash">
BOOTPROTO=none
IPADDR=192.168.2.65
PREFIX=24
GATEWAY=192.16.2.1
DNS1=192.168.2.1
DNS2=1.1.1.1
</syntaxhighlight>


<nowiki>#</nowiki> Containerd


<nowiki>#</nowiki> Containerd installieren<syntaxhighlight lang="bash">
dnf install -y yum-utils
dnf install -y yum-utils
 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo <nowiki>https://download.docker.com/linux/centos/docker-ce.repo</nowiki>
 
dnf install containerd
dnf install containerd
 
</syntaxhighlight><nowiki>#</nowiki> Die ggf. automatisch installierte config.toml löschen und neu generieren:<syntaxhighlight lang="bash">
<nowiki>#</nowiki> Remove old config file if present and populate new default config
 
rm /etc/containerd/config.toml
rm /etc/containerd/config.toml
containerd config default | tee /etc/containerd/config.toml
containerd config default | tee /etc/containerd/config.toml
 
</syntaxhighlight><nowiki>#</nowiki> Edit config.toml
<nowiki>#</nowiki> Edit config.toml


vi /etc/containerd/config.toml
vi /etc/containerd/config.toml
Zeile 240: Zeile 252:


]
]
== Quellen ==
https://www.youtube.com/watch?v=U1VzcjCB_sY

Version vom 15. Dezember 2022, 13:10 Uhr


Anleitung um ein Kubernetes Cluster innerhalb von Proxmox VE einzurichten.


Getestet auf AlmaLinux 8


######################

## Auf ctrlr & node ##

######################

# Feste IP einrichten

Grafische Oberfläche:

nmtui

Oder per Konsole (Name des Interfaces kann abweichen):

vi /etc/sysconfig/network-scripts/ifcfg-ens18

Beispiel:

BOOTPROTO=none
IPADDR=192.168.2.65
PREFIX=24
GATEWAY=192.16.2.1
DNS1=192.168.2.1
DNS2=1.1.1.1


# Containerd installieren

dnf install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install containerd

# Die ggf. automatisch installierte config.toml löschen und neu generieren:

rm /etc/containerd/config.toml
containerd config default | tee /etc/containerd/config.toml

# Edit config.toml

vi /etc/containerd/config.toml

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

            BinaryName = ""

            CriuImagePath = ""

            CriuPath = ""

            CriuWorkPath = ""

            IoGid = 0

            IoUid = 0

            NoNewKeyring = false

            NoPivotRoot = false

            Root = ""

            ShimCgroup = ""

            SystemdCgroup = true #!Auf true setzen!

#

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

# Module config / Enable bridge netfilter

vi /etc/modules-load.d/k8s.conf

br_netfilter

# Reboot

reboot

# Add kubernetes repository

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch

enabled=1

gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

exclude=kubelet kubeadm kubectl

EOF

# Disable SELinux / https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# Install kubernetes

dnf update

dnf install kubeadm kubectl kubelet --disableexcludes=kubernetes

systemctl enable kubelet

##

- kubeadm / initialize new cluster & joining nodes & updating cluster

- kubectl / cmd line util to manage cluster

- kubelet / communication between nodes and API

##

####

Vom node kann nun ein template erstellt werden, welches immer wieder verwendet werden kann

####

## Wenn alle VMs aus dem selben Template erstellt wurden, muss die 'machine-id' neu generiert werden

rm /etc/machine-id

systemd-machine-id-setup

######################

##  Nur auf ctrlr   ##

######################

## Firewall konfigurieren

firewall-cmd --permanent --add-port={6443,10250,10256,2379-2380}/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-masquerade

firewall-cmd --reload

## Cluster initialisieren

kubeadm init --control-plane-endpoint=10.16.0.65 --node-name k8s-ctrlr --pod-network-cidr=10.244.0.0/16

## Join Kommandos kopieren und irgendwo sicher ablegen ## !!!ACHTUNG Zertifikat läuft schnell ab

### Join Kommandos können erneut angezeigt werden

kubeadm token create --print-join-command

# Benutzer die Berechtigung für kubernetes geben

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

# Als root muss nur folgender Befehl ausgeführt werden

export KUBECONFIG=/etc/kubernetes/admin.conf

# Network overlay konfigurieren

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

######################

##  Nur auf worker   ##

######################

## Firewall konfigurieren

firewall-cmd --permanent --add-port={10250,10256,30000-32767}/tcp

firewall-cmd --permanent --add-port=8472/udp

firewall-cmd --permanent --add-masquerade

firewall-cmd --reload

## Auf dem Controller das join command anzeigen lassen

kubeadm token create --print-join-command

# Auf node ausführen

# Auf dem controller überprüfen ob der node registreiert wurde

kubectl get nodes

k8s-ctrlr    Ready    control-plane   19m    v1.26.0

k8s-node-1   Ready    <none>          3m1s   v1.26.0


#### Dashboard

# Dashboard installieren

# Zugriff von LAN / https://www.thegeekdiary.com/how-to-access-kubernetes-dashboard-externally/

kubectl -n kubernetes-dashboard edit service kubernetes-dashboard

type: NodePort                   ### clusterIP to NodePort

# Create admin-user

https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md

# Metrics Server installieren / https://www.scmgalaxy.com/tutorials/kubernetes-metrics-server-error-readiness-probe-failed-http-probe-failed-with-statuscode/

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

- Download https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

- Modify and add "- --kubelet-insecure-tls" in deployment.spec.template.spec.containers.args

- kubectl apply -f components.yaml

###############################

###Speziell gitlab

###############################

# DNS zur gitlab-runner config

[runners.kubernetes.dns_config]

nameservers = [

  "10.16.0.3",

  "10.16.0.4"

]

Quellen

https://www.youtube.com/watch?v=U1VzcjCB_sY