ALT Container OS подветка K8S: различия между версиями
Kaf (обсуждение | вклад) Нет описания правки |
Kaf (обсуждение | вклад) Нет описания правки |
||
Строка 21: | Строка 21: | ||
Так как размер основного диска достаточно небольшой (около 4GB) для хранения образов и запуска pod'ов необходимо создать дополнительный диск. Для этого создайте файл необходимого размера (например 30GB): | Так как размер основного диска достаточно небольшой (около 4GB) для хранения образов и запуска pod'ов необходимо создать дополнительный диск. Для этого создайте файл необходимого размера (например 30GB): | ||
dd if=/dev/zero of=hdb bs=1G count=30 | dd if=/dev/zero of=hdb.qcow2 bs=1G count=30 | ||
Для запуска необходимо подготовить YML butane-файл, обеспечивающий следующий функционал при запуске образа: | Для запуска необходимо подготовить YML butane-файл, обеспечивающий следующий функционал при запуске образа: | ||
Строка 29: | Строка 29: | ||
* создание systemd-сервиса для инициализации master-узла kubernetes-кластера. | * создание systemd-сервиса для инициализации master-узла kubernetes-кластера. | ||
Файл конфигурации выглядит следующим образом: | Файл конфигурации '''k8s_master.yml ''' выглядит следующим образом: | ||
variant: fcos | variant: fcos | ||
version: 1.3.0 | version: 1.3.0 | ||
Строка 94: | Строка 94: | ||
Файлы ''/etc/containers/storage.conf'', ''/etc/docker/daemon.json'' являются стандартными файлами конфигурации для | Файлы ''/etc/containers/storage.conf'', ''/etc/docker/daemon.json'' являются стандартными файлами конфигурации для | ||
''crio''('podman') и ''docker'' с измененными storage-драйверами с ''overlay'' на ''btrfs''. | ''crio''('podman') и ''docker'' с измененными storage-драйверами с ''overlay'' на ''btrfs''. | ||
Если Вы планировать стандартный storage-драйвер ''overlay'' то в в YML-файле, | |||
* секции ''storage.trees'', 'storage.files' можно опустить | |||
* в секции ''storage.filesystem.format'' указать ''ext4''; | |||
Каталог ''root'' в этом случае не нужен. | |||
== Запуск образа == | |||
Запуск образа производится скриптом: | |||
#!/bin/sh | |||
butane -d . -p k8s_master.yml > k8s_master.ign | |||
sudo qemu-system-x86_64 \ | |||
-m 2048 \ | |||
-machine accel=kvm \ | |||
-cpu host \ | |||
-smp 2 \ | |||
-hda k8s.20211116.0.0.qcow2 \ | |||
-hdb hdb.qcow2 \ | |||
-fw_cfg name=opt/com.coreos/config,file=k8s_master.ign \ | |||
-net user,hostfwd=tcp::10222-:22 -net nic | |||
Обратите внимание, что за работы узла ''kubernetes'' требуется не менее 2-х ядер процессора и не менее 2GB оперативной памяти. |
Версия от 15:42, 16 ноября 2021
Подветка K8S обеспечивает разворачивание серверов для организации kubernetes-кластера.
В настоящее время (16.11.2021) дистрибутив ALTLinux обеспечивает разворачивание kubernetes-кластера под двумя типами "движков" (см. Kubernetes):
- docker;
- crio (podman)
В текущей реализации был выбран вариант движка crio обеспечивающий повышенный уровень защита запускаемых контейнеров. Но, так как подветка K8S наследуется от основной ветки потока, включающей движок docker, в раках данной подветки можно запускать docker-контейнеры, сервисы под docker-compose и организовавать параллельно (или вместо) с кластером kubernetes и docker swarm кластер.
QCOW2 образ подветки altcos/x86_64/Sisyphus/k8s
В настоящее время реализован образ QCOW2 подветки altcos/x86_64/sisyphus/k8s. Скачать его можно по следующим ссылкам: [Полный] [Сжатый]
Так как размер основного диска достаточно небольшой (около 4GB) для хранения образов и запуска pod'ов необходимо создать дополнительный диск. Для этого создайте файл необходимого размера (например 30GB):
dd if=/dev/zero of=hdb.qcow2 bs=1G count=30
Для запуска необходимо подготовить YML butane-файл, обеспечивающий следующий функционал при запуске образа:
- форматирование дополнительного диска под файловую систему BTRFS для размещения образов и контейнеров;
- монтирование его в каталог /var/lib;
- копирование файлов конфигураций и "перекрытых" при монтировании подкаталогов каталога /var/lib/.
- создание systemd-сервиса для инициализации master-узла kubernetes-кластера.
Файл конфигурации k8s_master.yml выглядит следующим образом:
variant: fcos version: 1.3.0 passwd: users: - name: altcos groups: - wheel - docker password_hash: $y$j9T$ZEYmKSGPiNFOZNTjvobEm1$IXLGt5TxdNC/OhJyzFK5NVM.mt6VvdtP6mhhzSmvE94 ssh_authorized_keys: - ssh-rsa ... user@domain storage: disks: - device: /dev/sdb wipe_table: true partitions: - number: 1 label: varlib filesystems: - path: /var/lib device: /dev/sdb1 format: btrfs wipe_filesystem: true label: varlib with_mount_unit: true trees: - local: root # скопировать файловое дерево локального каталога root path: / files: - path: /etc/docker/daemon.json # переписав файл конфигурации dockerd с поддержкой overlay-драйвера BTRFS overwrite: true - path: /etc/containers/storage.conf # переписав файл конфигурации crio/podman с поддержкой overlay-драйвера BTRFS overwrite: true systemd: units: - name: initk8s.service enabled: true contents: | [Unit] Description=Start up kubernetes in master mode After=crio.service kube-proxy.service kubelet.service systemd-networkd.service systemd-resolved.service [Service] Type=oneshot RemainAfterExit=yes Environment="KUBECONFIG=/etc/kubernetes/admin.conf" ExecStartPre=loadDockerArchiveImages.sh ExecStart=kubeadm init --cri-socket=/var/run/crio/crio.sock --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification ExecStartPost=kubectl taint nodes localhost node-role.kubernetes.io/master- [Install] WantedBy=multi-user.target
Каталог root имеет следующую структуру:
root/ ├── etc ├── containers │ └── storage.conf └── docker └── daemon.json
Файлы /etc/containers/storage.conf, /etc/docker/daemon.json являются стандартными файлами конфигурации для crio('podman') и docker с измененными storage-драйверами с overlay на btrfs.
Если Вы планировать стандартный storage-драйвер overlay то в в YML-файле,
- секции storage.trees, 'storage.files' можно опустить
- в секции storage.filesystem.format указать ext4;
Каталог root в этом случае не нужен.
Запуск образа
Запуск образа производится скриптом:
#!/bin/sh
butane -d . -p k8s_master.yml > k8s_master.ign
sudo qemu-system-x86_64 \ -m 2048 \ -machine accel=kvm \ -cpu host \ -smp 2 \ -hda k8s.20211116.0.0.qcow2 \ -hdb hdb.qcow2 \ -fw_cfg name=opt/com.coreos/config,file=k8s_master.ign \ -net user,hostfwd=tcp::10222-:22 -net nic
Обратите внимание, что за работы узла kubernetes требуется не менее 2-х ядер процессора и не менее 2GB оперативной памяти.