Azure AKS backup usando Velero

votos
50

Eu notei que o Velero só pode fazer backup dos PVCs AKS se esses PVCs forem discos e não arquivos Azure. Para lidar com isso tentei usar restic para fazer o backup por fileshares em si, mas me deu um log estranho:

É assim que a minha cápsula real se parece

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    backup.velero.io/backup-volumes: app-upload
    deployment.kubernetes.io/revision: 17

E o log do meu backup:

time=2020-05-20T02:01:09Z level=info msg=Adding pvc upload to additionalItems backup=velero/lbkomas-rocmondriaan-production-20200520020055 cmd=/velero logSource=pkg/backup/pod_action.go:67 pluginName=velero
time=2020-05-20T02:01:09Z level=info msg=Backing up item backup=velero/lbkomas-rocmondriaan-production-20200520020055 group=v1 logSource=pkg/backup/item_backupper.go:169 name=upload namespace=lbkompas-prod resource=persistentvolumeclaims
time=2020-05-20T02:01:09Z level=info msg=Executing custom action backup=velero/lbkomas-rocmondriaan-production-20200520020055 group=v1 logSource=pkg/backup/item_backupper.go:330 name=upload namespace=lbkompas-prod resource=persistentvolumeclaims
time=2020-05-20T02:01:20Z level=info msg=Skipping item because it's already been backed up. backup=velero/lbkomas-rocmondriaan-production-20200520020055 group=v1 logSource=pkg/backup/item_backupper.go:163 name=upload namespace=lbkompas-prod resource=persistentvolumeclaims

Como você pode ver, de alguma forma ele não fez backup do uploadvolume, uma vez que diz que já está no backup (onde na verdade não está).

O meu azurefilevolume guarda estes conteúdos:

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {allowVolumeExpansion:true,apiVersion:storage.k8s.io/v1beta1,kind:StorageClass,metadata:{annotations:{},labels:{kubernetes.io/cluster-service:true},name:azurefile},parameters:{skuName:Standard_LRS},provisioner:kubernetes.io/azure-file}
  creationTimestamp: 2020-05-18T15:18:18Z
  labels:
    kubernetes.io/cluster-service: true
  name: azurefile
  resourceVersion: 1421202
  selfLink: /apis/storage.k8s.io/v1/storageclasses/azurefile
  uid: e3cc4e52-c647-412a-bfad-81ab6eb222b1
mountOptions:
- nouser_xattr
parameters:
  skuName: Standard_LRS
provisioner: kubernetes.io/azure-file
reclaimPolicy: Delete
volumeBindingMode: Immediate

Como você pode ver, eu realmente corrigi a classe de armazenamento para segurar a opção de nouser_xattrmontagem que foi sugerida anteriormente

Quando verifico os registos da cápsula Restic, vejo as seguintes informações:

E0524 10:22:08.908190       1 reflector.go:156] github.com/vmware-tanzu/velero/pkg/generated/informers/externalversions/factory.go:117: Failed to list *v1.PodVolumeBackup: Get https://10.0.0.1:443/apis/velero.io/v1/namespaces/velero/podvolumebackups?limit=500&resourceVersion=1212830: dial tcp 10.0.0.1:443: i/o timeout
I0524 10:22:08.909577       1 trace.go:116] Trace[1946538740]: Reflector ListAndWatch name:github.com/vmware-tanzu/velero/pkg/generated/informers/externalversions/factory.go:117 (started: 2020-05-24 10:21:38.908988405 +0000 UTC m=+487217.942875118) (total time: 30.000554209s):
Trace[1946538740]: [30.000554209s] [30.000554209s] END

Melhor, Pim

Publicado 20/05/2020 em 16:21
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você já adicionou nouser_xattrà sua lista de Opções de montagem StorageClass?

Este requisito está documentado na edição 1800 do GitHub.

Também mencionado na página de integração de restic (verifique na seção Azure), onde eles fornecem este snippet para remendar seu recurso StorageClass:

kubectl patch storageclass/<YOUR_AZURE_FILE_STORAGE_CLASS_NAME> \
  --type json \
  --patch '[{"op":"add","path":"/mountOptions/-","value":"nouser_xattr"}]'

Se você não tem uma lista existentemountOptions, você pode tentar:

kubectl patch storageclass azurefile \
  --type merge \
  --patch '{"mountOptions": ["nouser_xattr"]}'
Respondeu 20/05/2020 em 21:52
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more