Kubernetes кластер за 25$ в год

Хочу предупредить что гайд ниже будет описывать кластер с одной ноды, дабы удешевить ваш энвайронмент. Этот кластер не рекомендуется использовать в production.

С чего начать?

Прежде всего вам нужен сервер. Если он у вас уже есть, то спокойно переходите к следующему разделу "Устанавливаем Kubernetes".

Я рекомендую недорогую и простую ноду от DigitalOcean которую вы можете создать в два клика и очень легко расширять ваш кластер новыми нодами при необходимости.

Также если вы воспользуетесь этой ссылкой для регистрации и пополните свой аккаунт на 25$ то бонусом вы получите еще +100$, а этого уже хватит на годовой кластер.

Теперь жмем CreateDroplets:

https://api.bcode.dev/v1/content/storage/post/100007/a846b882317a4d19bcee71a425483ac7.png

Далее нужно выбрать настройки вашего виртуального сервера. Я рекомендую использовать операционную систему Ubuntu 20.03 (LTS).

https://api.bcode.dev/v1/content/storage/post/100007/0d98bbece129414f9419efd273fad8d6.png

Далее выбираем план, для наших обучающих целей вполне сойдет Basic10$:

https://api.bcode.dev/v1/content/storage/post/100007/b7789959aaab402596af7248d9ca1784.png

Ниже указываем доступ по паролю или же если вы уже работали с SSH и понимаете что такое SSH Key то выбираем ключ. Для простоты я выбрал пароль:

https://api.bcode.dev/v1/content/storage/post/100007/f8b0302071ea431c9744691670f227a1.png

Далее кликаем Create Droplet.

Осталось дождаться когда ваш VPS сервер будет готов и далее копируем IP адрес и с помощью SSH и пароля который вы указали подключаемся к серверу.

ssh root@[IP_ADDRESS]

где IP_ADDRESS это ipv4 адрес:

https://api.bcode.dev/v1/content/storage/post/100007/8e2f7080b94048f78285779cbe810842.png

Устанавливаем Kubernetes

Ну вот теперь у нас есть свой сервер, осталось выполнить несколько подготовительных операций и перейти к установке Kubernetes.

Давайте обновим наш сервер до последних обновлений:

apt update

Далее нам необходимо установить Snap утилиту для дальнейшей установки Kubernetes.

apt install snapd

Переходим к установки Kubernetes. Для простоты мы будем использовать MicroK8s.

snap install microk8s --classic

MicroK8s - это минимально производительный Kubernetes для разработки, который не требует настройки и изначально базируется на одной ноде.

Выполняем следующую команду чтобы видеть в каком статусе находится наш Kubernetes:

microk8s status --wait-ready

> microk8s **is running**

И последний шаг прежде чем приступить к работе с нашим Kubernetes это активация необходимых дополнений. Таким же способом вы можете активировать любое нужное вам дополнение предложенных тут.

microk8s enable dns ingress storage dashboard

Подключаемся к Kubernetes

На вашем сервере выполняем следующую команду и результат копируем и сохраняем на вашем компьютере локально в формате k8s.yml. Также нужно поменять server: https://127.0.0.1:16443 на ваш ipv4 server: https://164.90.161.0/:16443.

microk8s kubectl config view --raw

> *Output:*
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CR....
    server: https://164.90.161.0:16443
  name: microk8s-cluster
contexts:
- context:
    cluster: microk8s-cluster
    user: admin
  name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
  user:
    token: ek04dmZKbkh2YVNPVT.....

Устанавливаем Kubectl локально на ваш компьютер, с его помощью мы будем взаимодействовать с наши кластером.

Готово! Используя kubectl мы можем локально взаимодействовать с нашим Kubernetes кластером состоящим с одной ноды.

kubectl get nodes

NAME                          STATUS    AGE       VERSION
ubuntu-s-1vcpu-2gb-fra1-01    Ready     61m       v1.20.2

Также вы можете изучить как настроить авто-генерируемые SSL сертификаты LetEncrypt на вашем Kubernetes кластере.