Как установить kubernetes ubuntu

Обновлено: 02.07.2024

Как установить и настроить Kubernetes и Docker в Ubuntu 18.04

Kubernetes - платформа с открытым исходным кодом для управления контейнерными приложениями
Позволяет управлять, масштабировать, автоматически развертывать контейнерные приложения в кластерной среде
Kubernetes разработан Google


Дано:
3 сервера с Ubuntu 18.04
192.168.0.128 - k8s-master
192.168.0.129 - worker01
192.168.0.130 - worker02


Задачи:
Установка Kubeadm
Настройка хостов
Установить докер
Отключить своп
Установить пакеты Kubeadm
Инициализация кластера Kubernetes
Добавление рабочих узлов в кластер Kubernetes
Тестирование


Шаг 1 - установка Kubeadm
На этом первом шаге мы подготовим эти 3 сервера для установки Kubernetes
Выполните все команды на главном и рабочем узлах

Настройка хостов
Отредактируйте файл hosts на всех серверах


sudo vi /etc/hosts

Вставьте конфигурацию хостов ниже:
192.168.0.128 k8s-master
192.168.0.129 worker01
192.168.0.130 worker02


Теперь проверьте пинг всех серверов с именем хоста:
ping -c 3 k8s-master
ping -c 3 worker01
ping -c 3 worker02

Убедитесь, что все IP-адреса разрешены как имя хоста.


Установим докер
В этом уроке мы установим Docker из репозитория Ubuntu

Установите Docker, используя команду apt ниже

sudo apt install docker.io -y


После завершения установки запустите службу Docker
Разрешите ей каждый раз запускаться при загрузке системы

sudo systemctl start docker
sudo systemctl enable docker

Установка докера завершена


Отключить SWAP

Чтобы настроить серверы Kubernetes Linux, нужно отключить SWAP

Проверьте список подкачки и отключите его

sudo swapon -s
sudo swapoff -a

Чтобы навсегда отключить SWAP, нужно отредактировать файл /etc/fstab

sudo vi /etc/fstab

Сохраните и выйдите, затем перезагрузите систему:
sudo reboot


Установите пакеты Kubeadm

Будем использовать пакеты Kubeadm для настройки кластера Kubernetes
Установим пакеты Kubeadm из официального репозитория Kubernetes


Добавьте репозиторий Kubernetes, создав файл /etc/apt/sources.list.d

cd /etc/apt/
sudo vi sources.list.d/kubernetes.list

Замечания:

Мы все еще используем репозиторий Xenial Ubuntu 16.04 для нашей установки Kubeadm

Теперь обновите репозиторий, установите пакеты kubeadm, используя команды ниже:
sudo apt update
sudo apt install -y kubeadm kubelet kubectl


Шаг 2 - Инициализация кластера Kubernetes

На этом этапе мы инициализируем Kubernetes на узле «k8s-master»

На этом этапе запускайте все команды только на сервере «k8s-master»

Инициализируйте кластер Kubernetes, используя команду kubeadm ниже:
sudo kubeadm init --pod-network-cidr=10.244.10.0/16 --apiserver-advertise-address=192.168.0.128 --kubernetes-version "1.11.0"

--apiserver-advertise-address - определяет, на каком IP-адресе Kubernetes должен расшарить свой сервер API


Если вы хотите использовать другую сеть pod, такую как weave-net или calico, измените диапазон IP-адресов


Инициализируем кластер Kubernetes

Когда инициализация Kubernetes будет завершена, вы получите результат с выводом на экран

Скопируйте команду "kubeadm join . . . " в ваш текстовый редактор
Команда будет использоваться для регистрации новых рабочих узлов в кластере kubernetes

Теперь, чтобы использовать Kubernetes, нам нужно выполнить несколько команд, как показано в результате:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Фланелевая сеть была развернута в кластере Kubernetes

Подождите минуту, а затем проверьте узел и модули kubernetes, используя команды ниже:
kubectl get nodes
kubectl get pods --all-namespaces


Получили:
"k8s-master", работающий как кластер "master" со статусом "ready"
Все модули "kube-system", необходимые для кластера, запущены и работают

Инициализация и настройка мастера кластера Kubernetes завершена


Шаг 3 - Добавление рабочих узлов в кластер Kubernetes

На этом шаге мы добавим двух узловых работников "worker01" и "worker02" в кластер Kubernetes


