Skip to main content
NetApp container solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Visão geral do Trident

Colaboradores kevin-hoke

O Trident é um orquestrador de armazenamento de código aberto e totalmente suportado para contêineres e distribuições Kubernetes, incluindo o Red Hat OpenShift. O Trident funciona com todo o portfólio de armazenamento da NetApp , incluindo os sistemas de armazenamento NetApp ONTAP e Element, e também oferece suporte a conexões NFS e iSCSI. O Trident acelera o fluxo de trabalho do DevOps permitindo que os usuários finais provisionem e gerenciem o armazenamento de seus sistemas de armazenamento NetApp sem exigir a intervenção de um administrador de armazenamento.

Um administrador pode configurar vários backends de armazenamento com base nas necessidades do projeto e nos modelos de sistema de armazenamento que permitem recursos avançados de armazenamento, incluindo compactação, tipos de disco específicos ou níveis de QoS que garantem um determinado nível de desempenho. Depois de definidos, esses backends podem ser usados pelos desenvolvedores em seus projetos para criar declarações de volume persistentes (PVCs) e anexar armazenamento persistente aos seus contêineres sob demanda.

Figura mostrando diálogo de entrada/saída ou representando conteúdo escrito

O Trident tem um ciclo de desenvolvimento rápido e, assim como o Kubernetes, é lançado quatro vezes por ano.

Uma matriz de suporte para qual versão do Trident foi testada com qual distribuição do Kubernetes pode ser encontrada "aqui" .

Por favor, consulte o"Documentação do produto Trident" para detalhes de instalação e configuração.

Baixar Trident

Para instalar o Trident no cluster de usuários implantado e provisionar um volume persistente, conclua as seguintes etapas:

  1. Baixe o arquivo de instalação para a estação de trabalho do administrador e extraia o conteúdo. A versão atual do Trident pode ser baixada "aqui" .

  2. Extraia a instalação do Trident do pacote baixado.

    [netapp-user@rhel7 ~]$ tar -xzf trident-installer-22.01.0.tar.gz
    [netapp-user@rhel7 ~]$ cd trident-installer/
    [netapp-user@rhel7 trident-installer]$

Instalar o Trident Operator com Helm

  1. Primeiro defina a localização do cluster do usuário kubeconfig arquivo como uma variável de ambiente para que você não precise referenciá-lo, porque o Trident não tem opção para passar esse arquivo.

    [netapp-user@rhel7 trident-installer]$ export KUBECONFIG=~/ocp-install/auth/kubeconfig
  2. Execute o comando Helm para instalar o operador Trident do tarball no diretório helm enquanto cria o namespace trident no seu cluster de usuários.

    [netapp-user@rhel7 trident-installer]$ helm install trident helm/trident-operator-22.01.0.tgz --create-namespace --namespace trident
    NAME: trident
    LAST DEPLOYED: Fri May  7 12:54:25 2021
    NAMESPACE: trident
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI
    storage provisioner for Kubernetes.
    
    Your release is named 'trident' and is installed into the 'trident' namespace.
    Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
    
    To configure Trident to manage storage resources, you will need a copy of tridentctl, which is
    available in pre-packaged Trident releases.  You may find all Trident releases and source code
    online at https://github.com/NetApp/trident.
    
    To learn more about the release, try:
    
      $ helm status trident
      $ helm get all trident
  3. Você pode verificar se o Trident foi instalado com sucesso verificando os pods que estão sendo executados no namespace ou usando o binário tridentctl para verificar a versão instalada.

    [netapp-user@rhel7 trident-installer]$ oc get pods -n trident
    NAME                               READY   STATUS    RESTARTS   AGE
    trident-csi-5z45l                  1/2     Running   2          30s
    trident-csi-696b685cf8-htdb2       6/6     Running   0          30s
    trident-csi-b74p2                  2/2     Running   0          30s
    trident-csi-lrw4n                  2/2     Running   0          30s
    trident-operator-7c748d957-gr2gw   1/1     Running   0          36s
    
    [netapp-user@rhel7 trident-installer]$ ./tridentctl -n trident version
    +----------------+----------------+
    | SERVER VERSION | CLIENT VERSION |
    +----------------+----------------+
    | 22.01.0          | 22.01.0          |
    +----------------+----------------+
