====== Installation ====== ===== Alle folgenden Schritte auf der Control-Pane und auf den Worker-Nodes durchführen. ===== ==== Nötige Pakete ==== apt install -y conntrack ethtool socat apt-transport-https ca-certificates curl gnupg ==== System Voreinstellungen ==== Eventuell Anzahl der Nameserver reduzieren, falls folgende Meldungen im Syslog/Journal kommen: ... kubelet[2132] dns.go:154] "Nameserver limits exceeded" err="Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 8.8.8.8 8.8.4.4 192.168.15.1" Wenn DNS über **systemd -> systemd-networkd und systemd-resolved** eingerichtet ist: sed -i 's/DNS=8.8.8.8 8.8.4.4 192.168.15.1/DNS=8.8.8.8/' /etc/systemd/network/lan-ens3.network === Swap deaktivieren === swapoff -a sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab === Kernel Module laden === modprobe overlay modprobe br_netfilter cat < === Netzwerk Kernel Parameter setzen === cat < === Bash Eintrag für kubectl === echo "source <(kubectl completion bash)" >> .bashrc echo "alias k=kubectl" >> .bashrc echo "complete -F __start_kubectl k" >> .bashrc ==== Container Runtime installieren ==== == Von Debian Repository == apt install -y containerd containerd config default | tee /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml == Von Docker Repository == curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian trixie stable" | tee /etc/apt/sources.list.d/docker.list apt update apt install containerd.io containerd config default | tee /etc/containerd/config.toml sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml ==== Kubernetes Pakete installieren ==== curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | 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.33/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list apt update # apt update -o APT::Key::GPGVCommand=1 apt install -y kubeadm kubelet kubectl apt-mark hold kubeadm kubelet kubectl == Kubernetes Pakete checken == kubeadm config images list I0205 12:57:13.742748 1181 version.go:261] remote version is much newer: v1.35.0; falling back to: stable-1.33 registry.k8s.io/kube-apiserver:v1.33.7 registry.k8s.io/kube-controller-manager:v1.33.7 registry.k8s.io/kube-scheduler:v1.33.7 registry.k8s.io/kube-proxy:v1.33.7 registry.k8s.io/coredns/coredns:v1.12.0 registry.k8s.io/pause:3.10 registry.k8s.io/etcd:3.5.24-0 === Containerd Konfiguration anpassen === In der Konfig-Datei **/etc/containerd/config.toml** müssen folgende Werte angepasst werden: bin_dir = "/opt/cni/bin" oder bin_dirs = "/opt/cni/bin" Version von **registry.k8s.io/pause:3.10** siehe oben Output von **"kubeadm config images list"** sandbox_image = "registry.k8s.io/pause:3.8" -> sandbox_image = "registry.k8s.io/pause:3.10" == Containerd neu starten == systemctl restart containerd == Containerd crictl-config anpassen == Socket (runtime-endpoint) in ''/etc/crictl.yaml'' festlegen crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock crictl config image-endpoint unix:///var/run/containerd/containerd.sock crictl version crictl --runtime-endpoint=unix:///var/run/containerd/containerd.sock version ===== Folgenden Schritt nur auf der Control-Pane durchführen. ===== Wenn die Control-Plane folgende IP-Adresse hat: 192.168.1.31 kubeadm init --control-plane-endpoint 192.168.1.31 --pod-network-cidr 192.168.0.0/16 Am Ende wird eine Zeile ausgegeben die auf den Worker-Nodes ausgeführt werden muss um diesen Worker zum Cluster hinzu zu fügen. kubeadm join 192.168.15.39:6443 --token krb1xl.59h553st1fdi0274 \ --discovery-token-ca-cert-hash sha256:5b7485d01dbbeba707dbb9b2ec648b9da56aaf253f3464bfd4a563466aa641c1 ===== Kubeconfig einrichten ===== Auf der Control-Plane als normaler User ausführen mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ===== Worker-Nodes zum Kubernetes Cluster hizufügen ===== Auf allen Worker-Nodes muss der gleiche **kubeadm join** durchgeführt werden.\\ **kubeadm join** Kommando neu generieren: kubeadm token create --print-join-command kubeadm join 192.168.1.31:6443 --token l592ef.xawon3l8jy6dhtfe --discovery-token-ca-cert-hash sha256:5b7485d01dbbeba707dbb9b2ec648b9da56aaf253f3464bfd4a563466aa641c1 ====== Kubernetes Upgrage ======