Запускаем Karbon на Nutanix Community Edition

В этот раз, в качестве продолжения серии постов про Nutanix Community Edition, рассмотрим Nutanix Karbon.

Для незнакомых: Karbon – это решение Nutanix для управления жизненным циклом кластеров Kubernetes, упрощающее процедуры их развертывания и последующего обслуживания, масштабирования и обновления.

Под катом пройдемся по процедуре настройки Nutanix Karbon от развертывания кластера до запуска первого контейнера.

Сразу хотелось бы отметить, что все последующие действия будут идентичны как для Community Edition, так и для коммерческой версии Nutanix.

Единственный важный момент заключается в том, что многие вещи в коммерческой версии уже убежали далеко вперед и в этом плане Community отстает на порядок. Но общие принципы при этом сохраняются.

Karbon – это сервис, который предоставляет Prism Central, поэтому до начала работы необходимо убедиться, что PC в рабочем состоянии и под управлением находится хотя бы один кластер.

Ранее мы уже устанавливали Nutanix Community Edition на VMware vSphere, а также разворачивали Prism Central и подключали существующий кластер.

Включается Karbon просто – из интерфейса Prism Central. Для начала необходимо перейти в интерфейс управления Services – Karbon:

Далее нам будет предложено включить функционал Karbon в Prism Central:

Это потребует некоторого дополнительного объема оперативной памяти. Соглашаемся кликом по Enable Karbon. Начнется процедура активации, которая может занять некоторое время.

Если подключиться к Prism Central по SSH и запросить статус кластера, можно будет заметить две новые службы:

PCVM:~$ cluster status
                            KarbonUI   UP       [33433, 33468, 33469]
                          KarbonCore   UP       [34004, 34032, 34033]

После активации Karbon сообщит, что в настоящий момент не создано никаких кластеров Kubernetes, а также отсутствует образ ОС, из которого можно развернуть виртуальные машины для будущих кластеров:

Создавать образ самостоятельно не нужно. Клик по Download Centos начнет загрузку образа:

В моем примере Karbon загружает версию образа ntnx-0.5. Это достаточно старая версия и связанно это, очевидно, с использованием Community редакции. В Enterprise редакции актуальная на момент написания версия образа – ntnx-1.1.

Пока выполняется загрузка образа, необходимо сделать несколько шагов в Prism Element кластера, на котором планируется развертывание кластеров k8s:

  • Под нужды Kabron я создаю отдельный Storage Container, в котором в дальнейшем будут размещаться PV контейнеров:
  • Затем стоит создать отдельную учетную запись в кластере PE, от имени которой Karbon будет выполнять операции (хотя можно использовать и admin):
  • Самый важный и обязательный шаг. Необходимо создать отдельную сеть, в которой будет включен функционал IPAM (IP Address Management) – своеобразный аналог DHCP сервера:

Важная в данном случае отметка «Enable IP address management».

Здесь же необходимо добавить пул из которого будут выдаваться IP-адреса:

В самом пуле необходимо указать диапазон адресов, которые Nutanix будет использовать для выделения виртуальным машинам. Указываются начальный и конечный адреса:

На этом подготовительный этап окончен. Возвращаемся в консоль Prism Central – Karbon. Теперь, когда образ загружен, мы можем создать свой первый кластер Kubernetes. Create Kubernetes Cluster:

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

На скриншоте видно, что кластера будут отличаться минимальным количеством Master нод, а также количеством узлов etcd.

Если для разработки достаточно по одной Master, etcd и Worker ноде, то минимальная конфигурация продуктивного кластера – 2 Master ноды, с общим адресом и keepalived, 3 etcd ноды и 3 Worker ноды.

В случае с Production Cluster, Master узлов может быть и больше двух, однако необходимо предварительно подготовить балансировщик нагрузки. Максимальное количество Master и etcd узлов – по 5 штук.