Observação Em alguns casos, os ambientes do cliente podem exigir a personalização da implantação do Trident . Nesses casos, também é possível instalar manualmente o operador Trident e atualizar os manifestos incluídos para personalizar a implantação.

Instalar manualmente o Operador Trident

  1. Primeiro, defina a localização do cluster do usuário kubeconfig arquivo como uma variável de ambiente para que você não precise referenciá-lo, porque o Trident não tem opção para passar esse arquivo.

    [netapp-user@rhel7 trident-installer]$ export KUBECONFIG=~/ocp-install/auth/kubeconfig
  2. O trident-installer O diretório contém manifestos para definir todos os recursos necessários. Usando os manifestos apropriados, crie o TridentOrchestrator definição de recurso personalizado.

    [netapp-user@rhel7 trident-installer]$ oc create -f deploy/crds/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml
    customresourcedefinition.apiextensions.k8s.io/tridentorchestrators.trident.netapp.io created
  3. Se não houver um, crie um namespace Trident no seu cluster usando o manifesto fornecido.

    [netapp-user@rhel7 trident-installer]$ oc apply -f deploy/namespace.yaml
    namespace/trident created
  4. Crie os recursos necessários para a implantação do operador Trident , como um ServiceAccount para o operador, um ClusterRole e ClusterRoleBinding para o ServiceAccount , um dedicado PodSecurityPolicy , ou o próprio operador.

    [netapp-user@rhel7 trident-installer]$ oc create -f deploy/bundle.yaml
    serviceaccount/trident-operator created
    clusterrole.rbac.authorization.k8s.io/trident-operator created
    clusterrolebinding.rbac.authorization.k8s.io/trident-operator created
    deployment.apps/trident-operator created
    podsecuritypolicy.policy/tridentoperatorpods created
  5. Você pode verificar o status do operador após sua implantação com os seguintes comandos:

    [netapp-user@rhel7 trident-installer]$ oc get deployment -n trident
    NAME               READY   UP-TO-DATE   AVAILABLE   AGE
    trident-operator   1/1     1            1           23s
    [netapp-user@rhel7 trident-installer]$ oc get pods -n trident
    NAME                                READY   STATUS    RESTARTS   AGE
    trident-operator-66f48895cc-lzczk   1/1     Running   0          41s
  6. Com o operador implantado, agora podemos usá-lo para instalar o Trident. Isso requer a criação de um TridentOrchestrator .

    [netapp-user@rhel7 trident-installer]$ oc create -f deploy/crds/tridentorchestrator_cr.yaml
    tridentorchestrator.trident.netapp.io/trident created
    [netapp-user@rhel7 trident-installer]$ oc describe torc trident
    Name:         trident
    Namespace:
    Labels:       <none>
    Annotations:  <none>
    API Version:  trident.netapp.io/v1
    Kind:         TridentOrchestrator
    Metadata:
      Creation Timestamp:  2021-05-07T17:00:28Z
      Generation:          1
      Managed Fields:
        API Version:  trident.netapp.io/v1
        Fields Type:  FieldsV1
        fieldsV1:
          f:spec:
            .:
            f:debug:
            f:namespace:
        Manager:      kubectl-create
        Operation:    Update
        Time:         2021-05-07T17:00:28Z
        API Version:  trident.netapp.io/v1
        Fields Type:  FieldsV1
        fieldsV1:
          f:status:
            .:
            f:currentInstallationParams:
              .:
              f:IPv6:
              f:autosupportHostname:
              f:autosupportimage:
              f:autosupportProxy:
              f:autosupportSerialNumber:
              f:debug:
              f:enableNodePrep:
              f:imagePullSecrets:
              f:imageRegistry:
              f:k8sTimeout:
              f:kubeletDir:
              f:logFormat:
              f:silenceAutosupport:
              f:tridentimage:
            f:message:
            f:namespace:
            f:status:
            f:version:
        Manager:         trident-operator
        Operation:       Update
        Time:            2021-05-07T17:00:28Z
      Resource Version:  931421
      Self Link:         /apis/trident.netapp.io/v1/tridentorchestrators/trident
      UID:               8a26a7a6-dde8-4d55-9b66-a7126754d81f
    Spec:
      Debug:      true
      Namespace:  trident
    Status:
      Current Installation Params:
        IPv6:                       false
        Autosupport Hostname:
        Autosupport image:          netapp/trident-autosupport:21.01
        Autosupport Proxy:
        Autosupport Serial Number:
        Debug:                      true
        Enable Node Prep:           false
        Image Pull Secrets:
        Image Registry:
        k8sTimeout:           30
        Kubelet Dir:          /var/lib/kubelet
        Log Format:           text
        Silence Autosupport:  false
        Trident image:        netapp/trident:22.01.0
      Message:                Trident installed
      Namespace:              trident
      Status:                 Installed
      Version:                v22.01.0
    Events:
      Type    Reason      Age   From                        Message
      ----    ------      ----  ----                        -------
      Normal  Installing  80s   trident-operator.netapp.io  Installing Trident
      Normal  Installed   68s   trident-operator.netapp.io  Trident installed
  7. Você pode verificar se o Trident foi instalado com sucesso verificando os pods que estão sendo executados no namespace ou usando o binário tridentctl para verificar a versão instalada.

    [netapp-user@rhel7 trident-installer]$ oc get pods -n trident
    NAME                                READY   STATUS    RESTARTS   AGE
    trident-csi-bb64c6cb4-lmd6h         6/6     Running   0          82s
    trident-csi-gn59q                   2/2     Running   0          82s
    trident-csi-m4szj                   2/2     Running   0          82s
    trident-csi-sb9k9                   2/2     Running   0          82s
    trident-operator-66f48895cc-lzczk   1/1     Running   0          2m39s
    
    [netapp-user@rhel7 trident-installer]$ ./tridentctl -n trident version
    +----------------+----------------+
    | SERVER VERSION | CLIENT VERSION |
    +----------------+----------------+
    | 22.01.0          | 22.01.0          |
    +----------------+----------------+

