Задать вопрос
Все статьи / VDS / Установка и настройка ПО / Установка и настройка Kubernetes
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Установка и настройка Kubernetes

Что такое Kubernetes

Kubernetes – это популярная и мощная платформа для управления контейнерами. Она была разработана компанией Google и затем передана в Open Source проект. 

Kubernetes («K8s», Кубернетис) обеспечивает оркестрацию контейнеров – это значит, что он управляет жизненным циклом контейнеров, включая их развертывание, масштабирование, обновление и управление ошибками.

Основные компоненты Kubernetes

  1. Мастер-узел, мастер-нода (Master Node) – это центральная часть управления кластером Kubernetes. 

Основные компоненты мастер-узла включают:

  • API-сервер. Принимает и обрабатывает запросы от клиентов, управляет конфигурацией и состоянием кластера.
  • etcd. Распределенное хранилище данных, где хранится состояние кластера.
  • Планировщик. Отвечает за назначение подов на рабочие узлы на основе требований и доступных ресурсов.
  • Контроллеры. Отслеживают желаемое состояние кластера и управляют ресурсами для достижения этого состояния.
  1. Узлы, ноды (Nodes) – это рабочие машины в кластере, на которых запускаются контейнеры. 

Основные компоненты на узлах включают:

  • Kubelet. Управляет контейнерами на узле и общается с мастер-нодой.
  • Kube-proxy. Отвечает за сетевую конфигурацию на узлах и маршрутизацию сетевых пакетов.
  • Container Runtime. Это программное обеспечение для выполнения контейнеров, такое как Docker или containerd.
  1. Поды (Pods) – это наименьшая развертываемая единица в Kubernetes, содержащая один или несколько контейнеров.
  2. Тома (Volumes) – это механизмы для постоянного хранения данных в Kubernetes. Они могут быть подключены к подам и обеспечивать доступ к данным даже после перезапуска пода.
  3. Сервисы (Services) – объекты, которые позволяют создавать стабильные сетевые точки доступа к подам внутри кластера, даже если те перезапускаются или масштабируются.

Как установить Kubernetes

Kubernetes можно развернуть на различных платформах и операционных системах. Выбор зависит от ваших потребностей и предпочтений. 

Минимальные требования могут варьироваться, но для построения кластеров с небольшим количеством контейнеров рекомендуется иметь: 

  • как минимум 2 сервера;
  • CPU: 1-2;
  • ОЗУ (оперативная память): 2-4 ГБ каждый. 

Большие и продуктивные кластеры требуют больше вычислительных и сетевых ресурсов.

Чтобы выполнить создание кластера, мы будем использовать 2 сервера с ОC Ubuntu 22.04 LTS. 

Шаг 1. Установите и настройте Docker

Для работы с Kubernetes требуется установить Docker на каждом сервере в кластере. Следуя инструкциям ниже, установите и активируйте Docker на каждом сервере:

  1. Откройте терминал и выполните следующую команду, чтобы обновить список доступных пакетов:

sudo apt update

  1. После того как список пакетов обновлен, вы можете установить Docker на сервер с помощью следующей команды:

sudo apt install docker.io -y

Флаг «-y» автоматически подтверждает все запросы на установку пакетов, так что вам не нужно будет подтверждать каждый шаг вручную.   

  1. Настройте автозапуск Docker при включении сервера:

sudo systemctl enable docker

Она настроит Docker так, чтобы он автоматически запускался при загрузке системы. Это важно, чтобы Docker всегда был доступен после перезагрузки сервера.

  1. Проверьте, запущен ли Docker; выполните следующую команду:

sudo systemctl status docker

Вы увидите вывод, который покажет, что Docker работает.

Важно! Если Docker не запущен, запустите его:

sudo systemctl start docker

Теперь Docker должен быть активен и готов к использованию.

Шаг 2. Установите Kubernetes

  1. Для того чтобы удостовериться в подлинности программного обеспечения Kubernetes, которое вы собираетесь установить из нестандартного репозитория, необходимо добавить ключ подписи. 

Выполните следующие команды на каждом узле:

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo tee /usr/share/keyrings/kubernetes.gpg

Так вы загрузите ключ подписи Kubernetes с использованием утилиты «curl» и сохраните его в безопасном месте, по умолчанию в «/usr/share/keyrings».

  1. Поскольку Kubernetes не включен в стандартные репозитории, необходимо добавить репозиторий Kubernetes в список источников программного обеспечения на каждом узле:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/kubernetes.gpg] http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list

  1. Установите инструменты Kubernetes:

sudo apt install kubeadm kubelet kubectl

Эта команда установит: 

  • Kubeadm (Kubernetes Admin) – инструмент, который помогает инициализировать кластер Kubernetes. 
  • Kubelet – компонент, который работает на каждом узле и управляет контейнерами. 
  • Утилитe «kubectl», которая предоставляет вам командный интерфейс для управления кластером.

  

  1. Запретите этим инструментам автоматически обновляться:

sudo apt-mark hold kubeadm kubelet kubectl

  1. Проверьте версию установленного «kubeadm»:

kubeadm version

Эта команда покажет информацию о версии «kubeadm». Убедитесь, что все инструменты Kubernetes успешно установлены и находятся в рабочем состоянии.

Шаг 3. Разверните Kubernetes

В этом разделе мы рассмотрим подготовку серверов к развертыванию Kubernetes. 

Выполните следующие шаги на каждом сервере в кластере:

  1. Для начала отключите swap-память, прописав:

sudo swapoff -a

  1. Затем отредактируйте файл «/etc/fstab», чтобы закомментировать строку, связанную с swap:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Ваши действия отключат swap-память, которая может мешать работе Kubernetes.

  1. Откройте файл конфигурации «containerd» в текстовом редакторе:

