Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[controller] Add data wipe #103

Open
wants to merge 38 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 32 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
166aa24
Add data wipe feature
duckhawk Feb 18, 2025
7b47438
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 18, 2025
e7d08ef
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 18, 2025
93f9d63
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 18, 2025
121effe
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 18, 2025
5049ae1
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 18, 2025
4b432a4
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
8a16dc3
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
a05ea9e
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
b2742a6
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
437f2b1
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
01f2a97
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
2c0d20e
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
a651839
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
81c9087
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
8faa025
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
0dc5bb3
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
1ee41b4
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
86c5e2c
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
724561b
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
28afaa8
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
a28dbb1
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
8d9ba18
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 19, 2025
29ac7a9
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 20, 2025
408fe1d
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 20, 2025
cc92ffa
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 20, 2025
90650ae
Apply suggestions from code review
duckhawk Feb 20, 2025
ce22b8a
docs: add section Selecting the method of volume cleanup after PV del…
Feb 20, 2025
76765e4
docs: fix crds: volumeCleanup parameter
Feb 20, 2025
1944eb5
docs: add Selects the method to clean the volume before deleting the …
Feb 20, 2025
a27a31e
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 20, 2025
d55fcb1
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 20, 2025
53db9e8
fix
AleksZimin Feb 21, 2025
e26d17c
Apply suggestions from code review
AleksZimin Feb 21, 2025
db9cf8c
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 21, 2025
823dffc
fix
AleksZimin Feb 21, 2025
70c8481
fix
AleksZimin Feb 21, 2025
0ae0595
Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>
duckhawk Feb 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion api/v1alpha1/local_storage_class.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,6 @@ type LocalStorageClassLVMThinPoolSpec struct {
}