Preparar nós de trabalho para armazenamento

NFS

A maioria das distribuições do Kubernetes vem com os pacotes e utilitários para montar backends NFS instalados por padrão, incluindo o Red Hat OpenShift.

Entretanto, para o NFSv3, não há mecanismo para negociar a simultaneidade entre o cliente e o servidor. Portanto, o número máximo de entradas da tabela de slots sunrpc do lado do cliente deve ser sincronizado manualmente com o valor suportado no servidor para garantir o melhor desempenho para a conexão NFS sem que o servidor tenha que diminuir o tamanho da janela da conexão.

Para o ONTAP, o número máximo suportado de entradas na tabela de slots sunrpc é 128, ou seja, o ONTAP pode atender a 128 solicitações NFS simultâneas por vez. Entretanto, por padrão, o Red Hat CoreOS/Red Hat Enterprise Linux tem no máximo 65.536 entradas na tabela de slots sunrpc por conexão. Precisamos definir esse valor como 128 e isso pode ser feito usando o Machine Config Operator (MCO) no OpenShift.

Para modificar as entradas máximas da tabela de slots sunrpc nos nós de trabalho do OpenShift, conclua as seguintes etapas:

  1. Efetue login no console da web do OCP e navegue até Computação > Configurações da máquina. Clique em Criar configuração de máquina. Copie e cole o arquivo YAML e clique em Criar.

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      name: 98-worker-nfs-rpc-slot-tables
      labels:
        machineconfiguration.openshift.io/role: worker
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
            - contents:
                source: data:text/plain;charset=utf-8;base64,b3B0aW9ucyBzdW5ycGMgdGNwX21heF9zbG90X3RhYmxlX2VudHJpZXM9MTI4Cg==
              filesystem: root
              mode: 420
              path: /etc/modprobe.d/sunrpc.conf
  2. Após a criação do MCO, a configuração precisa ser aplicada em todos os nós de trabalho e reinicializada um por um. Todo o processo leva aproximadamente de 20 a 30 minutos. Verifique se a configuração da máquina foi aplicada usando oc get mcp e certifique-se de que o pool de configuração da máquina para trabalhadores esteja atualizado.

    [netapp-user@rhel7 openshift-deploy]$ oc get mcp
    NAME     CONFIG                                    UPDATED   UPDATING   DEGRADED
    master   rendered-master-a520ae930e1d135e0dee7168   True      False      False
    worker   rendered-worker-de321b36eeba62df41feb7bc   True      False      False

