Instalando o Portworx em seu Cluster
Provisione uma instância de serviço do Portworx por meio do catálogo do IBM Cloud. Após criar a instância de serviço, a edição corporativa do Portworx mais recente (px-enterprise) será instalada em seu cluster usando o Helm. Além
disso, o Stork também está instalado no seu cluster Red Hat OpenShift on IBM Cloud. O Stork é o
planejador de armazenamento do Portworx. Com o Stork, você pode alojar pods junto com seus dados, além de criar e restaurar instantâneos de volumes d Portworx.
Procurando instruções sobre como atualizar ou remover o Portworx? Consulte Atualizando Portworx e Removendo Portworx.
O método de instalação padrão para Portworx Enterprise e Portworx O backup ainda não é compatível com clusters exclusivamente privados na região de Montreal. Entre em contato com o suporte da Portworx se precisar instalar o Portworx Enterprise ou o Portworx Backup em um cluster privado em Montreal. Para obter mais informações, consulte o Suporte doPortworx
Antes de Iniciar:
-
Certifique-se de ter as permissões corretas para criar clusters do Red Hat OpenShift on IBM Cloud.
-
Se você quiser usar nós do trabalhador não SDS em um cluster clássico, inclua um dispositivo de armazenamento de bloco em seu nó do trabalhador.
-
Escolha se você deseja usar o banco de dados de valor de chave (KVDB) do Portworx interno ou criar uma instância de serviço do Databases for etcd para armazenar a configuração e os metadados do Portworx.
-
Decida se você deseja criptografar seus volumes do Portworx. Para criptografar os volumes, deve-se configurar uma instância do IBM Key Protect ou do Hyper Protect Crypto Services e armazenar as informações de serviço em um segredo do Kubernetes.
-
Certifique-se de que você tenha copiado os segredos de extração de imagem do
defaultpara o projetokube-systempara que seja possível extrair imagens do Container Registry. Assegure-se de incluir os segredos de pull de imagem na conta de serviço do Kubernetes do projetokube-system. -
Decida se deseja incluir o cluster em uma configuração de recuperação de desastres de Portworx. Para obter mais informações, consulte Configurando recuperação de desastres com Portworx.
-
Se você anexou um dispositivo separado para o diário Portworx, certifique-se de recuperar o caminho do dispositivo executando
lsblkenquanto estiver logado no nó do trabalhador. -
Se você anexou um dispositivo separado para o KVDB Portworx, certifique-se de recuperar o caminho do dispositivo executando
lsblkenquanto estiver logado no nó do trabalhador.
Para instalar o Portworx:
-
Abra o serviço Portworx no Catálogo da IBM Cloud e complete os campos conforme a seguir:
-
Selecione a região na qual seu cluster do Red Hat OpenShift on IBM Cloud está localizado.
-
Revise as informações de precificação do Portworx.
-
Insira um nome para sua instância de serviço do Portworx.
-
Selecione o grupo de recursos no qual está o seu cluster.
-
No campo Tag, insira o nome do cluster no qual você deseja instalar o Portworx. Depois de criar a instância de serviço Portworx, não é possível ver o cluster em que você instalou o Portworx. Para localizar o cluster com mais facilidade posteriormente, assegure-se de inserir o nome do cluster e quaisquer informações adicionais como tags.
-
Insira uma chave de API do IBM Cloud para recuperar a lista de clusters aos quais você tem acesso. Se você não tiver uma chave de API, consulte Gerenciando chaves de API do usuário. Depois de inserir a chave de API, o campo Nome do cluster Kubernetes ou OpenShift aparece.
-
Insira um Nome de cluster Portworx exclusivo.
-
No menu Unidades de nuvem:
- Selecione Usar unidades de nuvem (apenas clusters VPC) para fornecer dinamicamente o Block Storage for VPC para Portworx. Após selecionar Usar unidades de nuvem, selecione o Nome da classe de armazenamento e o Tamanho das unidades de armazenamento de bloco que você deseja provisionar.
- Selecione Utilizar unidades já anexadas (Clássica, VPC ou Satellite) para usar o armazenamento de bloco que já está conectado aos seus nós do trabalhador.
-
No menu suspenso Armazenamento de chave-valor dos metadados do Portworx, escolha o tipo de armazenamento de chave-valor que você deseja usar para armazenar metadados do Portworx. Selecione Portworx KVDB para criar automaticamente uma loja de chave-valor durante a instalação do Portworx ou selecione Databases for etcd se você desejar usar uma instância do Databases for etcd existente. Se você escolher Databases for etcd, os campos Terminais de API Etcd e Nome do segredo Etcd aparecerão.
-
Namespace: insira o namespace no qual você deseja implementar os recursos do Portworx.
-
Necessário apenas para Databases for etcd: insira as informações de sua instância de serviço do Databases for etcd.
- Recupere o terminal etcd e o nome do segredo do Kubernetes que você criou para seus Bancos de dados para a instância de serviço etcd.
- No campo Terminais de API do Etcd, insira o terminal de API de seus Bancos de dados para a instância de serviço etcd que você recuperou anteriormente. Certifique-se de inserir o terminal no formato
etcd:<etcd_endpoint1>;etcd:<etcd_endpoint2>. Se você tiver mais de um terminal, inclua todos os terminais e separe-os com um ponto e vírgula (;). - No campo Nome do segredo do Etcd, insira o nome do segredo do Kubernetes que você criou em seu cluster para armazenar os Bancos de dados para credenciais de serviço etcd.
-
Na lista suspensa Nome do cluster do Kubernetes ou OpenShift, selecione o cluster no qual você deseja instalar o Portworx. Se seu cluster não estiver listado, assegure-se de selecionar a região do IBM Cloud correta. Se a região estiver correta, verifique se você tem as permissões corretas para visualizar e trabalhar com o seu cluster. Certifique-se de selecionar um cluster que atenda aos requisitos mínimos de hardware para o Portworx.
-
Opcional: na lista suspensa Tipo de armazenamento de segredo do Portworx, escolha o tipo de armazenamento de segredo que deseja usar para armazenar a chave de criptografia de volume.
- Segredo do Kubernetes: escolha essa opção se desejar armazenar sua própria chave customizada para criptografar seus volumes em um Segredo do Kubernetes em seu cluster. O segredo não deve estar presente antes de instalar o Portworx. É possível criar o segredo após instalar o Portworx. Para obter mais informações, consulte a Documentação do Portworx.
- IBM Key Protect: escolha essa opção se desejar usar as chaves raiz no IBM Key Protect para criptografar seus volumes. Assegure-se de seguir as instruções para criar sua instância de serviço do IBM Key Protect e para armazenar as credenciais de como acessar sua instância de serviço em um segredo do Kubernetes no projeto
portworxantes de instalar o Portworx.
-
Opcional: para configurar um dispositivo de diário ou dispositivos KVDB, insira os detalhes do dispositivo no campo Opções avançadas.. Escolha dentre as opções a seguir para dispositivos de diário.
- Insira
j;autopara permitir que o Portworx crie automaticamente uma partição de 3 GB em um dos dispositivos Block Storage para usar para o diário. - Insira
j;</device/path>para usar um dispositivo específico para o diário. Por exemplo, insiraj;/dev/vdepara usar o disco localizado em/dev/vde. Para localizar o caminho do dispositivo que deseja utilizar para o diário, efetue login em um nó do trabalhador e executelsblk. - Insira
kvdb_dev;<device path>para especificar o dispositivo onde deseja armazenar dados internos do KVDB. Por exemplo,kvdb_dev;/dev/vdd. Para localizar o caminho do dispositivo que deseja utilizar, efetue login em um nó do trabalhador e executelsblk. Para usar um dispositivo específico para dados do KVDB, deve-se ter um dispositivo de armazenamento disponível de 3 GB ou em pelo menos três nós do trabalhador. Os dispositivos também devem estar no mesmo caminho em cada nó de trabalho. Por exemplo:/dev/vdd.
- Insira
-
-
Clique em Criar para iniciar a instalação do Portworx em seu cluster. Esse processo pode levar alguns minutos para ser concluído. A página de detalhes do serviço é aberta com instruções de como verificar sua instalação do Portworx, criar uma solicitação de volume persistente (PVC) e montar a PVC em um app.
-
Na Lista de recursos da IBM Cloud, localize o serviço Portworx que você criou.
-
Revise a coluna Status para ver se a instalação foi bem-sucedida ou falhou. O status pode levar alguns minutos para ser atualizado.
-
Se o Status mudar para
Provision failure, siga as instruções para iniciar a resolução de problemas do porquê sua instalação falhou. -
Se o Status mudar para
Provisioned, verifique se sua instalação do Portworx foi concluída com sucesso e se todos os seus discos locais foram reconhecidos e incluídos na camada de armazenamento do Portworx.- Liste os pods do Portworx no projeto
kube-system. A instalação é bem-sucedida quando você vê um ou mais podsportworx,storkestork-scheduler. O número de pods é igual ao número de nós do trabalhador que estão no cluster Portworx. Todos os pods devem estar em um estadoRunning.
oc get pods -n kube-system | grep 'portworx\|stork' ``` Saída de exemplo ```sh {: screen} portworx-594rw 1/1 Running 0 20h portworx-rn6wk 1/1 Running 0 20h portworx-rx9vf 1/1 Running 0 20h stork-6b99cf5579-5q6x4 1/1 Running 0 20h stork-6b99cf5579-slqlr 1/1 Running 0 20h stork-6b99cf5579-vz9j4 1/1 Running 0 20h stork-scheduler-7dd8799cc-bl75b 1/1 Running 0 20h stork-scheduler-7dd8799cc-j4rc9 1/1 Running 0 20h stork-scheduler-7dd8799cc-knjwt 1/1 Running 0 20h ``` 2. Efetue login em um de seus pods `portworx` e liste o status de seu cluster Portworx. ```sh {: pre} oc exec <portworx_pod> -it -n kube-system -- /opt/pwx/bin/pxctl status ``` Saída de exemplo ```sh {: screen} Status: PX is operational License: Trial (expires in 30 days) Node ID: 10.176.48.67 IP: 10.176.48.67 Local Storage Pool: 1 pool POOL IO_PRIORITY RAID_LEVEL USABLE USED STATUS ZONE REGION 0 LOW raid0 20 GiB 3.0 GiB Online dal10 us-south Local Storage Devices: 1 device Device Path Media Type Size Last-Scan 0:1 /dev/mapper/3600a09803830445455244c4a38754c66 STORAGE_MEDIUM_MAGNETIC 20 GiB 17 Sep 18 20:36 UTC total - 20 GiB Cluster Summary Cluster ID: mycluster Cluster UUID: a0d287ba-be82-4aac-b81c-7e22ac49faf5 Scheduler: kubernetes Nodes: 2 node(s) with storage (2 online), 1 node(s) without storage (1 online) IP ID StorageNode Used Capacity Status StorageStatus Version Kernel OS 10.184.58.11 10.184.58.11 Yes 3.0 GiB 20 GiB Online Up 1.5.0.0-bc1c580 4.4.0-133-generic Ubuntu 20.04.5 LTS 10.176.48.67 10.176.48.67 Yes 3.0 GiB 20 GiB Online Up (This node) 1.5.0.0-bc1c580 4.4.0-133-generic Ubuntu 20.04.5 LTS 10.176.48.83 10.176.48.83 No 0 B 0 B Online No Storage 1.5.0.0-bc1c580 4.4.0-133-generic Ubuntu 20.04.5 LTS Global Storage Pool Total Used : 6.0 GiB Total Capacity : 40 GiB ``` 3. Verifique se todos os nós do trabalhador que você queria incluir em sua camada de armazenamento do Portworx estão incluídos, revisando a coluna **StorageNode** na seção **Resumo do cluster** de sua saída da CLI. Os nós do trabalhador que estão na camada de armazenamento são exibidos com `Yes` na coluna **StorageNode**. Como o Portworx é executado como um DaemonSet no cluster, os nós do trabalhador existentes são inspecionados automaticamente para o Block Storage bruto e incluídos na camada de dados do Portworx quando o Portworx é implementado. Se você incluir nós do trabalhador no cluster e incluir o Block Storage bruto nesses trabalhadores, reinicie os pods do Portworx nos novos nós do trabalhador para que os volumes de armazenamento sejam detectados pelo DaemonSet. {: note} 4. Verifique se cada nó de armazenamento está listado com a quantidade correta de armazenamento de bloco bruto revisando a coluna **Capacidade** na seção **Resumo do Cluster** de sua saída da CLI. 5. Revise a classificação de E/S do Portworx que foi designada aos discos que fazem parte do cluster Portworx. Durante a configuração de seu cluster do Portworx, cada disco é inspecionado para determinar o perfil de desempenho do dispositivo. A classificação de perfil depende da rapidez da rede à qual o seu nó do trabalhador está conectado e o tipo de dispositivo de armazenamento que você tem. Discos de nós do trabalhador SDS são classificados como `high`. Se você conectar discos manualmente a um nó do trabalhador virtual, esses discos serão classificados como `low` devido à velocidade de rede mais lenta que vem com os nós do trabalhador virtual. ```sh {: pre} oc exec -it <portworx_pod> -n kube-system -- /opt/pwx/bin/pxctl cluster provision-status ``` Saída de exemplo ```sh {: screen} NODE NODE STATUS POOL POOL STATUS IO_PRIORITY SIZE AVAILABLE USED PROVISIONED RESERVEFACTOR ZONE REGION RACK 10.184.58.11 Up 0 Online LOW 20 GiB 17 GiB 3.0 GiB 0 B 0 dal12 us-south default 10.176.48.67 Up 0 Online LOW 20 GiB 17 GiB 3.0 GiB 0 B 0 dal10 us-south default 10.176.48.83 Up 0 Online HIGH 3.5 TiB 3.5 TiB 10 GiB 0 B 0 dal10 us-south default ``` - Liste os pods do Portworx no projeto
Criando um volume do Portworx
Comece a criar volumes d Portworx, utilizando o provisionamento dinâmico d Kubernetes.
-
Listar as classes de armazenamento disponíveis em seu cluster e verificar se é possível usar uma classe de armazenamento do Portworx existente que foi configurada durante a instalação do Portworx. As classes de armazenamento predefinidas são otimizadas para uso do banco de dados e para compartilhamento de dados entre os pods.
oc get sc | grep portworxPara visualizar os detalhes de uma classe de armazenamento, execute
oc describe storageclass <storageclass_name>. -
Se você não desejar usar uma classe de armazenamento existente, crie uma classe de armazenamento customizada. Para obter uma lista completa de opções suportadas que podem ser especificadas na classe de armazenamento, consulte Usando o fornecimento dinâmico.
- Crie um arquivo de configuração para sua classe de armazenamento.
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: <storageclass_name> provisioner: kubernetes.io/portworx-volume parameters: repl: "<replication_factor>" secure: "<true_or_false>" priority_io: "<io_priority>" shared: "<true_or_false>" ``` `metadata.name` : Insira um nome para a sua classe de armazenamento. `parameters.repl` : Insira o número de réplicas para seus dados que você deseja armazenar em diferentes nós do trabalhador. Os números permitidos são `1`,`2`ou `3`. Por exemplo, se você inserir `3`, os dados serão replicados por meio de três nós diferentes do trabalhador no cluster Portworx. Para armazenar seus dados altamente disponíveis, use um cluster multizona e replique seus dados em três nós do trabalhador em zonas diferentes. Deve-se ter nós do trabalhador suficientes para atender ao requisito de replicação. Por exemplo, se você tiver dois nós do trabalhador, mas especificar três réplicas, a criação do PVC com essa classe de armazenamento falhará. {: note} `parameters.secure` : Especifique se você deseja criptografar os dados em seu volume com IBM Key Protect. Escolha entre as opções a seguir. - `true`: Insira `true` para ativar a criptografia para os volumes Portworx. Para criptografar volumes, deve-se ter uma instância de serviço do IBM Key Protect e um segredo do Kubernetes que retém a chave raiz do cliente. Para obter mais informações sobre como configurar a criptografia para volumes Portworx, consulte [Criptografando seus volumes Portworx](/docs/openshift?topic=openshift-storage_portworx_encryption). - `false`: quando você insere `false`, seus volumes do Portworx não são criptografados. Se você não especificar essa opção, os volumes Portworx não serão criptografados por padrão. É possível optar por ativar a criptografia de volume em seu PVC, mesmo que a criptografia tenha sido desativada em sua classe de armazenamento. A configuração que você faz no PVC tem precedência sobre as configurações na classe de armazenamento. `parameters.priority_io` : Insira a prioridade de E/S do Portworx que você deseja solicitar para seus dados. As opções disponíveis são `high`, `medium` e `low`. Durante a configuração de seu cluster do Portworx, cada disco é inspecionado para determinar o perfil de desempenho do dispositivo. A classificação do perfil depende da largura da banda da rede do nó do trabalhador e do tipo de dispositivo de armazenamento. Discos de nós do trabalhador SDS são classificados como `high`. Se você conectar discos manualmente a um nó do trabalhador virtual, esses discos serão classificados como `low` devido à velocidade de rede mais lenta que vem com os nós do trabalhador virtual. : Ao criar uma PVC com uma classe de armazenamento, o número de réplicas especificado em `parameters/repl` substituia prioridade de E/S. Por exemplo, ao especificar três réplicas que você deseja armazenar em discos de alta velocidade, mas se você tiver apenas um nó do trabalhador com um disco de alta velocidade em seu cluster, sua criação PVC ainda será bem-sucedida. Seus dados são replicados em discos de alta velocidade e de baixa velocidade. `parameters.shared` : Defina se você deseja permitir que vários grupos acessem o mesmo volume. Escolha entre as opções a seguir: - True: se você configurar esta opção como `true`, poderá acessar o mesmo volume por meio de vários pods que estão distribuídos entre nós do trabalhador em diferentes zonas. - False: se você configurar esta opção como `false`, poderá acessar o volume por meio de vários pods apenas se os pods estiverem implementados no nó do trabalhador que conecta o disco físico que suporta o volume. Se o pod for implementado em um nó do trabalhador diferente, ele não poderá acessar o volume. 2. Crie a classe de armazenamento. ```sh {: pre} oc apply -f storageclass.yaml ``` 3. Verifique se a classe de armazenamento foi criada. ```sh {: pre} oc get sc ``` -
Crie uma solicitação de volume persistente (PVC).
- Crie um arquivo de configuração para seu PVC.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: accessModes: - <access_mode> resources: requests: storage: <size> storageClassName: portworx-shared-sc ``` `metadata.name` : Insira um nome para a PVC, como `mypvc`. `spec.accessModes` : Insira o [Modo de acesso do Kubernetes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes){: external} que você deseja usar. `resources.requests.storage` : Insira a quantia de armazenamento em gigabytes que você deseja designar do cluster Portworx. Por exemplo, para designar 2 gigabytes do seu cluster Portworx, insira `2Gi`. A quantia de armazenamento que você pode especificar é limitada pela quantia de armazenamento que está disponível em seu cluster Portworx. Se você especificou um fator de replicação na classe de armazenamento superior a um, a quantidade de armazenamento especificada na PVC será reservada em múltiplos nós do trabalhador. `spec.storageClassName` : Insira o nome da classe de armazenamento que você escolheu ou criou anteriormente e que você deseja usar para fornecer seu PV. O arquivo YAML de exemplo usa a classe de armazenamento `portworx-shared-sc`. 2. Crie a PVC. ```sh {: pre} oc apply -f pvc.yaml ``` 3. Verifique se o PVC foi criado e ligado a um volume persistente (PV). Esse processo pode demorar alguns minutos. ```sh {: pre} oc get pvc ```
Montando o volume em seu app
Para acessar o armazenamento do app, deve-se montar o PVC no app.
-
Crie um arquivo de configuração para uma implementação que monta o PVC.
Para obter dicas sobre como implementar um conjunto stateful com Portworx, consulte StatefulSets. A documentação Portworx também inclui exemplos de como implantar Cassandra, Kafka ElasticSearch com Kibana e WordPress com MySQL.
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment_name> labels: app: <deployment_label> spec: selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: schedulerName: stork containers: - image: <image_name> name: <container_name> securityContext: fsGroup: <group_ID> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: <pvc_name>metadata.labels.app- Um rótulo para a implementação.
spec.selector.matchLabels.appespec.template.metadata.labels.app- Um rótulo para o seu app.
template.metadata.labels.app- Um rótulo para a implementação.
spec.schedulerName- Use o Stork como o planejador para o cluster Portworx. Com o Stork, você pode alojar pods junto com seus dados, o que garante uma migração contínua dos pods em caso de erros de armazenamento e facilita a criação e a restauração de instantâneos de volumes d Portworx.
spec.containers.image- O nome da imagem que você deseja usar. Para listar as imagens disponíveis em sua conta do IBM Cloud Container Registry, execute
ibmcloud cr image-list. spec.containers.name- O nome do contêiner que você deseja implementar em seu cluster.
spec.containers.securityContext.fsGroup- Opcional: para acessar o armazenamento com um usuário não raiz, especifique o contexto de segurança para o pod e
defina o conjunto de usuários aos quais você deseja conceder acesso na seção
fsGroupno YAML de implementação. Para obter mais informações, consulte Acessando volumes Portworx com um usuário não raiz. spec.containers.volumeMounts.mountPath- O caminho absoluto do diretório no qual o volume está montado dentro do contêiner. Para compartilhar um volume entre diferentes apps, é possível especificar subcaminhos de volume para cada um dos apps.
spec.containers.volumeMounts.name- O nome do volume a ser montado no pod.
volumes.name- O nome do volume a ser montado no pod. Geralmente, esse nome é o mesmo que
volumeMounts/name. volumes.persistentVolumeClaim.claimName- O nome do PVC que liga o PV que você deseja usar.
-
Crie sua implementação.
oc apply -f deployment.yaml -
Verifique se o PV foi montado com êxito em seu app.
oc describe deployment <deployment_name>O ponto de montagem está no campo Montagens de volume e o volume está no campo Volumes.
Volume Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro) /volumemount from myvol (rw) ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: mypvc ReadOnly: false -
Verifique se é possível gravar dados em seu cluster do Portworx.
- Efetue login no pod que monta seu PV.
oc exec <pod_name> -it bash ``` 2. Navegue para o caminho de montagem do volume que você definiu em sua implementação de app. 3. Crie um arquivo de texto. ```sh {: pre} echo "This is a test" > test.txt ``` 4. Leia o arquivo que você criou. ```sh {: pre} cat test.txt ```