Команды оболочки в этом руководстве используют синтаксис POSIX shell, который
поддерживается стандартными оболочками большинства систем Linux и macOS, например
bash, zsh или sh. Пользователям Windows для выполнения команд в приведённом виде
нужна POSIX-совместимая оболочка, например
Windows Subsystem for Linux (WSL)
или Git Bash. Команды, использующие export, $()
и похожие конструкции, несовместимы с PowerShell и командной строкой Windows.
Kubernetes координирует высокодоступный кластер компьютеров, которые работают как единое целое. Абстракции Kubernetes позволяют развёртывать контейнеризованные приложения в кластере, не привязывая их к конкретным машинам. Чтобы использовать такую модель развёртывания, приложения нужно упаковать так, чтобы они были отделены от отдельных хостов: они должны быть контейнеризованы. Контейнеризованные приложения более гибкие и доступные, чем в прежних моделях развёртывания, где приложения устанавливались напрямую на конкретные машины как пакеты, глубоко интегрированные с хостом. Kubernetes автоматизирует распределение и планирование контейнеров приложений по кластеру более эффективным способом. Kubernetes — готовая к production-использованию платформа с открытым исходным кодом.
Кластер Kubernetes состоит из двух типов ресурсов:
Плоскость управления отвечает за управление кластером. Она координирует все действия в кластере: планирование приложений, поддержание желаемого состояния, масштабирование приложений и развёртывание новых обновлений.
Узел — это виртуальная машина или физический компьютер, который служит рабочей машиной в кластере Kubernetes. На каждом узле работает Kubelet — агент, который управляет узлом и взаимодействует с плоскостью управления Kubernetes. На узле также должны быть инструменты для запуска контейнеров, например containerd или CRI-O. В кластере Kubernetes, который обслуживает production-трафик, должно быть как минимум три узла: при меньшем их количестве выход из строя одного узла означает потерю кворума etcd и экземпляра плоскости управления, т. е. избыточность оказывается недостаточной. Этот риск можно снизить, добавив больше узлов плоскости управления.
Когда вы развёртываете приложения в Kubernetes, вы указываете плоскости управления запустить контейнеры приложения. Плоскость управления планирует запуск контейнеров на узлах кластера. Компоненты уровня узла, например kubelet, взаимодействуют с плоскостью управления через Kubernetes API, который предоставляется плоскостью управления. Конечные пользователи также могут использовать Kubernetes API напрямую для взаимодействия с кластером.
Кластер Kubernetes можно развернуть на физических или виртуальных машинах. Для начала разработки с Kubernetes можно использовать Minikube. Minikube — упрощённая реализация Kubernetes, которая создаёт виртуальную машину на локальной машине и развёртывает простой кластер из одного узла. Minikube доступен для Linux, macOS и Windows. CLI Minikube предоставляет базовые операции для начальной настройки и управления кластером: start, stop, status и delete.