type LocalStorageClassLVMThickSpec struct {
Contiguous bool `json:"contiguous"`
Contiguous bool `json:"contiguous"`
VolumeCleanup string `json:"volumeCleanup"`
}
8 changes: 8 additions & 0 deletions crds/doc-ru-localstorageclass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ spec:
contiguous:
description: |
Если true, логический том будет создан с флагом contiguous. Примечание: Этот флаг следует использовать с осторожностью, так как он может привести к плохому планированию подов, использующих постоянный том. Наш шедулер проверяет свободное место в VG и выбирает для подов узлы с наибольшим количеством свободного места, но он не может определить максимальное количество последовательного свободного места. В результате могут возникнуть ситуации, когда под будет запланирован на узел, на котором том не сможет быть создан из-за недостатка последовательного свободного места. В случае возникновения такой ситуации потребуется ручное вмешательство администратора.
volumeCleanup:
description: |
Метод очистки тома после удаления PV.
Если параметр не задан, после удаления PV данные могут удалиться, либо остаться. Гарантий удаления или неудаления нет.
Допустимые значения:
- `RandomFillSinglePass` - том будет перезаписан случайными данными один раз перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `RandomFillThreePass` - том будет перезаписан случайными данными три раза перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `Discard` - все блоки тома будут отмечены как свободные с использованием системного вызова `discard` перед удалением. Эта опция имеет смысл только для твердотельных накопителей.
lvmVolumeGroups:
description: |
LVMVolumeGroup ресурсы, на которых будут размещены Persistent Volume.
Expand Down
87 changes: 87 additions & 0 deletions crds/doc-ru-localstorageclass.yaml.orig
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
spec:
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: |
LocalStorageClass - это пользовательский ресурс Kubernetes, который определяет конфигурацию для Kubernetes Storage Class.
properties:
spec:
description: |
Описывает конфигурацию Kubernetes Storage Class.
properties:
reclaimPolicy:
description: |
Reclaim policy данного storage class'а. Может быть:
- Delete (При удалении Persistent Volume Claim также удаляются Persistent Volume и связанное хранилище)
- Retain (При удалении Persistent Volume Claim остаются Persistent Volume и связанное хранилище)
volumeBindingMode:
description: |
Binding mode для данного Storage class'а. Может быть:
- Immediate (создает PV сразу же, как будет создан PVC)
- WaitForFirstConsumer (создает PV только после того, как будет создан Pod для PVC)
lvm:
description: |
Поле описывает конфигурацию LVM.
properties:
type:
description: |
Тип выделения ресурсов для логических томов LVM (LV), создаваемых для постоянных томов (PV).
thick:
description: |
Настройки для Logical Volumes в ресурсе LVMVolumeGroup.
properties:
contiguous:
description: |
Если true, логический том будет создан с флагом contiguous. Примечание: Этот флаг следует использовать с осторожностью, так как он может привести к плохому планированию подов, использующих постоянный том. Наш шедулер проверяет свободное место в VG и выбирает для подов узлы с наибольшим количеством свободного места, но он не может определить максимальное количество последовательного свободного места. В результате могут возникнуть ситуации, когда под будет запланирован на узел, на котором том не сможет быть создан из-за недостатка последовательного свободного места. В случае возникновения такой ситуации потребуется ручное вмешательство администратора.
<<<<<<< HEAD
volumeCleanup:
description: |
Метод очистки тома после удаления PV.
Если параметр не задан, после удаления PV данные могут удалиться, либо остаться. Гарантий удаления или неудаления нет.
Допустимые значения:
- `RandomFillSinglePass` — том будет перезаписан случайными данными один раз перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `RandomFillThreePass` — том будет перезаписан случайными данными три раза перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `Discard` — все блоки тома будут отмечены как свободные с использованием системного вызова `discard` перед удалением. Эта опция имеет смысл только для твердотельных накопителей.
=======
volumeCleanup:
description: |
Метод очистки тома после удаления PV.
Если параметр не задан, после удаления PV данные могут удалиться, либо остаться. Гарантий удаления или неудаления нет.
Допустимые значения:
- `RandomFillSinglePass` - том будет перезаписан случайными данными один раз перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `RandomFillThreePass` - том будет перезаписан случайными данными три раза перед удалением. Использовать эту опцию не рекомендуется для твердотельных накопителей, так как она уменьшает ресурс накопителя.
- `Discard` - все блоки тома будут отмечены как свободные с использованием системного вызова `discard` перед удалением. Эта опция имеет смысл только для твердотельных накопителей.
>>>>>>> 190f8d5 (Signed-off-by: v.oleynikov <vasily.oleynikov@flant.com>)
lvmVolumeGroups:
description: |
LVMVolumeGroup ресурсы, на которых будут размещены Persistent Volume.
items:
properties:
name:
description: |
Имя LVMVolumeGroup ресурса.
thin:
description: |
Thin pool в выбранном LVMVolumeGroup ресурсе.
properties:
poolName:
description: |
Имя выбранного Thin pool.
fsType:
description: |
Тип файловой системы для данного Storage class'а. Может быть:
- ext4 (по умолчанию)
- xfs
status:
description: |
Описывает текущую информацию о соответствующем Storage Class.
properties:
phase:
description: |
Текущее состояние Storage class. Может быть:
- Failed (в случае, если контроллер получил некорректную конфигурацию, или возникли ошибки в ходе выполнения операций)
- Create (если все операции завершились успешно)
reason:
description: |
Дополнительная информация о состоянии Storage Class.
10 changes: 10 additions & 0 deletions crds/localstorageclass.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,16 @@ spec:
message: Value is immutable.
description: |
If true, the Logical Volume will be created with the contiguous flag. Note: This flag should be used with caution because it may lead to poor scheduling of pods using the Persistent Volume. Our scheduler checks the free space in VG and selects nodes with the most free space for pods. However, it cannot determine the maximum amount of sequential free space available. Consequently, there may be situations where a pod is scheduled to a node, but the volume cannot be created due to insufficient contiguous free space. If such a situation arises, manual intervention will be required.
volumeCleanup:
type: string
enum: [RandomFillThreePass, RandomFillSinglePass, Discard]
description: |
The method of the volume cleanup before deletion.
If the parameter is not set, after deleting the PV, the data may be deleted or it may remain. There is no guarantee of deletion or non-deletion.
Allowed values:
- `RandomFillSinglePass`: The volume will be overwritten with random data once before deletion. This option is not recommended for solid-state drives, as it reduces the lifespan of the drive.
- `RandomFillThreePass`: The volume will be overwritten with random data three times before deletion. This option is also not recommended for solid-state drives, as it reduces the lifespan of the drive.
- `Discard`: All blocks of the volume will be marked as free using the `discard`` system call before deletion. This option is only applicable to solid-state drives.
lvmVolumeGroups:
type: array
description: |
Expand Down
Loading
Loading