Zum Inhalt

Kubernetes

mit Hilfe von - https://www.redhat.com/sysadmin/podman-inside-kubernetes - https://www.howtoforge.com/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/ Gedächtnisstütze für einen Testcluster mit - 1 Controller - 3 Workern - Rocky Linux 9 - Podman statt Docker, weil es überlegen ist - Netavark - containerd - IPv6-zentriert

Grundlagen – Objekttypen

  • Pods Ein Container oder eine logische Gruppe von Containern
  • Replica Sets Wie viele Pods soll es geben?
  • Services Ein Dienst innerhalb des Kubernetes-Clusters
  • Volumes Volumes für Pods
  • Namensräume Logische Gruppen für DNS und Rechtedatrennung
  • ConfigMaps und Secrets Umgebungsvariablen und Secrets
  • Stateful Sets für zustandsbehaftete Anwendungen
  • Daemon Sets Kubernetes Scheduler???

Grundlagen – Befehle

  • Namensraum wechseln (hier: backend) kubectl config set-context --current --namespace=backend

Allgemein

  • DNS-Einträge für die Nodes anlegen oder Einträge in /etc/hosts vornehmen
  • Hostnamen für die Nodes setzen, meine lauten
  • pod-ctrl-3
  • pod-worker-4
  • pod-worker-5
  • pod-worker-6
  • Beispielbefehl hostnamectl hostname pod-ctrl-3 --static
  • SELinux auf permissive setzen
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  • Kernel-Module und Parameter
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables  = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    net.ipv6.conf.all.forwarding        = 1
    EOF
    sudo sysctl --system
    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    sudo modprobe overlay
    sudo modprobe br_netfilter
    
  • Installation
    dnf -y install dnf-utils
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    sudo dnf repolist
    sudo dnf makecache
    sudo dnf -y install containerd.io
    
  • Konfiguration
    mv /etc/containerd/config.toml /etc/containerd/config.toml.original
    sudo containerd config default > /etc/containerd/config.toml
    sudo vim /etc/containerd/config.toml
    
  • SystemdCgroup = false durch SystemdCgroup = true ersetzen
  • containerd starten mit sudo systemctl enable --now containerd
  • Kubeadm-Pakete installieren
    cat <<EOF | sudo 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/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    exclude=kubelet kubeadm kubectl
    EOF
    sudo dnf repolist
    sudo dnf makecache
    sudo dnf install kubelet kubeadm kubectl --disableexcludes=kubernetes
    sudo systemctl enable --now kubelet
    
  • Initialisierung
    sudo kubeadm config images pull
    

Nur Controller (Master)

  • Firewall einrichten
    sudo firewall-cmd --add-port=6443/tcp --permanent
    sudo firewall-cmd --add-port=2379-2380/tcp --permanent
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=10259/tcp --permanent
    sudo firewall-cmd --add-port=10257/tcp --permanent
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all
    

Nur Worker

  • swapoff -a
  • sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • Firewall einrichten
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=30000-32767/tcp --permanent
    sudo firewall-cmd --reload
    sudo firewall-cmd --list-all