kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

Как многие уже знают, Kubernetes с версии v1.20 прекращает использование Docker в качестве среды выполнения. Выбор сделан в пользу тех сред, что задействуют Container Runtime Interface (CRI), например containerd и CRI-O.

Вывод

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

  1. Если вы запускаете пользовательский образ, создайте нового непривилегированного пользователя и укажите его в своем Dockerfile.
  2. Если вы используете сторонние изображения, вы можете установить контекст безопасности на уровне контейнера.
  3. Еще один способ — создать политику безопасности pod, которая не позволит ни одному контейнеру работать с привилегиями root.

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

В этой инструкции мы будем настраивать LXC в Ubuntu, поскольку это самая популярная операционная система, но все эти команды подойдут для всех других дистрибутивов. Отличие составляет только команда установки. Сначала нужно установить все необходимое программное обеспечение. Установка LXC на Ubuntu выполняется командой:

sudo apt install lxc lxc-templates uidmap

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

Читайте также:  Как добавить сайт в Яндекс Вебмастер

mkdir -p ~/.config/lxc

Настроим пользовательские пространства имен. Первая цифра означает первый UID пользователя linux в контейнере, вторая отвечающий ему UID пользователя в основной системе:

echo «_map = u 0 100000 65536» >> ~/.config/lxc/ echo «_map = g 0 100000 65536» >> ~/.config/lxc/

Дальше настраиваем сеть  в контейнере:

echo » = veth» >> ~/.config/lxc/ echo » = lxcbr0″ >> ~/.config/lxc/ echo » = up» >> ~/.config/lxc/

Затем в файле /etc/lxc/lxc-usernet нужно разрешить использовать сетевые интерфейсы текущему пользователю, чтобы получить возможность запускать контейнер без root прав:

echo «$USER veth lxcbr0 2» | sudo tee -a /etc/lxc/lxc-usernet

Для того чтобы пространства имен пользователей linux в контейнере работали нужно присвоить своему пользователю подпространство UID и GID 100000-165536:

sudo usermod —add-subuids 100000-165536 $USER sudo usermod —add-subgids 100000-165536 $USER

И даем права на использование данного пользователя в cgm:

sudo cgm create all user sudo cgm chown all user $(id -u) $(id -g) cgm movepid all user $$

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

lxc-create —template download —name ubu1

В этом списке вам предстоит выбрать нужную операционную систему. Просто введите необходимые параметры, имя, релиз и архитектура, выбрав их из списка доступных, например, для Ubuntu Yakkety Yak 64 бит:

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

lxc-create -t download -n ubu1 — —dist ubuntu —release xenial —arch amd64

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

В чём разница между Docker и Kubernetes?

Geekflare

Читайте также:  Steam Linux- культовая платформа для игр

Что такое Docker?

Особенности Docker

  • простая и быстрая настройка. Развертывание приложений происходит за меньшее время;
  • высокая производительность;
  • изоляция приложений — Docker использует для их запуска контейнеры;
  • управление безопасностью.

Что такое Kubernetes?

Особенности Kubernetes

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

Сравнение Docker и Kubernetes

Сходства Docker и Kubernetes:

  • микросервисная архитектура;
  • в основном написаны на Go, что позволяет отправлять их в виде облегченных двоичных файлов;
  • оба используют файлы в удобочитаемом формате YAML.

Что же выбрать: Docker или Kubernetes?

Сферы применения

Docker:

  • если приложение подходит для работы в контейнере;
  • приложение не нуждается в графическом интерфейсе;
  • приложение должно быть развернуто последовательно.

Kubernetes:

Что такое Docker Swarm?

Принципы работы:

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

Сравнение Kubernetes и Docker Swarm

Развертывание:KubernetesDocker Swarm:Установка:Kubernetes:Docker SwarmФункционирование:Docker Swarm:Ведение журнала:Kubernetes:Docker Swarm:RiemannМасштабирование:Kubernetes:Docker Swarm:Сеть:Kubernetes:Docker Swarm

Заключение

Хотя в Kubernetes решили отказаться от Docker в пользу сред запуска контейнеров с поддержкой CRI, паниковать не стоит. Слухи о смерти Docker оказались преувеличенными: перемены затронут только среды запуска контейнеров в кластере Kubernetes. А значит можно продолжать и дальше использовать Docker в разработке.

Подведём итог статьи наглядной блок-схемой:

Читайте также:  15 самых полезных применений команды find в Linux

Изображение автора

Спасибо за внимание! Надеюсь, статья вам понравилась.

Заключение
  • Airflow и Kubernetes  -  лучшее решение для конвейеров данных Geoblink
  • Устранение неполадок в Kubernetes - стратегический подход
  • Kubernetes: сэкономьте до 50% с вытесняемыми объектами

Читайте нас в Telegram, VK и

Перевод статьи Gaurav Agarwal: Kubernetes Is Deprecating Docker