2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !
Внимание! Данные страницы описывают CBSD версии 13.0.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 определяет количество нод |
vip | IP адрес для VRRP, служащий API Endpoint-ом кластера |
ip4_gw | IP адрес, используемый ВМ в качестве шлюза по-умолчанию, по-умолчанию: 10.0.0.1 |
dns_ip | IP адрес для внутреннего 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 файлов, с последующим запуском соответствующих сервисов.
- Убедитесь, что pv_spec_nfs_path указывает на существующий каталог и он имеет разрешение на NFS. Например, для использования пути по-умолчанию ( /nfs ), необходимо выполнить:
zfs create zroot/nfs zfs set mountpoint=/nfs zroot/nfs zfs set sharenfs=on zroot/nfs zfs mount zroot/nfs
- Убедитесь, что ваши сервисы сконфигурированы на bind/listen только необходимого IP адреса, например через флаги в /etc/rc.conf:
nfs_server_flags="-u -t -h 10.0.0.1" mountd_flags="-r -S -h 10.0.0.1" rpcbind_flags="-h 10.0.0.1"
Создание двух независимых кластеров K8S различной конфигурации с PV-NFS на одном хосте: