В этот раз, в качестве продолжения серии постов про 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 кластер. Следующим шагом нам необходимо указать параметры будущего кластера:
- Название кластера k8s;
- Кластер Nutanix, в котором виртуальные машины будут развернуты;
- Версию Kubernetes, которую планируется использовать. В моем случае это 1.16, но только по причине Community версии. В Enterprise редакции на текущий момент доступна версия 1.20.9;
- 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 можно кликнуть по кластеру и получить более детальную информацию:
Из интересного:
- Alerts – встроенный мониторинг, выдающий информацию по состоянию кластера;
- Storage Class – здесь можно создать новый SC, выбрав, например, другой кластер Nutanix, указать другой контейнер с другими параметрами;
- Volume – можно просмотреть существующие тома, которые подключены к контейнерам, либо создать новые:
- Add-on – В настоящий момент доступен только Logging, представляющий собой Kibana интерфейс, в котором отображаются логи системных контейнеров;
- 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 так же возможно, что не может не радовать.