Подключитесь к серверу worker01, выполните kubeadm join, полученную при инициализации кластера:
kubeadm join 192.168.0.128:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd


Подключитесь к серверу worker02, выполните kubeadm join, полученную из инициализации кластера:
kubeadm join 192.168.0.128:6443 --token daync8.5dcgj6c6xc7l8hay --discovery-token-ca-cert-hash sha256:65a3e69531d323c335613dea1e498656236bba22e6cf3d5c54b21d744ef97dcd


Подождите несколько минут и вернитесь к мастеру узла «k8s-master» и проверьте состояние узла.

kubectl get nodes


Шаг 4 - Тестирование

На этом этапе мы развернем веб-сервер Nginx внутри кластера
Мы развернем веб-сервер Nginx с использованием шаблона YAML

Вставьте конфигурации ниже:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploymentment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.0
ports:
- containerPort: 80


Сохранить и выйти

Замечания:
Мы создаем новый "Deployment" под названием "nginx-deploymentment"

Установите ярлык приложения как "nginx" с "3" репликами

Теперь создайте развертывание, выполнив команду kubectl ниже:
kubectl create -f nginx-deploymentment.yaml


После создания нового nginx-deployment, проверьте список развертываний внутри кластера:
kubectl get deployments
kubectl describe deployment nginx-deploymentment

Вы получите модули nginx для развертывания с 3 репликами на рабочих узлах


Вставьте конфигурацию ниже:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
run: nginx-service
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
selector:
app: nginx


Сохранить и выйти

Создайте сервис kubernetes, используя команду kubectl ниже:
kubectl create -f nginx-service.yaml


Теперь проверьте все доступные сервисы в кластере

Проверьте, используя команду curl для всех рабочих узлов

На worker01:
curl worker01:32649

На worker02:
curl worker02:32649


Установка и настройка Kubernetes Cluster в Ubuntu 18.04 успешно завершена

image

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

Я говорю о самой установке инструмента управления контейнерами. Вы, конечно, не можете развернуть Kubernetes так же, как когда-то — установив Docker в качестве среды выполнения.

Вместе мы сейчас попробуем установить Kubernetes на Ubuntu Server 20.04 без Docker-а.

Что вам понадобится

  • Пользователь с привилегиями sudo
  • Экземпляр Ubuntu Server 20.04 (он будет служить Контроллером — вам понадобятся другие экземпляры для работы в качестве узлов, но я собираюсь продемонстрировать только на Контроллере, так как установка будет одинаковой на всех машинах)

Как установить среду выполнения containerd

Первое, что мы сделаем, это установим среду выполнения containerd, которая займет место Docker. Войдите в свой экземпляр Ubuntu Server и обязательно обновите apt с помощью команды:


После этого вы должны запустить обновление с помощью команды:


Если ядро ​​обновляется, вам нужно перезагрузить сервер (если у вас не установлен и не запущен Live Patch).

Установите containerd с помощью команды:


Настройте containerd и запустите службу с помощью команд:

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

Далее мы установим Kubernetes. Сначала нужно добавить ключ GPG репозитория с помощью команды:


Добавьте репозиторий Kubernetes с помощью команды:


Теперь вы можете установить все необходимые компоненты Kubernetes с помощью команды:

Как решить несколько проблем, возникших с containerd

Здесь все становится немного сложнее. В Docker было решено множество внутренних вещей. Когда вы переходите на containerd, вам нужно внести некоторые изменения в конфигурацию вручную.

Первое изменение — добавить строку в /etc/sysctl.conf. Откройте файл командой:


Открыв этот файл, добавьте снизу следующее:


Сохраните и закройте файл.

Затем введите команды:


Перезагрузите конфигурации с помощью команды:


Вам также потребуется загрузить пару необходимых модулей с помощью команд:


Как только вы позаботитесь об этом, то сможете инициализировать Kubernetes.

Как завершить настройку

Вам нужно будет отобразить все ваши узлы в / etc / hosts. Убедитесь, что отображение имеет форму:


Следующим шагом является установка имени хоста вашего контроллера (убедитесь, что оно соответствует имени хоста, которое вы использовали в / etc / hosts) с помощью команды:


Где HOSTNAME — это имя хоста, которое вы хотите использовать.

Отключите свопинг, открыв файл fstab для редактирования командой:


