Skip to content

docs: add three-tier StorageNodeSet/StorageNode/StorageNodeOps design…#319

Open
geoffrey1330 wants to merge 13 commits into
mainfrom
three-tier-storage-node-model
Open

docs: add three-tier StorageNodeSet/StorageNode/StorageNodeOps design…#319
geoffrey1330 wants to merge 13 commits into
mainfrom
three-tier-storage-node-model

Conversation

@geoffrey1330

@geoffrey1330 geoffrey1330 commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

… document

Test Result

user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagecluster                          
NAME                  STATUS   UUID                                   CONFIGURED   AGE
simplyblock-cluster   active   06eab140-cbb1-4771-a6f3-39629bf56693   true         13m
user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagenodesets
NAME               AGE
simplyblock-node   13m
user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagenodes   
NAME                                               WORKER                          SOCKET   UUID                                   STATUS    HEALTH   AGE
simplyblock-node-vm02.simplyblock3.localdomain-0   vm02.simplyblock3.localdomain            88f29590-193e-4c3f-97be-c1a1720ff431   online    true     13m
simplyblock-node-vm03.simplyblock3.localdomain-0   vm03.simplyblock3.localdomain            cb495d20-338d-4575-9742-62eb7a1a3e4d   online    true     13m
simplyblock-node-vm04.simplyblock3.localdomain-0   vm04.simplyblock3.localdomain            5ce4fcaa-346d-45f6-88df-760719270ecc   removed            13m
user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagenodeops
NAME          NODE                                               ACTION   PHASE       SUBPHASE   MESSAGE                   AGE
remove-vm04   simplyblock-node-vm04.simplyblock3.localdomain-0   remove   Succeeded              entering phase Removing   112s

StorageNode

user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagenodes simplyblock-node-vm02.simplyblock3.localdomain-0 -o yaml
apiVersion: storage.simplyblock.io/v1alpha1
kind: StorageNode
metadata:
  creationTimestamp: "2026-07-14T15:36:51Z"
  finalizers:
  - storage.simplyblock.io/storagenode-finalizer
  generation: 1
  labels:
    storage.simplyblock.io/storagenodeset: simplyblock-node
    storage.simplyblock.io/worker: vm02.simplyblock3.localdomain
  name: simplyblock-node-vm02.simplyblock3.localdomain-0
  namespace: simplyblock
  ownerReferences:
  - apiVersion: storage.simplyblock.io/v1alpha1
    blockOwnerDeletion: true
    controller: true
    kind: StorageNodeSet
    name: simplyblock-node
    uid: 91bb5f26-c83e-4e85-839e-d32f8cd8e2d0
  resourceVersion: "1936220"
  uid: c13d7714-bfbd-4fb9-b55f-f3598c383a7a
spec:
  storageNodeSetRef: simplyblock-node
  workerNode: vm02.simplyblock3.localdomain
status:
  cpu: 8
  health: true
  hostname: vm02_4420
  lvolPort: 4428
  mgmtIp: 192.168.10.82
  nvmfPort: 4423
  postedAt: "2026-07-14T15:37:41Z"
  rpcPort: 4420
  status: online
  uuid: 88f29590-193e-4c3f-97be-c1a1720ff431
  volumes: 0

StorageNodeOps

user@users-MacBook-Pro-2 ~ % kubectl -n simplyblock  get storagenodeops -o yaml
apiVersion: v1
items:
- apiVersion: storage.simplyblock.io/v1alpha1
  kind: StorageNodeOps
  metadata:
    annotations:
      kubectl.kubernetes.io/last-applied-configuration: |
        {"apiVersion":"storage.simplyblock.io/v1alpha1","kind":"StorageNodeOps","metadata":{"annotations":{},"name":"remove-vm04","namespace":"simplyblock"},"spec":{"action":"remove","drain":{"systemVolumeFilterRegex":"^sb-fio-baseline-.*"},"storageNodeRef":"simplyblock-node-vm04.simplyblock3.localdomain-0"}}
    creationTimestamp: "2026-07-14T15:48:49Z"
    generation: 1
    name: remove-vm04
    namespace: simplyblock
    resourceVersion: "1936883"
    uid: b3c09745-b349-4cb6-a38e-5a9f57bdca5d
  spec:
    action: remove
    drain:
      systemVolumeFilterRegex: ^sb-fio-baseline-.*
    storageNodeRef: simplyblock-node-vm04.simplyblock3.localdomain-0
  status:
    completedAt: "2026-07-14T15:48:50Z"
    message: entering phase Removing
    phase: Succeeded
    startedAt: "2026-07-14T15:48:49Z"
kind: List
metadata:
  resourceVersion: ""

@boddumanohar boddumanohar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

questions

  • Are storage node CRs immutable? For example if any fields needs to be changed, they are updated via StorageNode or storageNodeSet?
  • As per the design, pods, daemonset and endpoint slice are currently managed by StorageNodeSet, but they actually come the StorageNode umbrella.

@geoffrey1330

geoffrey1330 commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator Author

questions

  • Are storage node CRs immutable? For example if any fields needs to be changed, they are updated via StorageNode or storageNodeSet?
  • As per the design, pods, daemonset and endpoint slice are currently managed by StorageNodeSet, but they actually come the StorageNode umbrella.

The fields update are done via storagenode CR

The daemonset creates the pods. and it create N number of pods per storagenode so it makes sense to be handled in the storagenodeset level as the storagenodeset creates N number of storagenode as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants