Как установить и настроить K3s Rancher (kubernetes) на МСВСфера 9 Сервер

Ниже представлена инструкция для установки K3s Rancher (kubernetes) на МСВСфера 9 Сервер. В приведённом примере система состоит из главного узла (master-нода) и рабочего узла (worker-нода).

Окружение

  • МСВСфера 9 Сервер

Установка и настройка

  1. Обновите систему и перезагрузите сервер:

    $ sudo dnf update -y && reboot
    
  2. Загрузите необходимые модули ядра:

    $ sudo modprobe overlay
    $ sudo modprobe br_netfilter
    

    Чтобы модули загружались автоматически после перезагрузки сервера необходимо создать конфигурационный файл:

    $ sudo cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
    overlay
    br_netfilter
    EOF
    
  3. Включите дополнительные настройки системы:

    $ sudo cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    EOF
    
    $ sudo sysctl --system
    
  4. Установите docker следующими командами:

    $ sudo yum install -y yum-utils
    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    $ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    $ sudo systemctl enable docker --now
    $ sudo systemctl enable containerd --now
    
  5. Откройте файл /etc/containerd/config.toml для редактирования, найдите секцию [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] и под ней поменяйте значение «SystemdCgroup» на true. В результате содержимое файла должно выглядеть следующим образом:

    [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
    
  6. Перезапустите containerd:

    $ sudo systemctl restart containerd
    
  7. Отключите SELinux и swap:

    $ sudo setenforce 0
    $ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    $ sudo swapoff -a
    $ sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    
  8. Добавьте файл /etc/yum.repos.d/kubernetes.repo со следующим содержимым:

    [kubernetes]
    name=Kubernetes
    baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
    enabled=1
    gpgcheck=1
    gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
    
  9. Установите kubectl, kubeadm и kubelet:

    $ sudo dnf install kubectl kubeadm kubelet
    
  10. Установите helm:

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 0700 get_helm.sh
$ ./get_helm.sh
  1. Установите имя хоста на обоих узлах:

Master:

$ sudo hostnamectl set-hostname k3s-master && exec bash

Worker:

$ sudo hostnamectl set-hostname k3s-worker && exec bash
  1. Добавьте необходимые правила в файервол на обоих узлах:

Master:

$ sudo firewall-cmd --permanent --add-port=6443/tcp
$ sudo firewall-cmd --permanent --add-port=8472/udp
$ sudo firewall-cmd --permanent --add-port=10250/tcp
$ sudo firewall-cmd --permanent --add-port=51820/udp
$ sudo firewall-cmd --permanent --add-port=51821/udp
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
$ sudo firewall-cmd –reload

Worker:

$ sudo firewall-cmd --permanent --add-port=8472/udp
$ sudo firewall-cmd --permanent --add-port=10250/tcp
$ sudo firewall-cmd --permanent --add-port=51820/udp
$ sudo firewall-cmd --permanent --add-port=51821/udp
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16
$ sudo firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16
$ sudo firewall-cmd --reload
  1. Установите wget на главном узле (master) следующей командой:

$ sudo dnf install wget -y
  1. Установите k3s на главном узле (master) следующей командой:

$ sudo curl -sfL https://get.k3s.io | sh -
  1. Настройте k3s на главном узле (master):

$ mkdir ~/.kube
$ sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
$ sudo chown $USER ~/.kube/config
$ sudo chmod 600 ~/.kube/config
$ export KUBECONFIG=~/.kube/config
  1. Выполните следующую команду на главном узле, чтобы вывести на экран токен доступа:

$ sudo cat /var/lib/rancher/k3s/server/node-token
  1. На рабочем узле (worker) добавьте следующую строку в файл /etc/hosts:

MASTER_IP k3s-master

где MASTER_IP — IP-адрес главного узла (master-ноды).

  1. На рабочем узле (worker) выполните следующую команду:

$ curl -sfL https://get.k3s.io | K3S_URL=https://k3s-master:6443 K3S_TOKEN=<token> sh -

где <token> — токен доступа из п. 16.

На данном этапе кластер K3s готов к работе. Дополнительно можно установить панель управления кластером Rancher. Для этого выполните следующие команды:

$ sudo kubectl create namespace cattle-system
$ sudo helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
$ sudo kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.3/cert-manager.crds.yaml
$ sudo helm repo add jetstack https://charts.jetstack.io
$ sudo helm repo update
$ sudo helm install cert-manager jetstack/cert-manager   --namespace cert-manager   --create-namespace
$ sudo helm install rancher rancher-latest/rancher   --namespace cattle-system   --set hostname=MASTER_IP.sslip.io  --set replicas=1   --set bootstrapPassword=admin

где MASTER_IP — IP-адрес главного узла (master).

Более подробную инструкцию и детали установки вы можете найти в официальной документации Rancher.