Эта строка теперь будет начинаться с:


Сохраните и закройте файл.

Отключите своп командой:


Вытащите необходимые контейнеры командой:


На контроллере инициализируйте Kubernetes с помощью команды:


Где IPADDRESS — это IP-адрес вашего контроллера.

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

Прежде чем вы сможете присоединить узлы к кластеру, вам нужно позаботиться о еще нескольких битах в кластере.

На контроллере создайте каталог кластера с помощью команды:


Скопируйте файл конфигурации в этот каталог с помощью команды:


Дайте конфигурационному файлу соответствующие разрешения с помощью команды:


Разверните сеть контейнеров (в данном случае мы будем использовать weave-net) в кластере с помощью команды:


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

Процесс не так прост, как раньше. Надеюсь, что в будущем развертывание кластера Kubernetes будет таким же простым, как и при использовании Docker.

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

Установите Kubernetes на Ubuntu 20.04 LTS Focal Fossa

Шаг 1. Во-первых, убедитесь, что все ваши системные пакеты обновлены, выполнив следующие apt команды в терминале.

Шаг 2. Установка Docker.

Следуйте команде, чтобы установить Docker CE в Ubuntu 20.04:

После установки Docker убедитесь, что он запускается после перезагрузки:

Вы можете проверить установку Docker:

Шаг 3. Установка Kubernetes на Ubuntu 20.04.

Теперь добавляем ключ подписи Kubernetes:

Далее мы добавим репозиторий пакетов Kubernetes:

После этого выполните следующую команду, чтобы установить Kubernetes:

Шаг 4. Отключите подкачку памяти.

Для запуска Kubernetes необходимо отключить подкачку:

Чтобы навсегда отключить подкачку, закомментируйте или удалите строку подкачки в файле / etc / fstab:

Шаг 5. Задайте имена хостов.

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

Шаг 6. Инициализируйте главный сервер Kubernetes.

Сначала введите следующую команду на главном узле:

Затем запустите эти три команды на главном узле:

Шаг 7. Разверните сеть контейнеров.

Следующим шагом является развертывание сети контейнеров. Выполните следующие две команды на главном узле:

Вы можете использовать команду kubectl, чтобы убедиться, что все готово:

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

Подтвердите, что главный узел теперь является частью нашего кластера Kubernetes, с помощью этой команды:

Шаг 9. Развертывание сервиса в кластере Kubernetes.

На этих шагах мы готовы развернуть сервис в кластере Kubernetes. Выполните следующие две команды на своем главном узле:

Теперь вы должны увидеть новый контейнер докеров Nginx, развернутый на вашем рабочем узле:

Наконец, вы можете увидеть текущий список всех доступных служб, работающих в вашем кластере, с помощью следующей команды, запущенной с главного узла Kubernetes:

Поздравляю! Вы успешно установили Kubernetes . Благодарим за использование этого руководства по установке Kubernetes в системах Ubuntu 20.04 LTS Focal Fossa. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт Kubernetes .

В статье мы расскажем, что такое Kubernetes, покажем, как установить Kubernetes с нуля, и опишем начало работы с Kubernetes.

Введение в Kubernetes: что это такое и как устроено

Kubernetes (Кубернетис) — это платформа для автоматизации управления контейнерами приложений с помощью кластеров на Ubuntu, CentOS и других ОС семейства Linux. Кластеры подключены к высокоуровневому API . Благодаря этому можно системно группировать контейнеры, балансировать нагрузку и активировать задачи одновременно из сотен приложений.

Настройка Kubernetes-кластера будет интересна крупным компаниям с разработками формата Big Data или команде программистов, которым нужна крупная производственная среда. Для таких масштабных проектов хорошо подойдёт инфраструктурная платформа на основе Kubernetes. Kubernetes требователен к приложениям, с которыми работает — они должны функционировать строго по принципу микросервисов. Также кластер Кубернетес расходует много ресурсов, поэтому запускать его в небольших проектах невыгодно.

Облачные серверы нового поколения

Виртуализация KVM, почасовая оплата, резервные копии, готовые шаблоны, 10 доступных ОС на выбор!

Основные компоненты архитектуры Kubernetes

Архитектура Kubernetes состоит из следующих компонентов:

Nodes (нода или узел) — виртуальная или физическая машина, на которой работают контейнеры приложений. Каждая нода содержит компоненты, которые позволяют запускать сервисы контейнеризации (например, Docker).

