Вступ
Цей посібник надає покрокову інструкцію з налаштування локального кластера Kubernetes за допомогою віртуальних машин (VM) Lima та Kubespray. Він призначений для розробників і системних адміністраторів, які хочуть тестувати, навчатися або експериментувати з Kubernetes у локальному середовищі. Завдяки віртуальним машинам Lima ви можете змоделювати багатонодову архітектуру Kubernetes без необхідності використовувати хмарні ресурси, що дозволяє створити економічно ефективне та гнучке середовище.
Цей документ охоплює наступні теми:
- Створення та налаштування віртуальних машин Lima.
- Провізіювання кластерів Kubernetes за допомогою Kubespray.
- Керування файлами kubeconfig для доступу до кластерів.
- Очистка ресурсів після завершення використання.
Слідуйте цій інструкції, щоб швидко налаштувати локальний кластер Kubernetes і почати вивчати його можливості.
Передумови
- Lima має бути встановлений і здатний створювати віртуальні машини.
Кроки
- Створіть 3 локальні віртуальні машини та додайте диски.
- Провізіонуйте віртуальні машини за допомогою Kubespray.
- Створіть kubeconfig.
- Очистка.
Створення віртуальних машин, віртуальних дисків та підключення дисків
- Створіть віртуальні машини Lima з мережею user-v2, щоб вони могли спілкуватися між собою. Пересоздайте default, якщо він не знаходиться в мережі user-v2, щоб kubespray міг отримати доступ до інших віртуальних машин.
limactl delete default
limactl create --vm-type=vz --rosetta --network=lima:user-v2 --name=default
limactl create --vm-type=vz --rosetta --cpus=8 --memory=10 --network=lima:user-v2 --name=node-1
limactl create --vm-type=vz --rosetta --cpus=8 --memory=10 --network=lima:user-v2 --name=node-2
limactl create --vm-type=vz --rosetta --cpus=8 --memory=10 --network=lima:user-v2 --name=node-3
- Створіть віртуальні диски з форматом raw (відредагуйте розмір за необхідності):
limactl disk create disk-1 --size 5G --format raw
limactl disk create disk-2 --size 5G --format raw
limactl disk create disk-3 --size 5G --format raw
- Дозвольте редагування на віртуальних машинах за умовчанням:
limactl edit default --mount-writable
- Оновіть конфігурацію для кожної віртуальної машини, щоб підключити диски. Приклад для node-1, у файлі ~/.lima/node-1/lima.yaml:
additionalDisks:
- name: "disk-1"
format: false
- Запустіть віртуальні машини та перевірте підключення дисків:
limactl start
limactl shell node-1 sudo fdisk -l /dev/vdb
Провізіонування віртуальних машин за допомогою Kubespray
- Клонуйте репозиторій Kubespray:
git clone --single-branch --branch release-2.26 https://github.com/kubernetes-sigs/kubespray.git kubespray-release-2.26
- Створіть нову папку для налаштувань Ansible:
cp -rfp inventory/sample inventory/lima
- Створіть образ Kubespray:
nerdctl.lima build . -t kubespray:dev
- Запустіть образ з прикріпленою папкою inventory:
nerdctl.lima run \
-u root \
-v ./inventory:/kubespray/inventory \
-v ~/.ssh:/root/.ssh \
--rm -it --name kubespray-dev \
kubespray:dev /bin/bash
- Усередині образу встановіть необхідні залежності:
pip install -r contrib/inventory_builder/requirements.txt
- Створіть конфігураційний файл (замініть IP-адреси на IP-адреси ваших віртуальних машин):
CONFIG_FILE=inventory/lima/hosts.yaml python3 contrib/inventory_builder/inventory.py 192.168.104.6 192.168.104.7 192.168.104.8
- Отримайте свій публічний ключ SSH з ~/.ssh/idrsa.pub_ і додайте його до файлу ~/.ssh/authorizedkeys_ на віртуальних машинах.
- Якщо у вас вже є пара ключів SSH на локальній машині, публічний ключ буде автоматично доданий до файлу authorizedkeys_ на віртуальних машинах.
- Скопіюйте приватний ключ з вашої локальної машини на віртуальні машини Kubespray і встановіть його права доступу на 600 за допомогою:
chmod 600 ~/.ssh/id_rsa
- Провізіонуйте кластер:
ansible-playbook -i inventory/lima/hosts.yaml -u lima --become --become-user=root -K cluster.yml
- Через деякий час провізіонування має завершитись. Наприклад:
Якщо цього не сталося, перевірте виведення і виправте можливі проблеми.
Створення файлу Kubeconfig
- Оновіть права доступу для файлу kubeconfig на контролері:
ssh lima@localhost -p 60222
sudo chown -R lima:lima /etc/kubernetes/admin.conf
- Скопіюйте файл kubeconfig:
scp -P 60222 lima@localhost:/etc/kubernetes/admin.conf ~/.kube/kubespray-lima.conf
- Завантажте конфігурацію для kubectl:
export KUBECONFIG=~/.kube/kubespray-lima.conf
- Перевірте налаштування кластера:
kubectl cluster-info
kubectl get nodes
Очистка
- Скидайте стан Kubernetes (опціонально):
ansible-playbook -i inventory/lima/hosts.yaml -u lima --become --become-user=root -K reset.yml
- Видаліть інстанси віртуальних машин:
limactl delete node-1
limactl delete node-2
limactl delete node-3
Висновок
Дотримуючись цього посібника, ви зможете налаштувати локальний кластер Kubernetes за допомогою віртуальних машин Lima та Kubespray. Це налаштування ідеально підходить для розробки, тестування та навчання Kubernetes без необхідності використовувати хмарні ресурси. Воно також надає гнучкість для масштабування та налаштувань конфігурацій. Для подальшого навчання ознайомтесь з документацією Kubespray та офіційним посібником Lima.
Щасливих експериментів!
Перекладено з: Simplify Kubernetes Deployment: Local Cluster Setup with Lima VMs and Kubespray