Купить Корзина
  • Домены и сайты
  • Облако и IT-инфраструктура
  • Вход

Получить консультацию

Ответим на вопросы, расскажем о конфигурациях, поможем с переносом, подберем оборудование, подготовим коммерческое предложение

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Персональный менеджер ответит на ваши вопросы и проведет через все этапы заключения договора: — подберет оборудование — сформирует коммерческое предложение — поможет с миграцией сервера к нам

Нажимая кнопку «Отправить» я даю согласие на обработку персональных данных и подтверждаю, что ознакомился с Политикой конфиденциальности и правилами пользования сайтом

Или просто оставьте номер телефона, и мы перезвоним вам

  • Телефон в Москве

    +7 495 580-11-11
  • Бесплатный звонок по России

    8 800 555-34-78
  • Или обратитесь в наши офисы

    Региональные номера
    1. База знаний
    2. Рег.облако
    3. Облачные серверы
    4. Установка программного обеспечения
    5. Руководство по Kubernetes

    Руководство по Kubernetes

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

    История создания Kubernetes

    История Kubernetes берет свое начало в 2014 году, когда Google представил проект на базе своего внутреннего инструмента Borg, разработанного для управления большими кластерами серверов. Borg был решением Google для эффективного управления сотнями тысяч контейнеров, которые работали в дата-центрах компании по всему миру. Kubernetes был создан с целью сделать эту технологию доступной для широкой аудитории. Основной вклад в проект был внесен инженерами Google: Джо Бедой, Бренданом Бернсом и Крэйгом МакЛаки, которые заложили основы Kubernetes как открытой платформы. В 2016 году Google передала Kubernetes под управление Cloud Native Computing Foundation (CNCF), который является подразделением Linux Foundation. С тех пор Kubernetes стал одним из самых популярных решений для управления контейнерами, поддерживаемым сообществом разработчиков и рядом крупных ИТ-компаний.

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

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

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

    Для чего нужен Kubernetes

    Kubernetes — платформа управления контейнерами, которая используется для автоматизации развертывания, масштабирования и управления контейнерными приложениями. Контейнеры — это небольшие, изолированные среды, которые содержат в себе все необходимое для выполнения приложения: код, библиотеки, зависимости и конфигурации. Они позволяют создавать стабильные и переносимые приложения, которые можно запускать на различных платформах без модификации кода.

    Однако управление контейнерами в большом масштабе может стать сложным процессом. Kubernetes решает эту проблему, предоставляя инструменты для:

    • оркестрации контейнеров. Kubernetes автоматически управляет всеми запущенными контейнерами, помогая распределять их нагрузку, запускать новые экземпляры и отслеживать их состояние. Он позволяет автоматизировать задачи, которые вручную было бы сложно контролировать, например, балансировку нагрузки и замену неработающих экземпляров;
    • масштабирования. Kubernetes поддерживает автоматическое горизонтальное масштабирование, позволяя увеличивать или уменьшать количество запущенных контейнеров в зависимости от нагрузки на приложение;
    • управления отказоустойчивостью. Kubernetes автоматически перезапускает контейнеры в случае сбоя и перераспределяет их на другие узлы, чтобы поддерживать высокую доступность приложений;
    • управления конфигурацией и конфиденциальными данными. Kubernetes упрощает управление конфигурацией и конфиденциальной информацией (например, паролями и ключами шифрования), обеспечивая их защиту и удобную работу с ними. Эти данные можно развертывать и обновлять без перезапуска контейнеров и не раскрывая конфиденциальную информацию в конфигурации стека.

    Kubernetes облегчает процесс развертывания приложений в контейнерах, делая их управление гибким, надежным и масштабируемым.

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

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

    • Nodes (нода или узел) — виртуальная или физическая машина, на которой работают контейнеры приложений. Каждая нода содержит компоненты, которые позволяют запускать сервисы контейнеризации (например, CRI-O или Containerd). Существует 2 типа нод: Control Plane (Master node) и Worker nodes. Control Plane — это главный узел, отвечающий за управление и администрирование Kubernetes-кластерами. Worker nodes — это отдельные рабочие узлы.
    • Pods или поды — базовые модули для управления приложениями. Могут состоять из одного или нескольких контейнеров.
    • Volume или том — ресурс для единовременного использования нескольких контейнеров.
    • Kube-proxy — совокупность балансировщика нагрузки и прокси-сервера, которые позволяют маршрутизировать входящий трафик для конкретных контейнеров пода.
    • Kubelet — транслирует статус подов на узле и следит за корректностью работы конкретного контейнера, образа и других компонентов.

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

    Для настройки Kubernetes:

    • измените имена хостов,
    • установите Kubernetes,
    • включите модули ядра,
    • настройте sysctl,
    • установите Containerd,
    • разверните Kubernetes.

    В инструкции мы расскажем, как установить и настроить Kubernetes для мастер-ноды и для одной рабочей ноды. Мастер-ноду назовем kube-master, а рабочую ноду — kube-worker.

    Подготовка к установке

    • 1

      На каждой ноде откройте файл hosts с помощью команды:

      sudo nano /etc/hosts
    • 2

      В файле удалите строку, в которой указан IP вашего сервера. Добавьте записи:

      IP_ADDRESS kube-master 
      
      IP_ADDRESS kube-worker

      Где IP_ADDRESS — IP-адрес каждого узла.

    • 3
      Сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.
    • 4

      Зайдите в мастер-ноду и измените имя хоста:

      sudo hostnamectl set-hostname kube-master
    • 5

      Войдите в рабочую ноду и введите команду:

      sudo hostnamectl set-hostname kube-worker
    • 6
      Перезайдите на каждый из серверов.

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

    • 1

      Войдите в мастер-ноду и запустите обновление с помощью команд:

      sudo apt update
      sudo apt upgrade -y
    • 2

      После завершения обновления введите команду:

      sudo apt-get install -y apt-transport-https ca-certificates curl gpg
    • 3

      Создайте директорию /etc/apt/keyrings с помощью команды:

      mkdir /etc/apt/keyrings
    • 4

      Затем добавьте GPG-ключ командой:

      curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    • 5

      Добавьте репозиторий Kubernetes:

      echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
    • 6

      Введите команду:

      sudo apt-get update
      При выполнении команды возникла ошибка 403

      При выполнении команды sudo apt-get update может возникнуть ошибка 403:

      E: Failed to fetch https://apt.kubernetes.io/dists/kubernetes-xenial/InRelease 403 Forbidden [IP: 2600:1901:0:26f3:: 443]
      E: The repository 'https://apt.kubernetes.io kubernetes-xenial InRelease' is not signed.

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

      Для временного отключения IPv6 (до перезагрузки) введите команды:

      sysctl -w net.ipv6.conf.all.disable_ipv6=1
      sysctl -w net.ipv6.conf.default.disable_ipv6=1
      sysctl -w net.ipv6.conf.lo.disable_ipv6=1

      Для включения IPv6 используйте команды:

      sysctl -w net.ipv6.conf.all.disable_ipv6=0
      sysctl -w net.ipv6.conf.default.disable_ipv6=0
      sysctl -w net.ipv6.conf.lo.disable_ipv6=0

      Для постоянного отключения IPv6 откройте файл /etc/sysctl.conf с помощью команды:

      nano /etc/sysctl.conf

      Затем добавьте туда следующие параметры:

      net.ipv6.conf.all.disable_ipv6 = 1
      net.ipv6.conf.default.disable_ipv6 = 1
      net.ipv6.conf.lo.disable_ipv6 = 1

      Сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.

    • 7

      Установите необходимое программное обеспечение:

      sudo apt-get install -y kubelet kubeadm kubectl vim git curl wget
    • 8

      Отключите автоматическое обновление kubelet, kubeadm и kubectl:

      sudo apt-mark hold kubelet kubeadm kubectl
    • 9

      Включите службу kubelet:

      sudo systemctl enable --now kubelet
    • 10

      Проверьте установленную версию kubeadm:

      kubeadm version

      kubernetes 1

      Kubernetes: установка

    • 11

      Отключите подкачку памяти:

      sudo swapoff -a

      Повторите проделанные шаги на kube-worker.

    Как включить модули ядра и изменить настройки в sysctl

    На всех узлах внесите следующие настройки:

    • 1

      Включите модули overlay и br_netfliter:

      sudo modprobe overlay
      sudo modprobe br_netfilter
    • 2

      Теперь измените настройки sysctl. Откройте файл kubernetes.conf:

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

      Вставьте в него следующие строки:

      net.bridge.bridge-nf-call-ip6tables = 1
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
    • 4
      Сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.
    • 5

      Перезагрузите sysctl командной:

      sudo sysctl --system

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

    Теперь на каждой машине нужно установить среду для запуска контейнеров — Containerd.

    • 1

      Настройте постоянную загрузку модулей Containerd с помощью команды (нужно скопировать и вставить сразу все 4 строки):

      cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
      overlay
      br_netfilter
      EOF
    • 2

      Перезагрузите sysctl командной:

      sudo sysctl --system
    • 3

      Установите необходимые пакеты:

      sudo apt install curl gnupg2 software-properties-common apt-transport-https ca-certificates -y
    • 4

      Добавьте GPG-ключ:

      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    • 5

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

      sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    • 6

      Установите Сontainerd:

      sudo apt update
      sudo apt install containerd.io -y
    • 7

      Зайдите под пользователем root:

      sudo su -
    • 8

      Создайте новый каталог для Сontainerd:

      mkdir -p /etc/containerd
    • 9

      Создайте файл конфигурации:

      containerd config default>/etc/containerd/config.toml
    • 10

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

      nano /etc/containerd/config.toml
    • 11

      В конфигурационном файле найдите параметр SystemdCgroup и замените его значение на true:

      SystemdCgroup = true

      Затем сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.

    • 12

      Выйдите из-под пользователя root:

      exit
    • 13

      Перезапустите Containerd:

      sudo systemctl restart containerd
    • 14

      Включите автоматический запуск службы Containerd:

      sudo systemctl enable containerd

    Как развернуть Kubernetes

    • 1

      Перейдите в kube-master и извлеките необходимые образы контейнеров:

      sudo kubeadm config images pull
    • 2

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

      sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    • 3

      В консоли появится информация о команде kubeadm join. Скопируйте и сохраните вывод этой команды.

      kubernetes 2

      Подключение к кластеру

      Введите эту команду на ноде kube-worker, чтобы присоединить ее к кластеру.

      Если не сохранили команду добавления в кластер, получите ее повторно:

      sudo kubeadm token create --print-join-command
    • 4

      Создайте директорию для кластера на мастер-ноде с помощью следующих команд:

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

      Теперь разверните сеть подов — она используется для коммуникации между несколькими нодами в кластере. Чтобы развернуть виртуальную сеть Flannel pod network, введите:

      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • 6

      После установки проверьте, что сеть развернута:

      kubectl get pods --all-namespaces

      kubernetes 3

      Kubernetes: настройка

    • 7

      Присвойте узлу kube-worker роль worker при помощи команды (команду нужно вводить в мастер-ноде):

      sudo kubectl label node kube-worker node-role.kubernetes.io/worker=worker
    • 8

      После завершения настроек выполните команду в kube-master:

      kubectl get nodes

      kubernetes 4

      Kubernetes в действии

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

    Готово, вы развернули Kubernetes. Теперь вы можете начать работу с платформой.

    Преимущества Kubernetes

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

    • 1.
      Автоматизация управления контейнерами. Kubernetes значительно упрощает процессы развертывания, мониторинга и управления контейнерами. Он автоматически размещает контейнеры на доступных узлах, следит за их состоянием и перезапускает их в случае сбоя. Это позволяет разработчикам сосредоточиться на создании приложений, а не на операционных задачах.
    • 2.
      Масштабируемость. Kubernetes позволяет масштабировать приложения как вертикально (увеличивая ресурсы для конкретного контейнера), так и горизонтально (добавляя больше экземпляров подов). Это особенно полезно для компаний, которые сталкиваются с постоянно меняющимися нагрузками на свои системы.
    • 3.
      Балансировка нагрузки. Kubernetes автоматически распределяет трафик между подами, что способствует высокой доступности приложений. Это особенно важно для приложений с большим количеством пользователей или в условиях высокой нагрузки, когда требуется равномерно распределять запросы и не допускать перегрузки отдельных компонентов.
    • 4.
      Безопасность. Kubernetes обеспечивает высокий уровень безопасности за счет изоляции приложений на уровне контейнеров. Это позволяет создавать независимые и безопасные рабочие среды для каждого компонента приложения. Также K8s изолирует приложения от слоя управления кластером, защищая их от вмешательства или сбоев в управлении инфраструктурой.
    • 5.
      Независимость от платформы. Kubernetes обеспечивает возможность работы с контейнерами на любых платформах: в облаке, на собственных серверах или в гибридной среде. Это делает его гибким инструментом, позволяющим разворачивать приложения в любой инфраструктуре.
    • 6.
      Экономия ресурсов. Kubernetes управляет легковесными контейнерами, что позволяет оптимально использовать вычислительные мощности и снизить затраты на инфраструктуру.
    • 7.
      Автоматизация развертывания и управления. Kubernetes предоставляет набор API и механик работы отдельных ресурсов, позволяющих построить инструменты для автоматизированного развертывания, обновления и отката приложений. Это упрощает интеграцию процессов CI/CD, обеспечивая быстрое и надежное обновление приложений без простоев. Такой подход снижает риски ошибок при ручном развертывании и позволяет командам быстрее выводить новые функции на рынок.
    • 8.
      Поддержка микросервисной архитектуры. Kubernetes идеально подходит для микросервисной архитектуры, где приложения состоят из небольших, независимо разрабатываемых и развертываемых сервисов. Это упрощает управление сложными системами, дает возможность легко масштабировать отдельные компоненты, обновлять код и выполнять откат изменений при необходимости. Микросервисный подход в сочетании с Kubernetes значительно ускоряет процессы разработки и вывода новых продуктов на рынок.

    Итак, в руководстве мы объяснили, зачем нужен Kubernetes, дали описание основ функционирования архитектуры и показали, как установить Kubernetes на Ubuntu.

    Помогла ли вам статья?

    Спасибо за оценку. Рады помочь 😊

     👍
    Специальные предложения
    • Бесплатный хостинг для сайта
    • Дешевый хостинг
    • Бесплатный VPS-сервер
    • Дешёвые VPS
    Рассылка Рег.ру

    Лайфхаки, скидки и новости об IT

    Даю согласие на получение рекламных и информационных материалов

    Домены и сайты
    • Домены
    • Хостинг
    • Создание сайтов
    • SSL-сертификаты
    • VPS и VDS серверы
    • Whois
    • Магазин доменов
    Облако
    и IT-инфраструктура
    • Облачные серверы
    • Частное облако
    • Облачное хранилище
    • Kubernetes в облаке (K8S)
    • Облачные базы данных
    • Выделенные серверы
    Полезное
    • Стоимость услуг
    • Cпособы оплаты
    • База знаний
    • Документы
    • ЭДО
    • Партнерам
    • Сообщить о нарушении
    • РБК: новости России и мира сегодня
    • Новости компаний РФ
    • РБК Инвестиции: курсы валют
    Компания
    • О компании
    • Контакты
    • Офисы
    • Новости
    • Акции и скидки
    • Блог
    • Отзывы клиентов
    8 800 555-34-78 Бесплатный звонок по России
    +7 495 580-11-11 Телефон в Москве
    • vk
    • telegram
    • ok
    • moikrug
    • youtube
    • twitter
    • Облачная платформа Рег.ру включена в реестр российского ПО Запись №23682 от 29.08.2024
    • © ООО «РЕГ.РУ»
    • Политика конфиденциальности
      Политика обработки персональных данных
      Правила применения рекомендательных технологий
      Правила пользования
      и другие правила и политики
    • Нашли опечатку?
      Выделите и нажмите Ctrl+Enter
    • Мы используем cookie и рекомендательные технологии для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера