FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Внимание! Данные страницы описывают CBSD версии 12.2.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

CBSD модуль k8s: разворачиваем kubernetes кластер

Описание

Модуль состоит из двух компонент - образа виртуальной машины на базе Linux с kubernetes, подготовленый в рамках проекта k8s-bhyve и скриптов, которые производят настройку и запуск кластера.

Установка модуля K8S

Установка модуля производится штатным скриптом module с репозитория GitHub проекта:

cbsd module mode=install k8s

Модуль использует заранее сформированный образ, который сначала необходимо получить:

cbsd fetch_iso name=cloud-kubernetes-20 dstdir=default cloud=1 conv2zvol=1

Активируйте модуль через конфигурационный файл и выполните переинициализацию CBSD:

echo 'k8s.d' >> ~cbsd/etc/modules.conf
cbsd initenv

Если команда cbsd k8s существует, значит модуль готов к работе.

Инициализация K8S кластера

Для инициализации нового кластера используйте команду: cbsd k8s mode=init:

cbsd k8s mode=init k8s_name=k1

где k1 - имя профиля кластера.

Количество master и worker нод регулируется через количество IP адресов, которые вы назначаете через параметры init_masters_ips и init_nodes_ips

Кроме этого,1 IP адрес отводится в качестве API endpoint, через параметр vip=, virtual IP

Вы можете назначать фиксированные адреса для мастеров и воркеров, либо получить их автоматически из CBSD пула, выставив DHCP в качестве адресов, например:

cbsd k8s mode=init k8s_name=k1 init_masters_ips="DHCP DHCP DHCP" init_nodes_ips="DHCP DHCP DHCP" vip=DHCP cluster=k8s-bhyve.io

В результате этой команды вы получите кластер с именем k8s-bhyve.io, состоящего из 3 master и 3 worker, получив IP адреса автоматически.

Остальные аргументы и их описание:

опцияописание
k8s_nameимя профиля кластера, короткий уникальный ID, например: k1
vpcиспользовать CBSD VPC, в котором разворачивать кластер
clusterимя kubernetes кластера, по-умолчанию: k8s-bhyve.io
master_hostnameимя host
k8s_verкакую версию K8S использовать
etcd_verкакую версию ETCD использовать
flannel_verкакую версию flannel использовать
init_masters_ipsсписок IP адресов для master нод. Количество IP определяет количество мастеров
init_nodes_ipsсписов IP адресов для worker нод. Количество IP определяет количество нод
vipIP адрес для VRRP, служащий API Endpoint-ом кластера
ip4_gwIP адрес, используемый ВМ в качестве шлюза по-умолчанию, по-умолчанию: 10.0.0.1
dns_ipIP адрес для внутреннего DNS сервера из kuberenetes сети
coredns_enableинсталлировать CoreDNS сервис?
ingress_hostимя для Ingress сервиса
kubelet_masterРегулирует, может ли master нода выполнять также функции worker и запускать контейнера, по-умолчанию - да: 1
pv_enableИспользовать PV ? По-умолчнию: 0
pv_nfs_manage_hoster 
pv_metadata_name 
pv_spec_capacity_storage 
pv_spec_volumemode 
pv_spec_accessmodes 
pv_spec_storageclassname 
pv_spec_mountoptions 
pv_spec_nfs_path 
pv_spec_server 
master_interfaceуказать альтернативный uplink интерфейс ВМ master нод. по-умолчанию: auto
worker_interfaceуказать альтернативный uplink интерфейс ВМ worker нод. по-умолчанию: auto
master_vm_ramКонфигурация мастер нод, количество RAM. По-умолчанию: 2g
master_vm_cpusКонфигурация мастер нод, количество ядер. По-умолчанию: 1
master_vm_imgsizeКонфигурация мастер нод, объем жесткого диска. По-умолчанию: 20g
worker_vm_ramКонфигурация worker нод, количество RAM. По-умолчанию: 2g
worker_vm_cpusКонфигурация worker нод, количество ядер. По-умолчанию: 1
worker_vm_imgsizeКонфигурация worker нод, объем жесткого диска. По-умолчанию: 20g

Инициализация CBSDfile

Когда k8s кластер инициализирован, вы должны сформировать CBSDfile для старта и остановки кластера. Для этого, используйте команду: k8s mode=init_upfile:

В текущем рабочем каталоге будут сформированы два файла - CBSDfile и bootstrap.config. Это все, что вам необходимо для запуска кластера.

cbsd k8s mode=init_upfile k8s_name=k1

Запуск K8S кластера

Находясь в каталоге, в котором сформированы CBSDfile и bootstrap.config, выполните команду: cbsd up:

cbsd up

По окончаню инициализации, в систему будет импортирован kubeconfig в рабочий каталог.

Вы можете скопировать его на другой хост или управлять кластером через kube и helm команды с вашей хост системы.

Уничтожение K8S кластера

Находясь в каталоге, в котором сформированы CBSDfile и bootstrap.config, выполните команду: cbsd destroy:

cbsd destroy

PV

PV конфигурируется опцией pv_enable=1 и соответствующими pv_spec-* параметрами.

Внимание: текущая версия автоматически сконфигурирует NFS сервер, что влечет за собой полную генерацию /etc/exports и модификацю /etc/rc.conf файлов, с последующим запуском соответствующих сервисов.



Создание двух независимых кластеров K8S различной конфигурации с PV-NFS на одном хосте: