Создадим 4 виртуальные машины на Debian 12
Мы будем устанавливать все с отдельной машины, представим, что это наш рабочий ПК
Настроим подключение по ключу с нашей машины до серверов
sudo yum -y install openssh-server openssh-clients
ssh-keygen -b 4096 -a 15
cat ~/.ssh/id_rsa.pub | ssh root@ip_address_server 'cat >> ~/.ssh/authorized_keys'
Проверим
ssh root@ip_address_server
На всех ВМ
sudo apt update -y && sudo apt upgrade -y
Клонируем kubespray
git clone https://github.com/kubernetes-sigs/kubespray.git
Установим Ansible
VENVDIR=kubespray-venv
KUBESPRAYDIR=kubespray
python3 -m venv $VENVDIR
source $VENVDIR/bin/activate
cd $KUBESPRAYDIR
pip install -U -r requirements.txt
Перейдем к Kubespray
cp -rfp inventory/sample inventory/mycluster
declare -a IPS=(10.10.1.10 10.10.1.20 10.10.1.30 10.10.1.40) // здесь ip адреса ваших виртуальных машин
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
// если после команды ниже появляется ошибка ssh, проверяем, что не так с ключами и т.д., например пробуем из под root
// если нужно очистить старый кластер
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
// если ВМ чистые, запускаем сразу команду ниже
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
Здесь придется подождать
Проверим на master ноде
kubectl cluster-info
kubectl get nodes
kubectl get pods --all-namespaces
// если под пользователем появляется ошибка вида couldn't get current server API group list
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Запустим nginx
kubectl create deployment nginx --image=nginx
kubectl get deployments
kubectl describe deployment nginx
kubectl create service nodeport nginx --tcp=80:80
kubectl get svc
Проверим
ip_address:31700 // у вас будет другой порт
Завершим
kubectl delete deployment nginx
kubectl get deployments