sudo nano /etc/modules-load.d/containerd.conf

  1. Добавьте следующие две строки:

overlay
br_netfilter

  1. Сохраните файл.
  2. Затем используйте команду «modprobe», чтобы добавить необходимые модули:

sudo modprobe overlay
sudo modprobe br_netfilter

  1. Откройте файл конфигурации Kubernetes:

sudo nano /etc/sysctl.d/kubernetes.conf

  1. Добавьте следующие строки:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

  1. Сохраните файл и закройте текстовый редактор, затем перезагрузите конфигурацию сети:

sudo sysctl –system

Так вы сможете настроить сетевые параметры для Kubernetes, обеспечив правильную работу сетевых пакетов и проксирование IP-трафика между контейнерами.

  1. Решите, какой сервер вы хотите назначить в качестве мастер-ноды (главного узла). Затем введите следующую команду на мастер-сервере:

sudo hostnamectl set-hostname master-node

Эта команда установит имя хоста мастер-ноды – «master-node». 

  1. Затем установите имя хоста для рабочей ноды, введя следующую команду на втором сервере:

sudo hostnamectl set-hostname worker1
Если у вас есть дополнительные рабочие ноды, используйте этот шаг, чтобы установить уникальное имя хоста для каждого из них.

  1. Отредактируйте файл «hosts» на каждом узле, добавив IP-адрес и имя хоста серверов, которые вы хотите добавить в кластер Kubernetes. Это позволит серверам взаимодействовать друг с другом, используя имена хостов. 

  

  1. Вы можете редактировать файл «/etc/hosts». Например:

sudo nano /etc/hosts

  1. В файле «/etc/hosts» добавьте подобные строки для каждого сервера:

<IP-адрес> master-node
<IP-адрес> worker1

Где: 

  • «<IP-адрес>» – это фактический IP-адрес каждого сервера;
  • «master-node» и  «worker1» – это соответствующие имена хостов, которые вы назначили каждому серверу.
  1. После редактирования файла «/etc/hosts», сохраните изменения и закройте текстовый редактор. Теперь каждый сервер будет знать другие серверы в кластере по именам их хостов.
  2. Перейдите в мастер-ноду.
  3. Откройте файл «kubelet» в текстовом редакторе:

sudo nano /etc/default/kubelet

  1. Добавьте следующую строку в файл:

KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs"

  1. Сохраните изменения и закройте файл.
  2. Перезагрузите конфигурацию:

systemctl daemon-reload
systemctl restart kubelet

  1. Откройте файл конфигурации Docker-демона:

sudo nano /etc/docker/daemon.json

  1. Добавьте следующий блок настроек:

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
 "max-size": "100m"
  },
  "storage-driver": "overlay2"
}


  

  1. Сохраните изменения и закройте файл.
  2. Перезагрузите конфигурацию:

systemctl daemon-reload
systemctl restart docker

  1. Откройте файл конфигурации «kubelet»:

sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

  1. Добавьте следующую строку:

Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"

  1. Сохраните изменения и закройте файл.
  2. Перезагрузите «kubelet»:

systemctl daemon-reload
systemctl restart kubelet

  1. Запустите кластер, введя команду. 

sudo kubeadm init --control-plane-endpoint=[master-hostname] --upload-certs

Где [master-hostname] – это имя вашей мастер-ноды:

По завершении появится сообщение с информацией о команде «kubeadm join». Она служит для присоединения рабочих нод к кластеру. 

  1.  Создайте директорию для конфигурации Kubernetes-кластера:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Эти команды создают директорию и копируют конфигурационный файл, позволяя вам управлять кластером с учетной записи пользователя.

Теперь ваша мастер-нода готова. Вы можете продолжить с присоединением рабочих узлов к кластеру.

Шаг 4. Настройте Kubernetes

В первую очередь необходимо развернуть сеть подов в кластере.

Важно! Сеть подов – это способ обеспечения связи между разными узлами в кластере. Для создания сети подов мы используем сетевой менеджер Flannel.

  1. Используйте «kubectl», чтобы установить Flannel:

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

Эта команда загрузит и установит Flannel в вашем кластере Kubernetes.

  1. Чтобы удалить Taint с узла мастера, пропишите:

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

Важно! Taint – это аннотация, которая может запрещать работу на узле мастера (control-plane node).

  1. Выполните следующие команды, чтобы отключить AppArmor:
systemctl stop apparmor
sudo systemctl disable apparmor
systemctl restart containerd.service
  1. Используйте команду «kubeadm join» на рабочих нодах, чтобы присоединить их к мастер-ноде. Повторите шаги на каждой рабочей ноде, которую вы хотите добавить в кластер.

kubeadm join [master-node-ip]:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:1234..cdef

Где замените значения «[master-node-ip]», токен («--token») и хеш сертификата--discovery-token-ca-cert-hash») на соответствующие значения вашего мастер-узла:

В выводе вы получите: 


Эта команда присоедит рабочую ноду к мастер-ноде. Повторите этот шаг для каждого рабочего узла в кластере.

  1. Переключитесь в мастер-ноду и выполните команду:

kubectl get nodes

Эта команда отобразит статус всех нод в кластере, включая рабочие ноды, которые вы присоединили. 

Если установка и настройка прошли успешно, вы увидите список нод, включая рабочие ноды, которые были добавлены в кластер.

Заключение

Выполнив все шаги, которые мы описали в этом руководстве, вы сможете установить Kubernetes и настроить его конфигурацию. 

Теперь вы готовы управлять вашим кластером Kubernetes для управления контейнерами и приложениями.

Предыдущая статья
Управление сервером Minecraft
Следующая статья
Установка и настройка PostgreSQL в Docker