Skip to content

Kubernetes

with the help of - https://www.redhat.com/sysadmin/podman-inside-kubernetes - https://www.howtoforge.com/how-to-setup-kubernetes-cluster-with-kubeadm-on-rocky-linux/ mnemonic for a test cluster with - 1 controller - 3 workers - Rocky Linux 9 - podman not docker, because it's superiour - netavark - containerd - IPv6 centered

Basics - Object types

  • Pods A container or a logical group of containers
  • Replica Sets How many pods shall there be?
  • Services A service within the kubernetes cluster
  • Volumes Volumes for pods
  • Name Spaces logical groups for DNS and privilege separation
  • ConfigMaps and Secrets environment variables and secrets
  • Stateful Sets for statefull applications
  • Daemon Sets Kubernetes Scheduler???

Basics - Commands

  • change namespace (here: backend) kubectl config set-context --current --namespace=backend

General

  • Setup DNS records for your nodes or make entries in /etc/hosts
  • Set hostnames for your nodes, mine will be
  • pod-ctrl-3
  • pod-worker-4
  • pod-worker-5
  • pod-worker-6
  • example command hostnamectl hostname pod-ctrl-3 --static
  • set selinux to permissive
    sudo setenforce 0
    sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  • Kernel modules and parameters
    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
    
  • Installing
    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
    
  • Configuring
    mv /etc/containerd/config.toml /etc/containerd/config.toml.original
    sudo containerd config default > /etc/containerd/config.toml
    sudo vim /etc/containerd/config.toml
    
  • Replace SystemdCgroup = false with SystemdCgroup = true
  • Start containerd with sudo systemctl enable --now containerd
  • Install kube admin packages
    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
    
  • Initialize
    sudo kubeadm config images pull
    

Controller (Master) only

  • Setup firewall
    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
    

Workers only

  • swapoff -a
  • sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • Setup firewall
    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