iSCSI

Para preparar nós de trabalho para permitir o mapeamento de volumes de armazenamento em bloco por meio do protocolo iSCSI, você deve instalar os pacotes necessários para dar suporte a essa funcionalidade.

No Red Hat OpenShift, isso é feito aplicando um MCO (Operador de Configuração de Máquina) ao seu cluster após sua implantação.

Para configurar os nós de trabalho para executar serviços iSCSI, conclua as seguintes etapas:

  1. Efetue login no console da web do OCP e navegue até Computação > Configurações da máquina. Clique em Criar configuração de máquina. Copie e cole o arquivo YAML e clique em Criar.

    Quando não estiver usando multipathing:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 99-worker-element-iscsi
    spec:
      config:
        ignition:
          version: 3.2.0
        systemd:
          units:
            - name: iscsid.service
              enabled: true
              state: started
      osImageURL: ""

    Ao usar multipathing:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      name: 99-worker-ontap-iscsi
      labels:
        machineconfiguration.openshift.io/role: worker
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
          - contents:
              source: data:text/plain;charset=utf-8;base64,ZGVmYXVsdHMgewogICAgICAgIHVzZXJfZnJpZW5kbHlfbmFtZXMgbm8KICAgICAgICBmaW5kX211bHRpcGF0aHMgbm8KfQoKYmxhY2tsaXN0X2V4Y2VwdGlvbnMgewogICAgICAgIHByb3BlcnR5ICIoU0NTSV9JREVOVF98SURfV1dOKSIKfQoKYmxhY2tsaXN0IHsKfQoK
              verification: {}
            filesystem: root
            mode: 400
            path: /etc/multipath.conf
        systemd:
          units:
            - name: iscsid.service
              enabled: true
              state: started
            - name: multipathd.service
              enabled: true
              state: started
      osImageURL: ""
  2. Após a criação da configuração, leva aproximadamente 20 a 30 minutos para aplicá-la aos nós de trabalho e recarregá-los. Verifique se a configuração da máquina foi aplicada usando oc get mcp e certifique-se de que o pool de configuração da máquina para trabalhadores esteja atualizado. Você também pode efetuar login nos nós de trabalho para confirmar se o serviço iscsid está em execução (e se o serviço multipathd está em execução se estiver usando multipathing).

    [netapp-user@rhel7 openshift-deploy]$ oc get mcp
    NAME     CONFIG                                    UPDATED   UPDATING   DEGRADED
    master   rendered-master-a520ae930e1d135e0dee7168   True      False      False
    worker   rendered-worker-de321b36eeba62df41feb7bc   True      False      False
    
    [netapp-user@rhel7 openshift-deploy]$ ssh core@10.61.181.22 sudo systemctl status iscsid
    ● iscsid.service - Open-iSCSI
       Loaded: loaded (/usr/lib/systemd/system/iscsid.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2021-05-26 13:36:22 UTC; 3 min ago
         Docs: man:iscsid(8)
               man:iscsiadm(8)
     Main PID: 1242 (iscsid)
       Status: "Ready to process requests"
        Tasks: 1
       Memory: 4.9M
          CPU: 9ms
       CGroup: /system.slice/iscsid.service
               └─1242 /usr/sbin/iscsid -f
    
    [netapp-user@rhel7 openshift-deploy]$ ssh core@10.61.181.22 sudo systemctl status multipathd
     ● multipathd.service - Device-Mapper Multipath Device Controller
       Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2021-05-26 13:36:22 UTC; 3 min ago
      Main PID: 918 (multipathd)
        Status: "up"
        Tasks: 7
        Memory: 13.7M
        CPU: 57ms
        CGroup: /system.slice/multipathd.service
                └─918 /sbin/multipathd -d -s
    Observação Também é possível confirmar se o MachineConfig foi aplicado com sucesso e os serviços foram iniciados conforme o esperado executando o comando oc debug comando com os sinalizadores apropriados.

Criar backends de sistema de armazenamento

Após concluir a instalação do Trident Operator, você deve configurar o backend para a plataforma de armazenamento NetApp específica que está usando. Siga os links abaixo para continuar a instalação e configuração do Trident.