# Тестовый kubernetes

[Гитхаб книги](https://github.com/nigelpoulton/TheK8sBook.git)

[Интересная статья по настройке HA k8s](https://habr.com/ru/companies/slurm/articles/439562/)

[Hard way установка](https://github.com/kelseyhightower/kubernetes-the-hard-way/tree/master)

**Docker desktop**

**Введение.**

Для изучения kubernetes в книге "The kubernetes book 2024 edition" автора Nigel Poulton предложено использовать Docker Desktop для запуска одноузлового кластера и дальнейших экспериментов. Я решил не устанавливать лишнего в систему и запустить все на виртуальной машине. Итоговый стек: Windows 10 - Virtualbox 7.0 - Ubuntu 24.04 - Docker Desktop - K8s.

**Настройки VM:**

[![k8s_install_vmsettings1.JPG](http://bobrobotirk.ru/uploads/images/gallery/2024-11/scaled-1680-/k8s-install-vmsettings1.JPG)](http://bobrobotirk.ru/uploads/images/gallery/2024-11/k8s-install-vmsettings1.JPG)

[![k8s_install_vmsettings2.JPG](http://bobrobotirk.ru/uploads/images/gallery/2024-11/scaled-1680-/k8s-install-vmsettings2.JPG)](http://bobrobotirk.ru/uploads/images/gallery/2024-11/k8s-install-vmsettings2.JPG)

[![k8s_install_vmsettings3.JPG](http://bobrobotirk.ru/uploads/images/gallery/2024-11/scaled-1680-/k8s-install-vmsettings3.JPG)](http://bobrobotirk.ru/uploads/images/gallery/2024-11/k8s-install-vmsettings3.JPG)

**Установка**

```
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, [детали установки](http://bobrobotirk.ru/books/docker-k8s/page/setevaia-podsistema "Сетевая подсистема")

Установка 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