Установка Kubernetes-кластера с помощью kubeadm на виртуальных машинах c Ubuntu18.04

Настройка Kubernetes-кластера из 1-го мастера и 2-х нод на виртуальных машин c Ubuntu 18.04
Для практической работы были взяты виртуалки в Digital Ocean(2Gb, 2СPU) с бесплатным бонусом в размере 100$ в течение 60 дней при регистрации на Digital Ocean.

Алгоритм действий состоит из следующих шагов
1.Подготовка к запуску кластера(отключение swap, настройка /etc/hosts-файла серверов, установка имени хоста, установка необходимых пакетов)
2.Инициализация Master-сервера
3.Присоединения Node к кластеру
4.Проверка состояния кластера

 

1.Подготовка к запуску кластера(отключение swap,  настройка /etc/hosts-файлов серверов, установка имени хоста, установка необходимых пакетов)

На всех серверах отключаем swap

Закомментировать подключение swap(если оно там есть) в файле /etc/fstab

В файл /etc/hosts на всех серверах добавляем имена серверов и их IP-адреса

Установки имени хоста
Мастер

Нода1

Нода2

Обновление пакетов и установка необходимых пакетов

Просмотр версии и репозитария, с которого будет установлен пакет docker.io

Добавление GPG-ключа и репозитария для установки kubelet, kubeadm, kubectl

Обновение кеша пакета и просмотр версии и репозитария, с которого будет установлен kubelet

Установка kubelet kubeadm kubectl docker.io

Установка блокировки обновления пакетов

Проверка состояния kubelet. Он должен быть в статусе 255
Kubelet теперь перезапускается каждые несколько секунд, так как в аварийном цикле он ждет готовности kubeadm

Проверка состояния Container runtime – docker
Docker должен быть запущен

Добавление docker и kubelet в автозагрузку

 

2.Инициализация Master-сервера(команды выполняем на Master-сервере)

Параметром

мы указываем IP-адрес,на котором будет доступен API-сервер(в данном случае это внешний IP-адрес сервера). Кстати, по умолчанию используется IP-адрес сетевого интерфейса, связанного с дефолтным шлюзем(через который доступен дефолтный шлюз)(Поэтому в данном случае можно было и не указывать опцию —apiserver-advertise-address т.к. ее значение по дефолту совпадает с тем,что было указано опцией)
Параметром

определяется тип сети, который будет использоваться для связи подов между собой
Важно отметить,что подсеть Pod-ов не должна пересекаться с уже имеющимися на хосте подсетями
В данном случае в качестве сетевого провайдера используется Calico, (именно поэтому при выполнени команды kubeadm init значение —pod-network-cidr равно 192.168.0.0/16)
Если, например, использовать Flannel вместо Calico, то CIDR-подсеть необходимо указывать 10.244.0.0/16
Все доступные провайдеры сетей с соотвествующими CIDR-подсетями и инструкцией по настройки сети доступны по ссылке
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
https://kubernetes.io/docs/concepts/cluster-administration/addons/

Здесь создаются манифесты для создания pod-ов с etcd, apiserver, controller-manager, scheduler

Здесь создаются kubeconfig-файлы

 

Настройка kubectl на работу с кластером
Для настройки kubectl на работу с кластером выполним команды, предложенные установщиком

 

Установка пода сети с типом Calico для коммуникации Pod-ов

Свидетельством успешной установки сети пода сети является запущенный под CoreDNS

 

Полезным будет также настроить автодополнение команды kubectl
Включение автодополнения kubectl

 

3.Присоединения Node-серверов к кластеру
На каждой ноде, которую нужно ввести в кластер выполняем команду, которая была выведена/отображена при инициализации мастера

Добавляем kubelet и docker в авто загрузку

Структура каталогов и файлов на присоединенных нодах имеет вид

 

Структура каталогов и файлов на мастере имеет вид

 

4.Проверка состояния кластера
На Master-е проверяем наличие нод в кластере

Наличие Pod-ов во всех namespace-ах

Просмотр состояния кластера

Просмотр состояния компонентов кластера

 

Просмотр текущего токена(команду выполняем на Master-е)

Token используется для взаимной аутентфикации master и присоединяющейся к кластеру ноде
Он должен харнится в безопасности т.к. токен позволяет любому, кто им владеет присодинить ноду в кластер
Токен имеет срок годности – сутки
По истечению суток нужно генерировать новый токен

Получение значение параметра —discovery-token-ca-cert-hash

 

5.Доступ к Kubernetes-кластеру с другого сервера/десктопа

Для этого необходимо скопировать с мастера kubeconfig-файл на сервер/десктоп, с котрого нужно иметь доступ к кластеру через kubectl

При запуске kubectl передавать опцию —kubeconfig с указанием конфигурационного файла kubeconfig
Например

Для удобства можно создать alias для короткого ввода команды

 

Источник:
https://kubernetes.io/docs/setup/independent/install-kubeadm
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
https://kubernetes.io/docs/concepts/cluster-administration/addons

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика