Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
Aplica-se a SUSE Enterprise Storage 6

13 SUSE Enterprise Storage 6 no cluster Kubernetes do SUSE CaaS Platform 4

Atenção
Atenção: Technology Preview

A execução do cluster do Ceph em containers no SUSE CaaS Platform é uma versão Technology Preview. Não faça a implantação em um cluster Kubernetes de produção.

Este capítulo descreve como implantar o SUSE Enterprise Storage 6 em containers no cluster Kubernetes do SUSE CaaS Platform 4.

13.1 Considerações

Antes de começar a implantação, considere os seguintes pontos:

  • Para executar o Ceph no Kubernetes, o SUSE Enterprise Storage 6 usa um projeto de upstream denominado Rook (https://rook.io/).

  • Dependendo da configuração, o Rook pode consumir todos os discos não usados em todos os nós em um cluster Kubernetes.

  • A configuração requer containers com privilégios.

13.2 Pré-requisitos

Antes de começar a implantação, você precisa ter:

  • Um cluster do SUSE CaaS Platform 4 em execução.

  • Nós do worker do SUSE CaaS Platform 4 com um número de discos extras anexados como armazenamento para o cluster do Ceph.

13.3 Obtendo declarações sobre o Rook

O orquestrador Rook usa arquivos de configuração no formato YAML chamados de declarações. As declarações que você precisa estão incluídas no pacote RPM rook-k8s-yaml. Para instalá-lo, execute

root # zypper install rook-k8s-yaml

13.4 Instalação

O Rook-Ceph inclui dois componentes importantes: o “operador”, que é executado pelo Kubernetes e permite a criação de clusters do Ceph, e o próprio “cluster” do Ceph, que é criado e parcialmente gerenciado pelo operador.

13.4.1 Configuração

13.4.1.1 Configuração global

As declarações usadas nesta configuração instalam todos os componentes do Rook e do Ceph no namespace “rook-ceph”. Se você precisar modificá-lo, adapte todas as referências ao namespace nas declarações do Kubernetes de acordo.

Dependendo dos recursos do Rook que você pretende usar, altere a configuração “Política de Segurança do Pod” no common.yaml para limitar os requisitos de segurança do Rook. Siga os comentários no arquivo de declarações.

13.4.1.2 Configuração do operador

O operator.yaml de declarações configura o operador do Rook. Normalmente, não é necessário mudá-lo. Encontre mais informações seguindos os comentários no arquivo de declarações.

13.4.1.3 Configuração do cluster do Ceph

O cluster.yaml de declarações é responsável por configurar o cluster real do Ceph que será executado no Kubernetes. Encontre a descrição detalhada de todas as opções disponíveis na documentação do Rook de upstream em https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html.

Por padrão, o Rook está configurado para usar todos os nós que não foram afetados por node-role.kubernetes.io/master:NoSchedule e seguirá as configurações de posicionamento definidas (consulte https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html#placement-configuration-settings). O exemplo a seguir desabilita esse comportamento e usa apenas os nós explicitamente listados na seção de nós:

storage:
  useAllNodes: false
  nodes:
    - name: caasp4-worker-0
    - name: caasp4-worker-1
    - name: caasp4-worker-2
Nota
Nota

Por padrão, o Rook está configurado para usar todos os discos livres e vazios em cada nó para uso como armazenamento do Ceph.

13.4.1.4 Documentação

13.4.2 Criando o operador do Rook

Instale os componentes comuns do Rook-Ceph, as funções CSI e o operador do Rook-Ceph executando o seguinte comando no nó master do SUSE CaaS Platform:

root # kubectl apply -f common.yaml -f operator.yaml

O common.yaml criará o namespace “rook-ceph”, as Definições de Recursos Personalizados (CRDs, Custom Resource Definitions) do Ceph (consulte https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) para que o Kubernetes reconheça os Objetos do Ceph (por exemplo, “CephCluster”), as funções RBAC e as Políticas de Segurança do Pod (consulte https://kubernetes.io/docs/concepts/policy/pod-security-policy/), que são necessárias para permitir que o Rook gerencie os recursos específicos do cluster.

Dica
Dica: Uso do hostNetwork e do hostPorts

A permissão de uso do hostNetwork é necessária ao usar hostNetwork: true na Definição de Recursos Personalizados. A permissão de uso do hostPorts em PodSecurityPolicy também é necessária.

Execute kubectl get pods -n rook-ceph no nó master do SUSE CaaS Platform para verificar a instalação. Por exemplo:

root # kubectl get pods -n rook-ceph
NAME                                     READY   STATUS      RESTARTS   AGE
rook-ceph-agent-57c9j                    1/1     Running     0          22h
rook-ceph-agent-b9j4x                    1/1     Running     0          22h
rook-ceph-operator-cf6fb96-lhbj7         1/1     Running     0          22h
rook-discover-mb8gv                      1/1     Running     0          22h
rook-discover-tztz4                      1/1     Running     0          22h

13.4.3 Criando o cluster do Ceph

Após módificar o cluster.yaml de acordo com as suas necessidades, você poderá criar o cluster do Ceph. Execute o seguinte comando no nó master do SUSE CaaS Platform:

root # kubectl apply -f cluster.yaml

Observe o namespace “rook-ceph” para ver o cluster do Ceph que está sendo criado. Você verá o mesmo número de Ceph Monitors que foram configurados na declaração cluster.yaml (o padrão é 3), um Ceph Manager e a mesma quantidade de Ceph OSDs que você tem de discos livres.

Dica
Dica: Pods OSD Temporários

Ao inicializar o cluster do Ceph, você verá alguns pods com o nome rook-ceph-osd-prepare-NODE-NAME executados durante um tempo e, em seguida, terminados com o status “Concluído”. Como o próprio nome indica, esses pods provisionam os OSDs do Ceph. Eles não são apagados para que você possa inspecionar os registros deles após o término. Por exemplo:

root # kubectl get pods --namespace rook-ceph
NAME                                         READY  STATUS     RESTARTS  AGE
rook-ceph-agent-57c9j                        1/1    Running    0         22h
rook-ceph-agent-b9j4x                        1/1    Running    0         22h
rook-ceph-mgr-a-6d48564b84-k7dft             1/1    Running    0         22h
rook-ceph-mon-a-cc44b479-5qvdb               1/1    Running    0         22h
rook-ceph-mon-b-6c6565ff48-gm9wz             1/1    Running    0         22h
rook-ceph-operator-cf6fb96-lhbj7             1/1    Running    0         22h
rook-ceph-osd-0-57bf997cbd-4wspg             1/1    Running    0         22h
rook-ceph-osd-1-54cf468bf8-z8jhp             1/1    Running    0         22h
rook-ceph-osd-prepare-caasp4-worker-0-f2tmw  0/2    Completed  0         9m35s
rook-ceph-osd-prepare-caasp4-worker-1-qsfhz  0/2    Completed  0         9m33s
rook-ceph-tools-76c7d559b6-64rkw             1/1    Running    0         22h
rook-discover-mb8gv                          1/1    Running    0         22h
rook-discover-tztz4                          1/1    Running    0         22h

13.5 Usando o Rook como armazenamento para carga de trabalho do Kubernetes

O Rook permite usar três tipos diferentes de armazenamento:

Armazenamento de Objetos

O armazenamento de objetos expõe uma API S3 ao cluster de armazenamento para que os aplicativos insiram e acessem os dados. Consulte https://rook.io/docs/rook/v1.0/ceph-object.html para ver uma descrição detalhada.

Sistema Compartilhado de Arquivos

É possível montar um sistema compartilhado de arquivos com permissão de leitura/gravação de vários pods. Isso é útil para aplicativos agrupados em cluster usando um sistema compartilhado de arquivos. Consulte https://rook.io/docs/rook/v1.0/ceph-filesystem.html para ver uma descrição detalhada.

Armazenamento de Blocos

O armazenamento de blocos permite montar o armazenamento em um único pod. Consulte https://rook.io/docs/rook/v1.0/ceph-block.html para ver uma descrição detalhada.

13.6 Desinstalando o Rook

Para desinstalar o Rook, siga estas etapas:

  1. Apague todos os aplicativos do Kubernetes que estão consumindo armazenamento do Rook.

  2. Apague todos os artefatos de objeto, arquivo e/ou armazenamento de blocos criados seguindo a Seção 13.5, “Usando o Rook como armazenamento para carga de trabalho do Kubernetes”.

  3. Apague o cluster, o operador e os recursos relacionados do Ceph:

    root # kubectl delete -f cluster.yaml
    root # kubectl delete -f operator.yaml
    root # kubectl delete -f common.yaml
  4. Apague os dados dos hosts:

    root # rm -rf /var/lib/rook
  5. Se necessário, limpe os discos que foram usados pelo Rook. Consulte https://rook.io/docs/rook/v1.3/ceph-teardown.html para obter mais detalhes.