Установка Kubernetes с помощью kubespray

Пошаговые инструкции

Содержимое страницы

Как это сделать: установка Kubernetes с использованием Kubespray, включая настройку окружения, настройку инвентаризации и запуск playbook Ansible.

работники распыляют куб в старом здании фабрики

Предварительные требования

Требования к аппаратному и программному обеспечению

  • Убедитесь, что у вас есть несколько машин (минимум 3 узла: 1 мастер и 2 воркера) с следующими характеристиками:
    • Установлен Ubuntu 16.04/18.04 или CentOS 7.
    • Минимум 2 ГБ оперативной памяти на каждую машину (рекомендуется больше памяти для крупных кластеров).
    • Сетевое подключение и доступ по SSH с машины управления Kubespray до каждого узла.
    • Для обеспечения высокой доступности рассмотрите узлы с 16 ГБ оперативной памяти, 100 ГБ диска и 6 ядер процессора.

Настройка управляющей машины

  • Установите Git, если он еще не установлен:

    sudo apt install git-all
    
  • Установите Python (2.7 или 3.5+) и pip:

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Установите Ansible и другие зависимости. Kubespray предоставляет скрипт для этого:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # Необязательно: переход к устойчивому релизу
    python3 -m venv venv  # Создание виртуальной среды Python
    source venv/bin/activate  # Активация виртуальной среды
    pip install -r requirements.txt  # Установка Ansible и других зависимостей
    

Настройка инвентаризации

  • Скопируйте пример инвентаризации:

    cp -r inventory/sample inventory/mycluster
    
  • Отредактируйте файл inventory/mycluster/hosts.ini, чтобы добавить ваши узлы:

    [all]
    node1 ansible_host=10.10.1.3 ansible_user=ubuntu
    node2 ansible_host=10.10.1.4 ansible_user=ubuntu
    node3 ansible_host=10.10.1.5 ansible_user=ubuntu
    
    [kube-master]
    node1
    
    [kube-node]
    node2
    node3
    
  • Если у вас есть другой пользователь, замените ubuntu на вашего пользователя.

  • Вы также можете использовать скрипт inventory_builder, чтобы сгенерировать файл инвентаризации:

    declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
    HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

Настройка конфигурации

  • Настройте параметры кластера Kubernetes в файле inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml. Например:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • Для обеспечения высокой доступности настройте VIP и балансировщик нагрузки:

    # В inventory/mycluster/group_vars/all/all.yml
    kube_vip_arp_enabled: true
    kube_vip_enabled: true
    kube_vip_controlplane_enabled: true
    kube_vip_address: 10.7.12.250  # Обновите с правильным VIP
    kube_vip_interface: eno1  # Обновите с правильным интерфейсом
    

Развертывание кластера

  • Запустите playbook Ansible для развертывания Kubernetes:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

После развертывания

  • После завершения развертывания вы найдете файл kubeconfig в директории inventory/mycluster/artifacts. Этот файл необходим для взаимодействия с вашим кластером Kubernetes с помощью kubectl.
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

Устранение неполадок и доступ

  • Чтобы устранить неполадки или получить доступ к кластеру, убедитесь, что у вас установлен бинарный файл kubectl на вашей управляющей машине или на любом другом компьютере, с которого вы планируете управлять кластером.
  • Если вы сталкиваетесь с проблемами, такими как неготовность узлов-воркеров или другие проблемы с расписанием подов, проверьте журналы и при необходимости вносите изменения в конфигурации.

Полезные ссылки