Instalando o complemento de cluster IBM Cloud Object Storage
Você pode ativar o complemento “ IBM Cloud Object Storage ” pelo console do IBM Cloud ou pela CLI.
Pré-requisitos:
- O complemento IBM Cloud Object Storage requer pelo menos 0.3 vCPU e 360 MB de memória.
- O complemento está disponível para os nós de trabalho Red Hat CoreOS (RHCOS) e Ubuntu. Se o seu cluster tiver nós RHEL e RHCOS, o complemento será implantado somente nos nós RHCOS.
- Configure uma instância do IBM Cloud Object Storage.
- Opcional Se você planeja usar o controle de versão do bucket, suas credenciais de serviço devem ter permissões de Manager ou Writer para ativar ou desativar o controle de versão do bucket no bucket. Para obter mais informações, consulte Introdução ao controle de versões.
Compreensão da criação e remoção de baldes
- Você pode usar um bucket existente especificando o nome do bucket em seu PVC.
- Se você fornecer um nome de bucket e esse bucket não existir, será criado um bucket com esse nome.
- Se você não especificar um nome de bucket, será criado um bucket seguindo a convenção de nomenclatura
s3fs-<timestamp>-xxxourclone-<timestamp>-xxx, dependendo do tipo de montador. - Os compartimentos são excluídos com base na política de recuperação definida em sua classe de armazenamento.
- Se
reclaimPolicy: Deletefor definido, o bucket será excluído quando o PVC for excluído. - Se
reclaimPolicy: Retainfor definido, o bucket será mantido mesmo depois que o PVC for excluído.
- Se
Ativando o complemento “ IBM Cloud Object Storage ” no console
- No painel do cluster do Red Hat OpenShift on IBM Cloud, selecione o cluster no qual você deseja ativar o complemento.
- Na seção “Complementos”, localize o Cloud Object Storage complemento e clique em “Instalar ”.
- No painel “Instalar complemento: Cloud Object Storage ”, selecione uma versão no menu suspenso “Versão ”.
- Opcional: Configure os seguintes parâmetros.
maxVolumesPerNode- Defina o número máximo de volumes do IBM Cloud Object Storage que podem ser montados em um único nó. O valor padrão é
0``, o que significa que nenhum limite é aplicado. restrictNodeServerScheduling- Defina como
truepara restringir a execução dos pods do nodeserver apenas aos nós rotulados comocos.csi.ibm.io/csi-node=true. O valor padrão é ` `false, o que significa que os pods do nodeserver são agendados em todos os nós.
- Clique em Instalar. O complemento pode levar alguns minutos para ser implementado e ficar pronto para uso
- Verifique a instalação. Na seção “Complementos ”, verifique se o Cloud Object Storage complemento apresenta um estado de integridade “Normal ”.
Ativação do complemento IBM Cloud Object Storage na CLI
Antes de começar: acesse o seu cluster do Red Hat OpenShift.
- Atualize o plug-in “
container-service” para a versão mais recente.ibmcloud update && ibmcloud plugin update container-service - Liste os complementos e encontre a versão que você deseja instalar.
ibmcloud oc cluster addon versions - Revise as opções do complemento.
ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION] - Instale o complemento.
ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION] - Verifique a instalação.
ibmcloud oc cluster addon ls --cluster CLUSTEROK Name Version Health State Health Status ibm-object-csi-driver 1.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) - Liste as classes de armazenamento disponíveis. O driver oferece suporte a classes de armazenamento regionais e inter-regionais para os montadores
s3fserclone.oc get sc | grep objectibm-object-storage-smart-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h
Restrição do agendamento de pods do nodeserver
Por padrão, os pods do servidor de nós do driver COS CSI são agendados em todos os nós do cluster. Você pode usar o parâmetro restrictNodeServerScheduling para restringir o agendamento de pods do nodeserver apenas
aos nós rotulados com cos.csi.ibm.io/csi-node=true``.
Você pode configurar o restrictNodeServerScheduling ao ativar o complemento ou atualizá-lo posteriormente aplicando o patch no ConfigMap.
- Para definir
restrictNodeServerSchedulingao ativar o complemento, inclua o sinalizador--paramno comando de ativação.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "restrictNodeServerScheduling=true" - Para atualizar o “
restrictNodeServerScheduling” depois que o complemento já estiver ativado, siga estas etapas.
- Liste os nós do seu cluster e determine onde você deseja que os pods do driver COS sejam executados.
Exemplo de saídaoc get nodesNAME STATUS ROLES AGE VERSION 10.241.0.11 Ready <none> 5d2h v1.35.5+IKS 10.241.0.12 Ready <none> 5d2h v1.35.5+IKS 10.241.0.13 Ready <none> 5d2h v1.35.5+IKS 10.241.128.10 Ready <none> 5d2h v1.35.5+IKS 10.241.128.11 Ready <none> 5d2h v1.35.5+IKS 10.241.128.9 Ready <none> 5d2h v1.35.5+IKS 10.241.65.12 Ready <none> 5d2h v1.35.5+IKS 10.241.65.13 Ready <none> 5d2h v1.35.5+IKS 10.241.65.14 Ready <none> 5d2h v1.35.5+IKS - Verifique se os pods do nodeserver estão em execução em todos os nós.
Exemplo de saídaoc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-2pj2j 3/3 Running 0 145m 172.17.14.10 10.241.0.12 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none> ibm-object-csi-node-7l9hc 3/3 Running 0 145m 172.17.17.6 10.241.128.9 <none> <none> ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-dw6qs 3/3 Running 0 145m 172.17.46.77 10.241.128.10 <none> <none> ibm-object-csi-node-rpcvr 3/3 Running 0 145m 172.17.32.198 10.241.65.13 <none> <none> ibm-object-csi-node-swqtg 3/3 Running 0 145m 172.17.16.69 10.241.0.13 <none> <none> ibm-object-csi-node-sxbbs 3/3 Running 0 145m 172.17.26.7 10.241.65.14 <none> <none> ibm-object-csi-node-xm8bt 3/3 Running 0 145m 172.17.20.200 10.241.128.11 <none> <none> - Identifique os nós nos quais você deseja que os pods do nodeserver sejam agendados.
Exemplo de saídaoc label nodes NODE-NAME-1 NODE-NAME-2 cos.csi.ibm.io/csi-node=truenode/10.241.0.11 labeled node/10.241.0.12 labeled - Ative a restrição atualizando o arquivo
ConfigMap.Exemplo de saídaoc patch cm managed-addon-ibm-object-csi-driver -n kube-system \ --type merge -p '{"data":{"restrictNodeServerScheduling":"true"}}'configmap/managed-addon-ibm-object-csi-driver patched - Verifique se os pods do nodeserver são agendados apenas em nós rotulados.
Exemplo de saídaoc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none>
| Configuração | Comportamento |
|---|---|
restrictNodeServerScheduling: "false" (padrão) |
Os pods do Nodeserver são agendados em todos os nós. |
restrictNodeServerScheduling: "true" |
Os pods do Nodeserver são agendados apenas em nós rotulados como “ cos.csi.ibm.io/csi-node=true ”. |
Definição dos volumes máximos por nó
Por padrão, o driver COS CSI não limita o número de volumes que podem ser montados em um único nó. Você pode usar o parâmetro maxVolumesPerNode para definir um número máximo de volumes por nó.
Você pode configurar o maxVolumesPerNode ao ativar o complemento ou atualizá-lo posteriormente aplicando o patch no ConfigMap.
- Para definir
maxVolumesPerNodeao ativar o complemento, inclua o sinalizador--paramno comando de ativação.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "maxVolumesPerNode=VALUE" - Para atualizar o
maxVolumesPerNodedepois que o complemento já estiver habilitado, aplique a correção ao complemento gerenciado ConfigMap.Exemplo de saídaoc patch cm managed-addon-ibm-object-csi-driver -n kube-system --type merge -p '{"data":{"maxVolumesPerNode":"VALUE"}}'configmap/managed-addon-ibm-object-csi-driver patched
| Configuração | Comportamento |
|---|---|
maxVolumesPerNode: "0" (padrão) |
Não há limite para o número de volumes que podem ser montados por nó. |
maxVolumesPerNode: "VALUE" |
Limita o número de volumes que podem ser montados em um único nó ao valor especificado. |
Implantar um aplicativo que utiliza IBM Cloud Object Storage
Crie um segredo de “ Kubernetes ” que contenha suas credenciais do COS.
-
Salve a configuração a seguir em um arquivo chamado
secret.yaml. Forneça as credenciais do IAM ou as credenciais HMAC, mas não ambas.- Para as credenciais do IAM, utilize
apiKeyeserviceIdda sua instância do serviço IBM Cloud Object Storage. - Para as credenciais HMAC, use
accessKeyesecretKeyda sua instância do serviço IBM Cloud Object Storage.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. This same name is used for the PVC in the following steps. namespace: <namespace> # Specify the namespace where you want to create the secret. data: # --- IAM credentials (provide apiKey + serviceId) --- apiKey: <base64-encoded-COS-Service-Instance-apikey> serviceId: <base64-encoded-COS-resource_instance_id> # --- HMAC credentials --- accessKey: <base64-encoded-HMAC-access_key_id> secretKey: <base64-encoded-HMAC-secret_access_key> # --- Optional credential fields (base64-encoded) --- kpRootKeyCRN: <base64-encoded-Key-Protect-root-key-CRN> resourceConfigApiKey: <base64-encoded-apikey> # Required only when quotaLimit is "true". stringData: # --- Optional config fields (plain text) --- cosEndpoint: "https://<cos_s3_service_endpoint>" # Overrides the cosEndpoint from the storage class. locationConstraint: "<region>-standard" # Overrides the locationConstraint from the storage class. iamEndpoint: "<iam-endpoint-url>" # Overrides the default iam endpoint set in COS CSI Driver objectPath: "<subdirectory>" # Optional. Subdirectory within the bucket to mount, for example "data". bucketName: <bucket-name> # Optional. If you don't provide a bucket name, a bucket with the naming convention s3fs-<timestamp>-xxx or rclone-<timestamp>-xxx is created. bucketVersioning: "false" # Set to "true" to enable bucket versioning. Set to "false" to disable versioning. Must be a string value. quotaLimit: "false" # Set to "true" to enforce a hard quota on the bucket equal to the PVC storage size. Requires resourceConfigApiKey. mountOptions: | # uid=3000 # Optional: Run as non-root user. Must match runAsUser in SecurityContext of pod spec. # Review or update the following default s3fs mount options #multipart_size=52 #multireq_max=20 #max_dirty_data=5120 #parallel_count=20 #max_stat_cache_size=100000 #retries=5 #kernel_cache #max_background=1000 # Review or update the following default rclone mount options #acl=private #bucket_acl=private #upload_cutoff=100Mi #chunk_size=16Mi #max_upload_parts=1000 #upload_concurrency=8 #multi_thread_streams=8 #disable_checksum=trueapiKey- Necessário para a autenticação do IAM. Insira a chave da API do IAM do base64-encoded IBM Cloud para sua instância do serviço IBM Cloud Object Storage. Você pode encontrar a chave da API nas credenciais do seu serviço, em
apikey. Forneça uma das seguintes opções:apiKey+serviceIdouaccessKey+secretKey, mas não as duas. serviceId- Necessário para a autenticação do IAM. Insira o ID da instância do recurso
base64-encodedcorrespondente à sua instância do serviçoIBM Cloud Object Storage. Você pode encontrar esse valor nas credenciais do seu serviço, na páginaresource_instance_id. accessKey- Necessário para a autenticação HMAC. Insira o ID da chave de acesso HMAC do base64-encoded. Você pode encontrar esse valor nas credenciais do seu serviço, na página
cos_hmac_keys.access_key_id. Forneça uma das seguintes opções:accessKey+secretKeyouapiKey+serviceId, mas não as duas. secretKey- Necessário para a autenticação HMAC. Insira a chave secreta de acesso HMAC do base64-encoded. Você pode encontrar esse valor nas credenciais do seu serviço, na página
cos_hmac_keys.secret_access_key. kpRootKeyCRN- Opcional. Insira o CRN da chave raiz “ base64-encoded ” da sua instância do Key Protect. Para recuperar o CRN, acesse sua instância do KMS no console do IBM Cloud, abra “Chaves”, clique na chave raiz e copie o CRN dos detalhes da chave. Isso se aplica apenas a novos buckets; não é possível adicionar criptografia a um bucket já existente.
iamEndpoint- Opcional. Insira o endpoint do token IAM do IBM Cloud, URL, em texto simples. Por padrão, o driver utiliza
https://private.iam.cloud.ibm.compara clusters VPC ehttps://iam.cloud.ibm.compara clusters clássicos. Altere esse valor somente se precisar usar um endpoint do IAM diferente. cosEndpoint- Opcional. Digite o endpoint do IBM Cloud Object Storage URL como texto simples, por exemplo,
https://s3.us.cloud-object-storage.appdomain.cloud. Quando fornecido, esse valor substitui o parâmetro “cosEndpoint” definido na classe de armazenamento. Utilize este campo se o seu bucket estiver em uma região diferente ou utilizar um endpoint direto ou privado. Para obter uma lista dos endpoints disponíveis, consulte IBM Cloud Object Storage endpoints. locationConstraint- Opcional. Digite a sequência de caracteres da restrição de localização como texto simples, por exemplo,
us-standardouus-geo-smart. Quando fornecido, esse valor substitui o parâmetro “locationConstraint” definido na classe de armazenamento. A restrição de localização determina a classe do bucket e a região onde ele está armazenado. objectPath- Opcional. Insira o caminho para um subdiretório dentro do bucket a ser montado como texto simples; por exemplo,
data. Use essa opção para conceder a um aplicativo acesso apenas a uma pasta específica dentro de um bucket compartilhado, em vez de à raiz do bucket inteiro. resourceConfigApiKey- Obrigatório quando a opção “
quotaLimit” está definida como “"true"”. Insira o mesmo valor “ base64-encoded ” (apikey) das suas credenciais do serviço IBM Cloud Object Storage que você utilizou para o campo “apiKey” acima. bucketName- Opcional. Digite o nome de um bucket existente que deseja usar ou o nome de um novo bucket a ser criado. Se o nome do bucket que você fornecer não existir, o driver o criará. Se você deixar este campo em branco, um bucket será criado
automaticamente com a convenção de nomenclatura
s3fs-<timestamp>-xxxourclone-<timestamp>-xxx, dependendo do tipo de mounter. O nome do bucket deve ser globalmente único em IBM Cloud Object Storage. bucketVersioning- Opcional. Controla o gerenciamento de versões do bucket. Defina como
"true"para ativar o controle de versões ou como"false"para desativá-lo em um bucket no qual o controle de versões já esteja ativado. Deve ser um valor de string. Quando o controle de versões está ativado, o serviço “ IBM Cloud Object Storage ” mantém várias versões de cada objeto no bucket, oferecendo proteção contra exclusões acidentais e sobrescritas. Observe que as credenciais do serviço devem ter permissões de “Gerente” ou “Escritor” para ativar ou desativar o controle de versões do bucket. Para obter mais informações, consulte Introdução ao controle de versões. quotaLimit- Opcional. Defina como “
"true"” para aplicar uma cota rígida de armazenamento ao bucket. Quando ativada, a cota do bucket é definida como igual ao tamanho destoragesolicitado no PVC. Se a cota for atingida, as operações de gravação no bucket falharão até que os dados sejam excluídos. É necessário definir o parâmetroresourceConfigApiKey. O valor padrão é"false". Deve ser um valor de string. mountOptions- Você pode personalizar as opções de montagem para
s3fsourcloneeditando omountOptionsem seu segredo. Para executar como um usuário não-root, remova o comentário e definauid=de forma que corresponda ao camporunAsUsernosecurityContextda especificação do seu pod. Alinhe as opções que você especificar com a classe de armazenamento que seu PVC usa. Para verificar os valores padrão de uma classe de armazenamento, executeoc describe storageclass <storageclass_name>ouoc describe storageclass <storageclass_name>. Para obter mais informações, consulte as opções de montagem em s3fs e as opções de montagem emrclone.
Atualmente, o complemento está habilitado para suportar um conjunto fixo de opções de montagem com validação adequada para cada opção de montagem. Se quiser usar qualquer outra opção de montagem que não esteja na lista de validação, entre em contato com o suporte para ativar essas opções.
- Para as credenciais do IAM, utilize
-
Codifique todos os parâmetros de dados secretos para base64.
echo -n "<value>" | base64 -
Atualize o site
secret.yamlcom os valores codificados em base64. -
Crie o segredo.
oc apply -f secret.yaml
Criar um PVC
Você pode usar um único segredo em vários PVCs ou um segredo por PVC.
Você pode gerenciar esse comportamento usando as seguintes anotações no PVC yaml. Essas anotações ajudam o driver a mapear o PVC para o segredo correto.
cos.csi.driver/secret: "<custom-secret>"
Certifique-se de que seu segredo, o PVC e os pods estejam todos no mesmo namespace
Exemplo de PVC para um mapeamento de 1-to-1 segredo para PVC, dando ao seu PVC o mesmo nome do segredo que você criou anteriormente.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-secret-1 # Give your PVC the same name as the secret you created in the previous step.
namespace: <namespace> # The namespace where you want to create the PVC.
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: <storage_class_name> # The storage class you want to use.
Exemplo de PVC para usar 1 segredo para muitos PVCs usando anotações para especificar o segredo.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-csi-pvc1
namespace: <namespace> # The namespace where you want to create the PVC.
annotations:
cos.csi.driver/secret: "<custom-secret>"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: <storage_class_name> # The storage class you want to use.
-
Escolha um dos exemplos anteriores e personalize-o de acordo com seu caso de uso. Para obter uma lista das classes de armazenamento, consulte a referência da classe Storage.
-
Crie o PVC.
oc apply -f pvc.yaml
Criar uma implementação
-
Salve a configuração a seguir em um arquivo chamado
dep.yaml``.apiVersion: apps/v1 kind: Deployment metadata: name: <name> labels: app: <name> spec: replicas: 1 selector: matchLabels: app: <name> template: metadata: labels: app: <name> spec: containers: - name: app-frontend image: <image> # Enter your app image. imagePullPolicy: IfNotPresent volumeMounts: - mountPath: <path_you_want_to_mount_the_volume_on> # For example `/dev` name: cos-csi-volume volumes: - name: cos-csi-volume persistentVolumeClaim: claimName: <pvc_name> # Enter the name of the PVC you created earlier. -
Crie a implementação.
oc apply -f dep.yaml
Desativando o complemento IBM Cloud Object Storage
Os segredos, PVCs e implantações existentes não são excluídos pela desativação do complemento ou por atualizações de patches. Não há interrupções nas cargas de trabalho existentes dos clientes.
- Execute o comando a seguir para desativar o complemento.
Exemplo de saídaibmcloud oc cluster addon disable ibm-object-csi-driver --cluster CLUSTERData and resources that you created for the add-on might be deleted when the add-on is disabled. Continue? [y/N]> y Disabling add-on ibm-object-csi-driver for cluster XXX... OK - Verifique se o complemento foi removido.
ibmcloud oc cluster addon ls --cluster CLUSTER
Migração do plug-in Helm para o complemento de cluster
-
Obtenha os detalhes de seus PVCs e selecione um para migrar.
oc get pvc --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name' | tail -n +2 | while read namespace pvc; do kubectl describe pvc "$pvc" -n "$namespace" | grep 'volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs' > /dev/null ; if [ $? -eq 0 ]; then echo "PVC: $pvc in Namespace: $namespace uses ibm.io/ibmc-s3fs storage provisioner"; fi; doneExemplo de saída
PVC: pvc-test in Namespace: default uses ibm.io/ibmc-s3fs storage provisioner -
Descreva o PVC e obtenha o nome do balde.
oc describe pvc <pvc_name> | grep ibm.io/bucket:Exemplo de saída
ibm.io/bucket: test-s3 -
Recrie seu segredo com o nome do balde incluído.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. namespace: <namespace> # Specify the namespace where you want to create the secret. data: accessKey: <base64-encoded-HMAC-access-key> secretKey: <base64-encoded-HMAC-secret-key> stringData: bucketName: <bucket-name> mountOptions: | # uid=3000 # Optional: Run as non-root user. Must match runAsUser in SecurityContext of pod spec. key1=value1 key2=value2 -
Encontre a classe de armazenamento que foi usada em seu PVC.
oc describe pvc <pvc_name> | grep StorageClass:Exemplo de comando para um PVC chamado
test-s3.oc describe pvc test-s3 | grep StorageClass:Exemplo de saída
StorageClass: ibmc-s3fs-smart-perf-regional -
Revise as novas classes de armazenamento disponíveis com o add-on e selecione uma classe de substituição.
- Se você usou uma classe
flex, escolha uma das novas classessmart. - Se você usou uma classe
standard, escolha uma das novas classesstandard. - As classes
coldevaultnão estão mais disponíveis com o add-on; em vez disso, escolha uma classesmartoustandard.
- Se você usou uma classe
-
Analise os detalhes de seu PVC.
oc describe pvc test-s3Exemplo de saída
Name: pvc-test Namespace: default StorageClass: ibmc-s3fs-smart-perf-regional Status: Bound Volume: pvc-c625474d-31f0-4929-bc3e-feace1fb42fb Labels: <none> Annotations: ibm.io/auto-create-bucket: true ibm.io/auto-delete-bucket: true ibm.io/bucket: bha-test-s23 ibm.io/secret-name: satstoragesecret pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs Finalizers: [kubernetes.io/pvc-protection] Capacity: 3Gi Access Modes: RWO VolumeMode: Filesystem Used By: test-pod Events: <none> -
Crie um PVC de substituição que use uma nova classe de armazenamento e faça referência ao segredo que você criou anteriormente.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cos-csi-pvc1 namespace: <namespace> # The namespace where you want to create the PVC. annotations: cos.csi.driver/secret: "cos-secret-1" # Secret created in step 4 spec: accessModes: - ReadWriteOnce resources: requests: storage: 256Mi storageClassName: <storage_class_name> # The storage class you picked based on old storage class mapping. -
Verifique se o PVC é
Bound.oc get pvc -
Veja os detalhes do seu aplicativo.
oc get pods -
Reduza seu aplicativo a zero.
kubectl scale deployment --replicas=0 my-app -
Crie uma implantação de substituição que faça referência ao PVC que você criou na etapa anterior.
-
Depois que a nova implantação estiver em execução, você poderá excluir a implantação antiga.
-
Repita essas etapas para cada PVC que você deseja migrar.
IBM Cloud Object Storage classes de armazenamento complementares do cluster
O complemento de cluster IBM Cloud Object Storage fornece classes de armazenamento para os montadores s3fs e rclone. Escolha uma classe de armazenamento que se ajuste aos seus requisitos de acesso a dados. A classe
de armazenamento determina a classe do bucket, a política de recuperação e o comportamento de montagem padrão para o bucket criado para sua carga de trabalho.
- Standard
- Utilize para dados de uso frequente que são acessados com frequência. Casos de uso comuns são apps da web ou móveis.
- Vault
- Utilize para cargas de trabalho ou dados pouco utilizados, acessados com pouca frequência, como uma vez por mês ou menos. Os casos de uso comum são archives, retenção de dados de curto prazo, preservação de ativo digital, substituição de fita e recuperação de desastre.
- Frio
- Utilize para dados pouco acessados (a cada 90 dias ou menos) ou dados inativos. Os casos de uso comum são archives, backups de longo prazo, dados históricos que você mantém para conformidade ou cargas de trabalho e apps que são raramente acessados.
- Inteligente
- Use para cargas de trabalho e dados que não seguem um padrão de uso específico ou quando for difícil prever o padrão de uso.
Decida sobre o nível de resiliência para os dados que estão armazenados em seu bucket. Para obter mais informações, consulte Regiões e terminais.
- região cruzada
- Seus dados são armazenados em três regiões dentro de uma mesma área geográfica, garantindo a máxima disponibilidade. Se você tiver cargas de trabalho que estão distribuídas entre regiões, as solicitações serão roteadas para o terminal regional
mais próximo. O endpoint IBM Cloud Object Storage para a geolocalização é definido automaticamente com base na localização do seu cluster. Por exemplo, se o seu cluster estiver em
US South, suas classes de armazenamento estarão configuradas para usar o endpointUS GEOpara seus buckets. Escolha uma classe de armazenamento cujo nome inclua “cross-region”. - Regional
- Seus dados são replicados em várias zonas dentro de uma mesma região. Se tiver cargas de trabalho que estão localizadas na mesma região, você verá latência inferior e melhor desempenho do que em uma configuração entre regiões. O endpoint regional
é definido automaticamente com base na localização do seu cluster. Por exemplo, se o seu cluster estiver em
US South, suas classes de armazenamento estarão configuradas para usarUS Southcomo o endpoint regional dos seus buckets. Escolha uma classe de armazenamento cujo nome não inclua “cross-region”.
| Nome | Classe de depósito | Resiliência | Montador | Política de recuperação | Modo de Ligação |
|---|---|---|---|---|---|
| ibm-armazenamento-de-objetos-smart-entre-regiões-rclone | Inteligente | Inter-regional | rclone |
Excluir | Imediato |
| ibm-armazenamento-de-objetos-smart-entre-regiões-rclone-retain | Inteligente | Inter-regional | rclone |
Reter | Imediato |
| ibm-object-storage-smart-cross-region-s3fs | Inteligente | Inter-regional | s3fs |
Excluir | Imediato |
| ibm-object-storage-smart-cross-region-s3fs-retain | Inteligente | Inter-regional | s3fs |
Reter | Imediato |
| ibm-object-storage-smart-rclone | Inteligente | Regional | rclone |
Excluir | Imediato |
| ibm-armazenamento-de-objetos-smart-rclone-retain | Inteligente | Regional | rclone |
Reter | Imediato |
| ibm-object-storage-smart-s3fs | Inteligente | Regional | s3fs |
Excluir | Imediato |
| ibm-object-storage-smart-s3fs-retain | Inteligente | Regional | s3fs |
Reter | Imediato |
| ibm-object-storage-standard-entre-regiões-rclone | Standard | Inter-regional | rclone |
Excluir | Imediato |
| ibm-object-storage-standard-entre-regiões-rclone-retain | Standard | Inter-regional | rclone |
Reter | Imediato |
| ibm-object-storage-standard-cross-region-s3fs | Standard | Inter-regional | s3fs |
Excluir | Imediato |
| ibm-object-storage-standard-cross-region-s3fs-retain | Standard | Inter-regional | s3fs |
Reter | Imediato |
| ibm-object-storage-standard-rclone | Standard | Regional | rclone |
Excluir | Imediato |
| ibm-object-storage-standard-rclone-retain | Standard | Regional | rclone |
Reter | Imediato |
| ibm-object-storage-standard-s3fs | Standard | Regional | s3fs |
Excluir | Imediato |
| ibm-object-storage-standard-s3fs-retain | Standard | Regional | s3fs |
Reter | Imediato |
Para revisar a configuração detalhada do bucket para uma classe de armazenamento, execute oc describe storageclass <storageclass_name> ou oc describe storageclass <storageclass_name>.
Parâmetros de classe de armazenamento
Todas as classes de armazenamento complementar de cluster incluem os seguintes parâmetros principais.
| Parâmetro | Descrição |
|---|---|
client |
Identifica o tipo de cliente que o driver usa. As classes de armazenamento complementar usam awss3. |
cosEndpoint |
Define o ponto de extremidade IBM Cloud Object Storage para a região do compartimento. |
csi.storage.k8s.io/node-publish-secret-name |
Faz referência ao nome do segredo que contém suas credenciais IBM Cloud Object Storage. |
csi.storage.k8s.io/node-publish-secret-namespace |
Faz referência ao namespace do segredo que contém suas credenciais IBM Cloud Object Storage. |
locationConstraint |
Define a classe e a região do bucket, como au-syd-smart ou au-syd-standard. |
mounter |
Especifica se a classe de armazenamento usa o montador s3fs ou rclone. |
Opções de montagem padrão da classe de armazenamento s3fs
As classes de armazenamento s3fs usam as seguintes opções de montagem padrão.
| Opção de montagem | Descrição |
|---|---|
multipart_size=52 |
Define o tamanho da parte, em MB, para cada solicitação de várias partes. |
multireq_max=20 |
Define o número máximo de solicitações paralelas para listar objetos. |
max_dirty_data=5120 |
Descarrega os dados sujos em S3 depois que um número especificado de MB é gravado. O valor mínimo suportado é 50. Um valor de -1 desativa esse comportamento. |
parallel_count=20 |
Define o número de solicitações paralelas para fazer upload de objetos grandes. O site s3fs faz upload de objetos grandes usando solicitações de várias partes e envia solicitações em paralelo. |
max_stat_cache_size=100000 |
Define o número máximo de entradas no cache de estatísticas e no cache de links simbólicos. |
retries=5 |
Define o número de vezes para tentar novamente uma transação S3 que falhou. |
kernel_cache |
Ativa o cache de buffer do kernel para o ponto de montagem do volume. Os dados que são lidos em IBM Cloud Object Storage são armazenados no cache do kernel para ajudar a proporcionar um acesso de leitura mais rápido. O cache do kernel
está ativado para as classes de armazenamento padrão e inteligente s3fs. |
max_background=1000 |
Define o número máximo de solicitações FUSE em segundo plano que podem ser enfileiradas antes que o kernel bloqueie novas solicitações. Aumentar esse valor melhora a taxa de processamento para cargas de trabalho com alta simultaneidade. |
Opções de montagem padrão da classe de armazenamento rclone
As classes de armazenamento rclone usam as seguintes opções de montagem padrão.
| Opção de montagem | Descrição |
|---|---|
acl=private |
Garante que os objetos carregados não sejam acessíveis publicamente. |
bucket_acl=private |
Define a ACL padrão dos compartimentos que rclone cria para private. |
upload_cutoff=100Mi |
Faz upload de arquivos maiores que 100 MiB usando upload de várias partes. Arquivos menores são carregados em uma única solicitação. |
chunk_size=16Mi |
Define o tamanho de cada parte em um upload de várias partes. |
max_upload_parts=1000 |
Define o número máximo de partes por upload de várias partes e, indiretamente, limita o tamanho máximo de arquivo suportado com o chunk_size configurado. Com chunk_size=16Mi, o tamanho máximo do arquivo é 16 GiB. |
upload_concurrency=8 |
Define o número de partes que são carregadas em paralelo durante um upload de várias partes. |
multi_thread_streams=8 |
Define o número de threads utilizadas para baixar um único objeto ao utilizar o download multithread. |
disable_checksum=true |
Desativa o cálculo da soma de verificação do MD5 durante o envio. Melhora o desempenho em arquivos grandes, nos quais o cálculo da soma de verificação gera uma sobrecarga significativa. |