Como configuro a classe de armazenamento em um cluster k0s existente

Como configuro a classe de armazenamento em um cluster k0s existente

Quando executo, kos kubectl get storageclasspercebo que ele não está provisionado e tenho que adicioná-lo manualmente. Estou um pouco inseguro sobre o procedimento exato. A [Documentação][https://docs.k0sproject.io/main/storage/] diz que o k0s vem com o OpenEBS instalado. O que não tenho certeza é comoativar esta extensãono arquivo de configuração.

Meu arquivo de configuração existente tem apenas isso (presumo que este deva ser o arquivo de configuração padrão. Está correto?):

spec:
  api:
    externalAddress

Executei k0s stope alterei o arquivo de configuração da seguinte forma:

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

Após essa alteração de configuração, ainda recebo o mesmo erro: nenhuma classe de armazenamento foi encontrada para o cluster. Preciso também reinstalar/instalar o k0s, estou um pouco inseguro porque o k0s.yaml existente parece ter muito poucos parâmetros de configuração em comparação com o exemplo fornecido no link.

EDITAR: UsandoDocumentaçãoProcedi à geração de um novo k0s.yaml que usa as configurações padrão existentes. Acontece que ele substitui o k0s.yaml existente (fornecido acima): Também efetuei alterações no novo arquivo yaml para produzir isto:

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

Após essa alteração procedo à reinstalação do cluster (com a nova configuração):

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

mas agora estou recebendo um erro:

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

Responder1

Consegui reproduzir seu problema. Para reinstalar o cluster com a nova configuração de armazenamento OpenEBS, você precisará limpar sua configuração anterior:

  1. Pare o serviço k0s.
sudo k0s stop
  1. Redefina a instalação anterior que foi feita sem seu arquivo de configuração personalizado:
sudo k0s reset
  1. Reinstale o k0s com seu novo arquivo de configuração e com --enable-workersinalizador -> para que o nó único k0s com funções de controlador e trabalhador seja instalado novamente:
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
  1. Inicie o serviço k0s:
sudo k0s start
  1. Após alguns segundos, verifique se duas classes de armazenamento estão habilitadas no cluster para você usar:
sudo k0s kubectl get storageclass

As classes de armazenamento terão volumeBindingMode: WaitForFirstConsumer- ou seja, haverá um atraso na vinculação do volume até que o pod do aplicativo seja agendado no nó.

informação relacionada