Результаты поиска для

    Show / Hide Table of Contents

    Разворачивание кластера Kubernetes

    Продукты: МоиОтчеты Корпоративный Сервер

    Для установки и настройки сервера отчётов необходимо развернуть облачную экосистему Kubernetes.

    Для корректной работы МоиОтчеты Корпоративный Сервер необходимо минимум три узла - один master узел и два worker узла. В процессе работ количество узлов может быть увеличено при росте нагрузки. Так же количество узлов может быть уменьшено при снижении нагрузки. Динамическое управление количеством узлов в настоящее время не реализовано.

    Видео установки Корпоративного Сервера

    Подготовка и установка компонентов Kubernetes

    Установка Kubernetes осуществляется последовательным выполнением следующих bash скриптов. Эти примеры подразумевают операционную систему Debian Linux. В случае использования другого дистрибутива некоторые пункты будут отличаться. Например, для разворачивания кластера в системе Alt Linux Server, использовалась документация со страницы www.altlinux.org/Kubernetes, которой будет достаточно для установки Kubernetes, описанной в этой разделе.

    1. Отключение раздела swap.
    #
    # Permanently disable swap
    #
    sed -e '/swap/s/^/#/g' -i /etc/fstab
    swapoff -a
    
    1. Загрузка необходимых модулей ядра.
    #
    # Enable kernel modules
    #
    MODULES=/etc/modules-load.d/k8s.conf
    if [ ! -f $MODULES ]; then 
       echo "Create $MODULES"
       cat<<EOF | tee $MODULES
    overlay
    br_netfilter
    EOF
    fi
    
    1. Настройка сетевых свойств ядра системы.
    #
    # Configure kernel
    #
    SYSCTL=/etc/sysctl.d/k8s.conf
    if [ ! -f $SYSCTL ]; then
        echo "Prepare kernel options"
        cat<<EOF | tee $SYSCTL
    net.bridge.bridge-nf-call-iptables  = 1
    net.ipv4.ip_forward                 = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    EOF
    fi
    sysctl --system
    
    1. Установка дополнительного программного обеспечения, которое потребуется для установки оркестратора и сервера отчётов.
    apt-get update
    
    #
    # Install pre-requested packages
    #
    prerequest=( curl sudo gnupg2 apt-transport-https ca-certificates software-properties-common )
    
    for package in "${prerequest[@]}"
    do
        echo -n "Checking $package: "
        dpkg -s $package > /dev/null 2> /dev/null
        if [ $? -ne 0 ]; then
            echo "Installing"
            apt-get install -y $package
        else
            echo "OK"
        fi
    done
    
    1. Установка Container Runtime Interface (CRI).

    Следующий пример использует CRI containerd. Различные версии Kubernetes и Linux могут потребовать установки CRI-O. Kubernetes использует CRI для загрузки контейнеров, управления контейнерами и для запуска процессов в этих контейнерах.

    ## Add Docker's official GPG key
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add -
    
    ## Add Docker apt repository.
    add-apt-repository \
        "deb [arch=amd64] https://download.docker.com/linux/debian \
        $(lsb_release -cs) \
        stable"
    
    ## Install containerd
    apt-get update && apt-get install -y containerd.io
    
    # Configure containerd
    if [ ! -d /etc/containerd ]; then
      mkdir -p /etc/containerd
    fi
    
    # Remove default config to avoid errors
    if [ -f /etc/containerd/config.toml ]; then
      rm /etc/containerd/config.toml
    fi
    
    # Restart containerd
    systemctl restart containerd
    
    1. Установка компонентов Kubernetes.
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
    cat <<EOF | tee /etc/apt/sources.list.d/kubernetes.list
    deb https://apt.kubernetes.io/ kubernetes-xenial main
    EOF
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    apt-mark hold kubelet kubeadm kubectl
    

    Старт Kubernetes

    Для старта главного узла кластера отредактируйте 3 переменные, отвечающие за соответствующие им пути к конфигурационному файлу (он будет создан автоматически), IP адресу (будет доступен извне) и маску внутренней подсети.

    Затем выполните команду инициализации кластера.

    export KUBECONFIG=/etc/kubernetes/admin.conf1
    export MAIN_IF=192.168.1.191 
    export POD_NETWORK=10.244.0.0/16  # В случае использования flannel это значение менять нельзя!
    
    kubeadm init --pod-network-cidr=$POD_NETWORK --apiserver-advertise-address=$MAIN_IF
    

    Адрес MAIN_IF это IP-адрес главного узла кластера (master node). Адрес может быть реальным IP- адресом или адресом подсети 192.168.

    В случае успешного выполнения инициализации главного узла кластера (master node), на экран будет выведена строка, с помощью которой инициализируются рабочие узлы кластера. С помощью мыши скопируйте эту строку и сохраните её в файл. В этой строке содержится команда для инициализации рабочих узлов. Команда включает в себя секретный ключ. При попадании этого ключа злоумышленнику, он может "скомпрометировать" кластер.

    Пример строки:

    kubeadm join 192.168.1.191:6443 --token lw0lgz.d5zy9fb4jikc89yv \
            --discovery-token-ca-cert-hash sha256:ba83ed75e9fd5f4300070000000000000039e1d05c7915a54435faaa7fe62b77
    

    Для добавления узла в кластер выполните действия, описанные в предыдущем разделе (за исключением установки helm chart), скопируйте на каждый узел эту строку и выполните её от имени администратора (root). В результате выполнения этой команды в кластер будет добавлен новый узел.

    Настройка kubectl.

    mkdir ~/.kube
    rm ~/.kube/config
    cp /etc/kubernetes/admin.conf ~/.kube
    

    Теперь необходимо установить сервис flannel.

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

    В случае успешной установки вывод команды kubectl get pods --all-namespaces должен выглядеть примерно так:

    NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
    kube-system   coredns-78fcd69978-brp76                1/1     Running   0          5m13s
    kube-system   coredns-78fcd69978-shdv5                1/1     Running   0          5m13s
    kube-system   etcd-altlinux-10-1                      1/1     Running   0          5m27s
    kube-system   kube-apiserver-altlinux-10-1            1/1     Running   0          5m22s
    kube-system   kube-controller-manager-altlinux-10-1   1/1     Running   0          5m31s
    kube-system   kube-flannel-ds-7nn2c                   1/1     Running   0          28s
    kube-system   kube-flannel-ds-9phgs                   1/1     Running   0          28s
    kube-system   kube-flannel-ds-ddcw6                   1/1     Running   0          28s
    kube-system   kube-proxy-74pll                        1/1     Running   0          3m36s
    kube-system   kube-proxy-82nld                        1/1     Running   0          3m15s
    kube-system   kube-proxy-njxwv                        1/1     Running   0          5m14s
    kube-system   kube-scheduler-altlinux-10-1            1/1     Running   0          5m32s
    

    В случае, если все шаги по установке были сделаны верно, то состояние из примера выше, будет достигнуто в течение минуты. Кластеру необходимо время чтобы запустить и сконфигурировать coredns после установки flannel.

    Вверх 2025.2.19 © 1998-2025 ООО «Быстрые отчеты»