ALT Container OS подветка K8S: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
Строка 4: Строка 4:
В настоящее время (16.11.2021) дистрибутив ALTLinux обеспечивает разворачивание kubernetes-кластера под двумя типами  
В настоящее время (16.11.2021) дистрибутив ALTLinux обеспечивает разворачивание kubernetes-кластера под двумя типами  
"движков" (см. [[Kubernetes]]):
"движков" (см. [[Kubernetes]]):
- docker;
* ''docker'';
- crio (podman)
* ''crio'' (''podman'')
   
   
В текущей реализации был выбран вариант движка ''crio'' обеспечивающий повышенный уровень защита запускаемых контейнеров.  
В текущей реализации был выбран вариант движка ''crio'' обеспечивающий повышенный уровень защита запускаемых контейнеров.  
Строка 11: Строка 11:
в раках данной подветки можно запускать ''docker-контейнеры'', сервисы под ''docker-compose'' и организовавать  
в раках данной подветки можно запускать ''docker-контейнеры'', сервисы под ''docker-compose'' и организовавать  
параллельно (или вместо) с кластером ''kubernetes'' и ''docker swarm'' кластер.  
параллельно (или вместо) с кластером ''kubernetes'' и ''docker swarm'' кластер.  
== QCOW2 образ подветки altcos/x86_64/Sisyphus/k8s ==


В настоящее время реализован образ ''QCOW2'' подветки '''altcos/x86_64/sisyphus/k8s'''.
В настоящее время реализован образ ''QCOW2'' подветки '''altcos/x86_64/sisyphus/k8s'''.
Так как размер основного диска достаточно небольшой (около 4GB) для хранения образов и запуска pod'ов необходимо создать дополнительный диск. Для этого создайте файл необходимого размера (например 30GB):


<tt>
dd if=/dev/zero  of=hdb bs=1G count=30
</tt>




Строка 21: Строка 27:
* копирование файлов конфигураций и "перекрытых" при монтировании подкаталогов каталога ''/var/lib/''.       
* копирование файлов конфигураций и "перекрытых" при монтировании подкаталогов каталога ''/var/lib/''.       
* создание systemd-сервиса для инициализации master-узла kubernetes-кластера.
* создание systemd-сервиса для инициализации master-узла kubernetes-кластера.
Файл конфигурации выглядит следующим образом:
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

Версия от 10:51, 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 bs=1G count=30


Для запуска необходимо подготовить YML butane-файл, обеспечивающий следующий функционал при запуске образа:

  • форматирование дополнительного диска под файловую систему BTRFS для размещения образов и контейнеров;
  • монтирование его в каталог /var/lib;
  • копирование файлов конфигураций и "перекрытых" при монтировании подкаталогов каталога /var/lib/.
  • создание systemd-сервиса для инициализации master-узла kubernetes-кластера.

Файл конфигурации выглядит следующим образом:

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