Criando Armazenamento Persistente do Sistema de Arquivos Usando o Plug-in de Volume CSI
No Compute Cloud@Customer, você pode provisionar uma PVC em um novo sistema de arquivos usando o plug-in de volume CSI. Use o comando kubectl
para criar a classe de armazenamento e a reivindicação de volume persistente. O plug-in de volume CSI provisiona a PVC em um novo sistema de arquivos.
Você só pode ter um ponto de acesso NFS e um sistema de arquivos por VCN. Você pode ter várias classes de armazenamento, volumes persistentes e reivindicações de volume persistentes por cluster. Todas as classes de armazenamento, volumes persistentes e reivindicações de volume persistente em um cluster compartilham um NFS.
-
Crie uma nova classe de armazenamento que use o provisionador
fss.csi.oraclecloud.com
.$ kubectl create -f sc.yaml
A seguir está o conteúdo do arquivo de manifesto
sc.yaml
:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fss-dyn-storage provisioner: fss.csi.oraclecloud.com parameters: availabilityDomain: AD-1 compartmentOcid: ocid1.compartment.unique_ID mountTargetSubnetOcid: ocid1.subnet.unique_ID exportPath: AUTOSELECT exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]" encryptInTransit: "false"
-
O nome da nova classe de armazenamento é
fss-dyn-storage
. -
mountTargetSubnetOcid
oumountTargetOcid
é obrigatório. O valor demountTargetSubnetOcid
é o OCID da sub-rede na qual você deseja que o plug-in CSI crie um ponto de acesso NFS. O valor demountTargetOcid
é o OCID de um ponto de acesso NFS existente. Se você especificarmountTargetSubnetOcid
emountTargetOcid
,mountTargetOcid
será usado emountTargetSubnetOcid
será ignorado.Para garantir que o ponto de acesso NFS possa ser acessado pelos nós de trabalho, especifique a sub-rede que tem configuração como a sub-rede "trabalhador" descrita em Criando Recursos de Rede do OKE ou crie o ponto de acesso NFS na sub-rede que tem configuração como a sub-rede de trabalho. Certifique-se de que a porta TCP 2049 para o servidor NFS esteja aberta nessa sub-rede.
-
O
compartmentOcid
é opcional. Esse valor é o OCID do compartimento no qual o novo sistema de arquivos (e o novo ponto de acesso NFS, semountTargetSubnetOcid
for especificado) serão criados. O valor padrão é o mesmo compartimento do cluster. -
Especifique
AUTOSELECT
como o valor deexportPath
. -
O valor
exportOptions
é a entrada de opções de exportação NFS dentro da exportação do sistema de arquivos que define o acesso concedido aos clientes NFS quando se conectam a um destino de montagem. Osource
pode ser um único endereço IP ou faixa de blocos CIDR. Este valor é um conjunto de parâmetros no formato JSON. -
O valor de
encryptInTransit
especifica se os dados serão criptografados em trânsito.
-
-
Crie uma PVC a ser provisionada pelo novo sistema de arquivos no serviço File Storage.
$ kubectl create -f fss-dyn-claim.yaml
A seguir está o conteúdo do arquivo de manifesto
fss-dyn-claim.yaml
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "fss-dyn-storage" resources: requests: storage: 50Gi
-
Verifique se a PVC foi vinculada ao novo volume persistente.
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE fss-dynamic-claim Bound csi-fss-f6823a66-8b6f-4c42-9d1f-d25723e69257 50Gi RWX fss-dyn-storage 6m47s
-
Use a nova PVC ao criar objetos, como pods.
Veja a seguir um exemplo de criação de objeto:
$ kubectl create nginx.yaml
Veja a seguir o conteúdo do arquivo
nginx.yaml
. ConsulteclaimName
na última linha:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx_image_url ports: - name: http containerPort: 80 volumeMounts: - name: persistent-storage mountPath: /usr/share/nginx/html volumes: - name: persistent-storage persistentVolumeClaim: claimName: fss-dynamic-claim
Verifique se o objeto foi criado e implantado:
$ kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 0 104s