メインコンテンツまでスキップ

PVC snapshot をスケジュールする

オンデマンドの PV snapshot 機能に加えて、FPT Cloud では Kubernetes の CronJob を使って PVC snapshot を定期的にスケジュールできます。

PVC snapshot 用の CronJob スケジュールを設定する​

  1. CronJob がクラスター内で権限を持てるように ServiceAccount を作成します。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: snapshot-sa
    namespace: default #or any other namespace that you want to deploy the cronjob
  2. その ServiceAccount に権限を付与する ClusterRoleBinding を apply します。subjects には、CronJob を実行するすべての namespace の ServiceAccount を含めてください。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: grant-snapshot-sa-admin
    subjects:
    - kind: ServiceAccount
    name: snapshot-sa
    namespace: default #or any other namespace that you want to deploy the cronjob
    - kind: ServiceAccount
    name: snapshot-sa
    namespace: namespace1 #if user wants to have multiple cronjob in multiple namespace
    roleRef:
    kind: ClusterRole
    name: cluster-admin
    apiGroup: rbac.authorization.k8s.io

    次のコマンドで確認します。

    kubectl get clusterrolebinding grant-snapshot-sa-admin -oyaml
  3. PVC snapshot を自動スケジュールする CronJob を apply します。

    apiVersion: batch/v1
    kind: CronJob
    metadata:
    name: pvc-snapshot #or any other name that you want to set
    namespace: default #or any other namespace that you want to deploy the cronjob, but must be in the same namespace with ServiceAccount and ClusterRoleBinding
    spec:
    schedule: "0 * * * *" #Adjust this (minute hour day(month) month day(week))
    timeZone: "Asia/Saigon"
    jobTemplate:
    spec:
    template:
    spec:
    serviceAccountName: snapshot-sa #Remember to match the name of ServiceAccount that deployed previously
    containers:
    - name: pvc-snapshot
    image: registry.fke.fptcloud.com/xplat-fke/snapshot-pvc:v0.1.0
    env:
    - name: PVC_NAME
    value: "your-pvc-name" #name of the PVC that you want to apply Cronjob to
    - name: NAMESPACE
    value: "your-pvc-namespace" #namespace of the above PVC
    restartPolicy: OnFailure

snapshot の一覧を確認する​

CronJob が動作しているか、snapshot の一覧で確認します。

kubectl get volumesnapshots.snapshot.storage.k8s.io -A
NAMESPACE NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
example wp-pv-claim-example-2412020736 true wp-pv-claim 20Gi csi-cinder-snapclass snapcontent-045fe85e-7471-4bfb-9a55-2ed2ed2263dd 64m 64m
example wp-pv-claim-example-2412020836 true wp-pv-claim 20Gi csi-cinder-snapclass snapcontent-fd1333bc-70f6-417f-a91d-10349aa0647d 4m11s 4m11s

snapshot 名 wp-pv-claim-example-2412020736 の内訳は次のとおりです。

  • wp-pv-claim — PVC 名
  • example — namespace 名
  • 2412020736 — 24(年)、12(月)、02(日)、07(時)、36(分)、UTC+0
注記

PVC 1 つにつき CronJob は 1 つまでです。複数の PVC や、1 つの PVC に対して複数のスケジュールが必要な場合は、CronJob を複数作成してください。新しい Job が実行されると、snapshot を実行する pod が作成されます。kubectl get volumesnapshots.snapshot.storage.k8s.io -n <namespace> または kubectl get jobs.batch -n <namespace> で確認できます。

FPT Cloud が提供するイメージには retention 機能がないため、disk storage のクォータを圧迫しないよう、古い snapshot は自分で削除してください。

CronJob スケジュールを削除する​

PVC のスケジュール snapshot を停止するには、対応する CronJob を削除します。