Вступление
В руководстве previous в этой серии мы рассмотрели управление многоконтейнерными приложениями с помощью Docker Compose. Хотя интерфейс командной строки Docker (CLI) и Docker Compose могут развертывать и масштабировать контейнеры, работающие на одном компьютере, Kubernetes предназначен для обработки приложений с несколькими контейнерами, развернутых на нескольких компьютерах или хостах.
Kubernetes - это инструмент оркестровки контейнеров с открытым исходным кодом для управления контейнерными приложениями. Cluster Kubernetes имеет два ключевых компонента: Master Nodes и Worker Nodes. Набор мастер-узлов выступает в качестве плоскости управления, которая управляет рабочими узлами и развернутыми приложениями. Рабочие узлы являются рабочими лошадками кластера Kubernetes, которые отвечают за запуск контейнерных приложений.
Мастер-узлы предоставляют API, через который инструменты командной строки и расширенные клиенты передают job, который содержит определение приложения. Каждое приложение состоит из одного или нескольких containers, определений хранилища и внутренних и внешних портов, через которые они открыты. Плоскость управления, работающая на главных узлах, планирует контейнеры в одном из рабочих узлов. Когда приложение масштабируется, плоскость управления запускает дополнительные контейнеры на любом из доступных рабочих узлов.
Подробное введение в Kubernetes см. В учебнике An Введение в Kubernetes.
https://stackpoint.io [StackPointCloud] развертывает кластер Kubernetes в три этапа, используя веб-интерфейс. Он скрывает сложность установки и настройки Kubernetes через упрощенный пользовательский интерфейс. DigitalOcean - одна из поддерживаемых облачных платформ StackPoint. Разработчики, которые не знакомы с системным администрированием и настройкой, могут использовать StackPoint для быстрой установки Kubernetes в DigitalOcean. Подробнее о поддерживаемых функциях и ценах см. На их сайте.
В этом руководстве вы настроите и настройте Kubernetes в DigitalOcean через StackPoint и развернете контейнерное приложение в своем кластере.
Предпосылки
Чтобы следовать этому уроку, вам понадобится
-
Локальный компьютер с установленной командой
+ curl +
, который вы будете использовать для загрузки инструмента командной строки для управления кластером Kubernetes. Команда+ curl +
уже установлена в macOS и Ubuntu 16.04. -
Учетная запись DigitalOcean. В этом руководстве вы будете использовать StackPoint для подключения к своей учетной записи DigitalOcean и предоставления трех капель объемом 1 ГБ.
Шаг 1 - Установка Kubernetes
Чтобы начать установку Kubernetes в DigitalOcean, посетите страницу Stackpoint.io и нажмите кнопку «Вход».
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/0ZKPzXu.png [веб-страница StackPoint]
Вы попадете на страницу, где вы можете выбрать провайдера идентификации и войти с существующими учетными данными. Выберите DigitalOcean из списка и войдите под своим именем пользователя и паролем DigitalOcean.
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/vGNs8Fb.png [Выбор поставщика]
На следующей странице выберите DigitalOcean из списка доступных облачных платформ.
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/PLSX1LC.png [Выбрать поставщика DigitalOcean]
Теперь вы можете настроить кластер. Нажмите на кнопку «Редактировать», чтобы отредактировать настройки для провайдера DigitalOcean:
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/KwGSvAH.png [обзор поставщика DigitalOcean]
Это приведет вас к экрану настройки провайдера.
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/1UL1uRg.png [страница конфигурации поставщика DigitalOcean]
Выберите регион по вашему выбору из раскрывающегося списка * Region *. Вы можете оставить другие настройки по умолчанию. Нажмите * Submit *, когда вы закончите.
На следующем экране введите имя кластера по вашему выбору и нажмите * Отправить *.
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/tjZ7EM4.png [Введите имя кластера]
Начнется установка кластера, и вы попадете на страницу, где вы можете отслеживать прогресс кластера. Установка займет около 15 минут.
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/LlfpVjS.png [Состояние вашего кластера]
Как только кластер настроен, мы можем настроить инструмент командной строки для работы с ним.
Шаг 2 - Конфигурирование CLI Kubernetes
Чтобы общаться с кластером Kubernetes, работающим в DigitalOcean, нам нужен инструмент командной строки на нашей машине для разработки. Мы будем использовать + kubectl +
, CLI для Kubernetes.
Выполните следующие команды для установки + kubectl +
с серверов Google:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl
Вы увидите этот вывод:
Output % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 63.7M 100 63.7M 0 0 5441k 0 0:00:12 0:00:12 --:--:-- 4644k
Двоичный файл + kubectl +
был загружен в ваш текущий каталог. Давайте изменим права доступа для загруженного двоичного файла и переместим его в каталог + / usr / local / bin +
, чтобы мы могли запустить его из любого места:
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Теперь давайте нацелим приложение + kubectl +
на наш кластер Kubernetes. Для этого нам нужно скачать файл конфигурации из Stackpoint. Вернитесь на страницу состояния кластера в вашем браузере. Убедившись, что кластер готов и стабилен, нажмите на имя кластера, как показано на следующем рисунке:
изображение: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/h84fVAg.png [имя кластера]
Нажмите на ссылку * kubeconfig * в левом меню, чтобы загрузить файл конфигурации на локальный компьютер:
Изображение: HTTPS: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/xwSsvWo.png [IMG]
Вернувшись в свой терминал, установите переменную среды + KUBECONFIG +
в путь к загруженному файлу. Предполагая, что ваш файл загружен в папку + Downloads +
в вашем домашнем каталоге, вы выполните следующую команду:
export KUBECONFIG=
С настройкой + kubectl
давайте удостоверимся, что мы можем связаться с нашим кластером.
Шаг 3 - Проверка установки Kubernetes
Теперь, когда у нас есть полностью настроенный кластер вместе с клиентом, давайте выполним несколько команд для проверки среды.
Выполните следующую команду, чтобы получить информацию о кластере.
kubectl cluster-info
Вы увидите этот вывод:
OutputKubernetes master is running at https://139.59.17.180:6443
Heapster is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Выходные данные подтверждают, что кластер работает и что основные узлы Kubernetes запущены и работают.
Далее, давайте проверим работоспособность всех компонентов, работающих в мастер-узлах. Если кластер только что настроен, может пройти некоторое время, прежде чем все компоненты отобразят исправное состояние. Эти компоненты являются частью мастер-узлов Kubernetes, которые действуют как плоскость управления.
Выполните эту команду:
kubectl get cs
Вы увидите этот вывод:
OutputNAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
Наконец, давайте перечислим все узлы работающего кластера Kubernetes.
kubectl get nodes
Вы увидите вывод так:
OutputNAME STATUS ROLES AGE VERSION
spc52y2mk3-master-1 Ready master 29m v1.8.5
spc52y2mk3-worker-1 Ready <none> 22m v1.8.5
spc52y2mk3-worker-2 Ready <none> 22m v1.8.5
Это подтверждает, что кластер с одним главным узлом и двумя рабочими узлами готов для развертывания приложений. Итак, давайте развернем приложение в кластере.
Шаг 4 - Развертывание и доступ к приложению
Давайте запустим простой веб-сервер Nginx и зайдем на его веб-страницу по умолчанию с нашего локального компьютера. Выполните эту команду, чтобы извлечь Nginx image из Docker Hub и создать развертывание под названием + myweb +
:
kubectl run --image=nginx:latest myweb
Эта команда аналогична команде + docker run +
, за исключением того, что она упаковывает и развертывает контейнер в специфический для Kubernetes артефакт, называемый Pod. Вы узнаете больше о стручках в следующей части этой серии.
Когда вы выполните команду, вы увидите следующее:
Outputdeployment "myweb" created
Теперь проверьте, что Pod создан с контейнером + nginx +
:
kubectl get pods
Вы увидите этот вывод:
OutputNAME READY STATUS RESTARTS AGE
myweb-59d7488cb9-jvnwn 1/1 Running 0 3m
Чтобы получить доступ к веб-серверу, работающему внутри Pod, нам нужно открыть его в общедоступном Интернете. Мы достигаем этого с помощью следующей команды:
kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Outputservice "myweb-59d7488cb9-jvnwn" exposed
Pod теперь выставляется на каждом узле кластера на произвольном порту. Переключатели + - port
и` + - target-port` указывают порты, через которые становится доступным веб-сервер. Переключатель + - NodePort +
гарантирует, что мы можем использовать любой узел в кластере для доступа к приложению.
Чтобы получить NodePort для развертывания + myweb +
, выполните следующую команду.
kubectl get svc myweb-59d7488cb9-jvnwn
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myweb-59d7488cb9-jvnwn NodePort 10.3.0.119 <none> 80:/TCP 6m
В этом случае NodePort - это порт + 31930 +
. Каждый рабочий узел использует этот порт для ответа на HTTP-запросы. Давайте проверим это.
Используйте консоль DigitalOcean для получения IP-адреса одного из рабочих узлов.
Изображение: HTTPS: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/w9acP7y.png [Капелька]
Используйте команду + curl +
, чтобы сделать HTTP-запрос к одному из узлов порта + 31930 +
.
curl http://:31930/
Вы увидите ответ, содержащий домашнюю страницу Nginx по умолчанию:
Output<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
Вы успешно развернули контейнерное приложение в своем кластере Kubernetes.
Заключение
Kubernetes - это популярная платформа для управления контейнерами. StackPoint позволяет легко установить Kubernetes на DigitalOcean.
В следующей части этой серии мы рассмотрим строительные блоки Kubernetes более подробно.