PVC snapshot をスケジュールする
オンデマンドの PV snapshot 機能に加えて、FPT Cloud では Kubernetes の CronJob を使って PVC snapshot を定期的にスケジュールできます。
PVC snapshot 用の CronJob スケジュールを設定する
-
CronJob がクラスター内で権限を持てるように
ServiceAccountを作成します。apiVersion: v1kind: ServiceAccountmetadata:name: snapshot-sanamespace: default #or any other namespace that you want to deploy the cronjob -
その ServiceAccount に権限を付与する
ClusterRoleBindingを apply します。subjectsには、CronJob を実行するすべての namespace の ServiceAccount を含めてください。apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: grant-snapshot-sa-adminsubjects:- kind: ServiceAccountname: snapshot-sanamespace: default #or any other namespace that you want to deploy the cronjob- kind: ServiceAccountname: snapshot-sanamespace: namespace1 #if user wants to have multiple cronjob in multiple namespaceroleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io次のコマンドで確認します。
kubectl get clusterrolebinding grant-snapshot-sa-admin -oyaml -
PVC snapshot を自動スケジュールする CronJob を apply します。
apiVersion: batch/v1kind: CronJobmetadata:name: pvc-snapshot #or any other name that you want to setnamespace: default #or any other namespace that you want to deploy the cronjob, but must be in the same namespace with ServiceAccount and ClusterRoleBindingspec: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 previouslycontainers:- name: pvc-snapshotimage: registry.fke.fptcloud.com/xplat-fke/snapshot-pvc:v0.1.0env:- name: PVC_NAMEvalue: "your-pvc-name" #name of the PVC that you want to apply Cronjob to- name: NAMESPACEvalue: "your-pvc-namespace" #namespace of the above PVCrestartPolicy: 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 を削除します。