Серия вебинаров: Начало работы с Kubernetes

Вступление

В руководстве 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 более подробно.

Related