Как настроить класс хранилища в существующем кластере k0s

Как настроить класс хранилища в существующем кластере k0s

Когда я запускаю, kos kubectl get storageclassя замечаю, что он не подготовлен, и мне нужно добавить его вручную. Я немного не уверен в точной процедуре. [Документация][https://docs.k0sproject.io/main/storage/] говорит, что k0s поставляется с установленным OpenEBS. Я не уверен, каквключить это расширениев файле конфигурации.

В моем существующем файле конфигурации есть только это (я предполагаю, что это должен быть файл конфигурации по умолчанию. Это правильно?):

spec:
  api:
    externalAddress

Я запустил k0s stopи изменил файл конфигурации следующим образом:

spec:
  api:
    externalAddress
  extensions:
    storage:
      type: openebs_local_storage

После этого изменения конфигурации я все еще получаю ту же ошибку, что не найден класс хранения для кластера. Нужно ли мне также переустанавливать/устанавливать k0s, я немного не уверен, потому что существующий k0s.yaml, похоже, имеет очень мало параметров конфигурации по сравнению с примером, приведенным в ссылке.

ИЗМЕНИТЬ: ИспользованиеДокументацияЯ приступил к созданию нового k0s.yaml, который использует существующие настройки по умолчанию. Оказывается, он перезаписывает существующий k0s.yaml (приведенный выше): Я также внес изменения в новый файл yaml, чтобы получить это:

apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
metadata:
  creationTimestamp: null
  name: k0s
spec:
  api:
    address: 10.XXX.XXX.XXX
    k0sApiPort: 9443
    port: 6443
    sans:
    - 10.XX.XX.XXX
    - 172.XX.XX.XXX
    - 10.XX.XX.XXX
    - 10.XX.XX.XXX
    - fe80::XXX:XXX:XXX:XXX
    - fe80::XXX:XXX:XXX:XXX
    - fe80::XXX:XXX:XXX:XXX
    - fe80::XXX:XXX:XXX:XXX
    - fe80::XXX:XXX:XXX:XXX
    - fe80::XXX:XXX:XXX:XXX
    tunneledNetworkingMode: false
  controllerManager: {}
  extensions:
    helm:
      charts: null
      repositories: null
    storage:
      create_default_storage_class: true
      type: openebs_local_storage
  images:
    calico:
      cni:
        image: docker.io/calico/cni
        version: v3.21.2
      kubecontrollers:
        image: docker.io/calico/kube-controllers

После этого изменения я приступаю к переустановке кластера (с новой конфигурацией):

k0s install controller -c /etc/k0s/k0s.yaml

но теперь я получаю сообщение об ошибке:

Error: failed to install k0s service: failed to install service: Init already exists: /etc/systemd/system/k0scontroller.service

решение1

Мне удалось воспроизвести вашу проблему — чтобы переустановить кластер с новой конфигурацией хранилища OpenEBS, вам необходимо очистить предыдущую настройку:

  1. Остановите службу k0s.
sudo k0s stop
  1. Сбросьте предыдущую установку, которая была выполнена без вашего настроенного файла конфигурации:
sudo k0s reset
  1. Переустановите k0s с новым файлом конфигурации и --enable-workerфлагом ->, чтобы снова установить k0s с одним узлом и функциями контроллера и рабочих функций:
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
  1. Запустите службу k0s:
sudo k0s start
  1. Через несколько секунд проверьте, что в кластере включены два класса хранения, которые вы можете использовать:
sudo k0s kubectl get storageclass

Классы хранения будут иметь volumeBindingMode: WaitForFirstConsumerзадержку привязки тома, пока модуль приложения не будет запланирован на узле.

Связанный контент