Тестовый kubernetes
Интересная статья по настройке HA k8s
Docker desktop
Введение.
Для изучения kubernetes в книге "The kubernetes book 2024 edition" автора Nigel Poulton предложено использовать Docker Desktop для запуска одноузлового кластера и дальнейших экспериментов. Я решил не устанавливать лишнего в систему и запустить все на виртуальной машине. Итоговый стек: Windows 10 - Virtualbox 7.0 - Ubuntu 24.04 - Docker Desktop - K8s.
Настройки VM:
В данном мастере не отображаются все настройки, после создания нужно добавить поддержку виртуализации:
Далее стандартная установка ОС. Бывает, для 24 Ubuntu возникает ошибка видеодрайвера в live режиме. Не страшно, после установки все будет исправлено.
Отключить swap
sudo swapoff -a
Отредактировать файл /etc/fstab, закомментировать строку со словом swap
nano /etc/fstab
После перезагрузки удалить файл /swap.img
sudo rm /swap.img
Проверить, поддерживается ли виртуализация kvm:
sergey@sergey-k8s:~$ lsmod | grep kvm
kvm_intel 487424 0
kvm 1404928 1 kvm_intel
irqbypass 12288 1 kvm
Добавить текущего пользователя в группу kvm
sudo usermod -aG kvm $USER
Настроить репозиторий docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Установить Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Скачать Docker Desktop
Установить пакет
sudo apt-get update
sudo apt-get install ./docker-desktop-amd64.deb
Возможна ошибка, на нее не обращать внимания
Download is performed unsandboxed as root as file
'/home/sergey/Downloads/docker-desktop-amd64.deb' couldn't be accessed by user '_apt'.
- pkgAcquire::Run (13: Permission denied)
В приложениях должен появиться Docker Desktop.
Хз почему, но при повторе процесса на другой виртуалке постоянно появлялась ошибка после запуска docker desktop и виртуалка вылетала.
Установка через minikube
Способ: при помощи minikube устанавливается kubernetes.
- Повторить шаги из предыдущей инструкции до скачивания Docker Desktop
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start
alias kubectl="minikube kubectl --"
cubectl install:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
Установка
mkdir -p $HOME/.kube
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
swapoff -a
kubectl
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.0.109
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
kubeadm token create --print-join-command
kubectl get nodes
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
kubectl get no
kubectl get po --all-namespaces
Дополнительные удобства
Настройка другого редактора (по умолчанию vi) например при выполнении команды kubectl edit pod ...
nano .bashrc
#Добавить строку
export EDITOR=nano
#Для использования в текущей сессии, в последующих сессиях автоматически
source ~/.bashrc
При установке через kubeadm для балансировки трафика требуется MetalLB, детали установки
Установка kubectl для управления с другой системы
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Скопировать файл авторизации config в ~/kube/config