Visão geral do Trident
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.
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:
-
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" .
-
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
-
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
-
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
-
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 | +----------------+----------------+
|
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
-
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
-
O
trident-installer
O diretório contém manifestos para definir todos os recursos necessários. Usando os manifestos apropriados, crie oTridentOrchestrator
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
-
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
-
Crie os recursos necessários para a implantação do operador Trident , como um
ServiceAccount
para o operador, umClusterRole
eClusterRoleBinding
para oServiceAccount
, um dedicadoPodSecurityPolicy
, 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
-
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
-
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
-
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:
-
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
-
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:
-
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: ""
-
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
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.