Я выбираю Development кластер. Следующим шагом нам необходимо указать параметры будущего кластера:

  1. Название кластера k8s;
  2. Кластер Nutanix, в котором виртуальные машины будут развернуты;
  3. Версию Kubernetes, которую планируется использовать. В моем случае это 1.16, но только по причине Community версии. В Enterprise редакции на текущий момент доступна версия 1.20.9;
  4. Host OS – образ из которого будут развернуты VM. Обычно это самая последняя и актуальная версия.

Нажав Next переходим к конфигурации кластера. Здесь необходимо задать сеть, к которой будут подключены виртуальны машины. Отображаются только сети с включенным функционалом IPAM.

Так же на этом экране мы можем отредактировать параметры нод кластера –  изменить количество CPU, памяти, либо объем дисков, определить количество создаваемых нод. Делается это нажатием по Edit.

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

Следующим этапом задается Network Provider. В моем случае доступен только Flannel, но в более свежих версиях можно использовать Calico. Так же можно задать сети для подов и сервисов:

Заключающим этапом мы указываем данные для доступа к кластеру Nutanix, где будет развернут k8s, а также Storage Container, который будет использован для хранения PV контейнеров:

Клик по Create запустил процедуру создания кластера. Если процедура создания запущена не была, но при этом появляется сообщение об ошибке:

Необходимо задать iSCSI Data Services IP в кластере, если это не было сдельно ранее:

После начала процедуры создания кластера, можно наблюдать задачи по созданию виртуальных машин, редактированию параметров и т.п. На данном этапе необходимо только ожидать:

Так же в интерфейсе Karbon появится первый кластер и его статус:

Если перейти в Prism Element, можно увидеть виртуальные машины, которые были развернуты с помощью Karbon. Их легко определить по названию кластера Kubernetes, которое было задано ранее:

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

Из интересного:

  1. Alerts – встроенный мониторинг, выдающий информацию по состоянию кластера;
  2. Storage Class – здесь можно создать новый SC, выбрав, например, другой кластер Nutanix, указать другой контейнер с другими параметрами;
  3. Volume – можно просмотреть существующие тома, которые подключены к контейнерам, либо создать новые:
  4. Add-on – В настоящий момент доступен только Logging, представляющий собой Kibana интерфейс, в котором отображаются логи системных контейнеров;
  5. Nodes – отображает текущие узлы кластера. Отсюда можно добавить, либо удалить ранее созданные Worker узлы.

Теперь подключимся к кластеру.

Предварительно необходимо скачать kubeconfig файл, в котором автоматически генерируется токен для доступа к кластеру.

Сделать это можно в интерфейсе Karbon, там же, где отображаются кластера Kubernetes.

Необходимо отметить нужный кластер, затем Actions – Download Kubeconfig:

Подробней о том, как осуществляется доступ в кластер я писал ранее.

Переходим на рабочую машину, где имеется kubectl, загружаем ранее скачанный файл:

$ export KUBECONFIG=/home/tce/vmik-lab-dev-k8s-kubectl.cfg
$ kubectl get nodes
NAME                                          STATUS   ROLES    AGE   VERSION
karbon-vmik-lab-dev-k8s-6b6921-k8s-master-0   Ready    master   52m   v1.16.8
karbon-vmik-lab-dev-k8s-6b6921-k8s-worker-0   Ready    node     45m   v1.16.8
karbon-vmik-lab-dev-k8s-6b6921-k8s-worker-1   Ready    node     45m   v1.16.8

А вот и наш кластер. Один мастер узел и два рабочих. Версия Kubernetes 1.16.8.

Запустим тестовый контейнер:

$ kubectl run karbon-nginx --image=nginx:latest
deployment.apps/karbon-nginx created

$ kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
karbon-nginx-5dbdf64b48-vk48n   1/1     Running   0          40s

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

$ kubectl port-forward --address 0.0.0.0 karbon-nginx-5dbdf64b48-vk48n 8080:80
Forwarding from 0.0.0.0:8080 -> 80

И проверим работоспособность:

$ curl localhost:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
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>

На этом процедуру развертывания кластера k8s с помощью Nutanix Karbon можно считать завершенной.

В качестве заключения:

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

Loading

Leave a Reply

Your email address will not be published. Required fields are marked *