Pods или поды — базовые модули для управления приложениями. Могут состоять из одного или нескольких контейнеров.

Volume или том — ресурс для единовременного использования нескольких контейнеров.

Kube-proxy — совокупность балансировщика нагрузки и прокси-сервера, которые позволяют маршрутизировать входящий трафик для конкретных контейнеров пода.

Kubelet — транслирует статус подов на узле и следит за корректностью работы конкретного контейнера, образа и других компонентов.

Kubernetes можно установить с помощью готового инструмента или самостоятельно, добавляя каждый компонент архитектуры вручную. Мы расскажем, как установить полный функционал Kubernetes на Ubuntu вторым способом.

Сначала необходимо установить Docker и Kubernetes для каждого узла (нода) сервера, а затем развернуть Kubernetes. Для этого выполните этапы инструкции ниже.

Apr 23, 2018 07:35 · 739 words · 4 minute read kubernetes flannel k8s docker

Только ленивый еще не писал об установке, настройке и использовании Kubernetes - будь-то в облаке (AWS, GCE, Azure) или на bare-metal серверах.

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

Считаем, что есть один или несколько серверов под управлением Ubuntu 16.04 или Centos 7 (вариант с несколькими серверами предпочтительнее, но для ознакомления можно обойтись и одним).

Важно: swap должен быть выключен (если это новый сервер - просто не создавайте раздел для свопа). Выключить можно так (не забудьте удалить соответствующую строку в файле /etc/fstab ):

Прежде всего устанавливаем docker на каждом из серверов. Как написано в документации, рекомендуемая версия v1.12, но версии v1.11, v1.13 и 17.03 также работают хорошо. Версии 17.06+ также могут работать, но они пока не протестированы надлежащим образом командой Kubernetes (в моем варианте установлен docker версии 17.12.0-ce).

Установка рекомендуемой версии довольно проста, для Ubuntu:

Если есть желание установить более свежую версию docker, можно воспользоваться следующими командами:

Или воспользоваться официальным руководством по установке docker.

Установка docker в ОС Centos также не должна вызывать вопросов:

Примечание. Убедитесь, что и docker и kubelet используют один и тот же cgroup драйвер. Проще всего сделать так:

И перезапустить docker командой:

Далее на всех серверах устанавливаем kubeadm , kubelet и kubectl - необходимые компоненты для создания и управления кластером Kubernetes . Для Ubuntu это можно сделать с помощью команд:

Примечание. Отключение SELinux командой setenforce 0 необходимо для корректного доступа контейнеров к файловой системе хоста, что, в свою очередь, требуется для работы сети у подов (pod networks).

Для организации сети в нашем кластере Kubernetes будем использовать Flannel - программно определяемую сеть (Software Defined Network, SDN), при инициализации кластера нужно добавить параметр --pod-network-cidr=10.244.0.0/16 .

Примечание. Ключ --pod-network-cidr позволяет выбрать нужный сетевой плагин (Pod Network Plugin), в зависимости от выбранного провайдера значение этого параметра будет отличаться.

Выбираем один из серверов (в дальнейшем он будет мастером и все операции будем выполнять на нем) и инициализируем кластер:

При выполнении данной команды в консоли могут появиться ошибки (их нужно обязательно устранить) и предупреждения (warning), которые можно игнорировать (если это не production-окружение). В случае успеха на экран будет выведена команда для присоединения остальных нод кластера к мастеру - скопируйте и сохраните ее. Результат команды будет примерно следующим:

Как и советуют, мы будем работать с кластером под отдельным, непривилегированным пользователем. Для этого выполняем команды (не под рутом):

По умолчанию на мастер-ноде контейнеры не запускаются, мастер только следит за состоянием кластера и размещает ресурсы. Разрешить запуск контейнеров на мастере (особенно если в кластере только одна нода) можно так:

Перед запуском приложений в кластере необходимо настроить сеть, причем обязательно с поддержкой Container Network Interface (CNI) - в нашем примере это Flannel (подробнее о вариантах настройки CNI и доступных плагинах в отдельной статье). Важно: в кластере может быть только одна сеть для подов.

Убедиться, что кластер стартовал и корректно работает можно с помощью команды:

На этом с установкой Kubernetes все, далее будем знакомиться с терминологией.

Читайте также: