From 984239ea330b1c8dde424f20ee475f9ff322c380 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Tue, 26 Dec 2023 15:54:52 +0800 Subject: [PATCH 01/11] commits --- pkg/controller/manager/state/http.go | 10 +++++++--- pkg/controller/manager/state/node.go | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pkg/controller/manager/state/http.go b/pkg/controller/manager/state/http.go index f1ac7c8..c767b24 100644 --- a/pkg/controller/manager/state/http.go +++ b/pkg/controller/manager/state/http.go @@ -13,20 +13,24 @@ type NodeStateAPI struct { KernelLVM *v1.KernelLVM `json:"kernelLVM,omitempty"` SpdkLVS *v1.SpdkLVStore `json:"spdkLVS,omitempty"` // Volumes breif info - Volumes []VolumeBreif `json:"volumes"` + Volumes []VolumeBrief `json:"volumes"` // FreeSize of the pool FreeSize int64 `json:"freeSize"` // Conditions of the pool status Conditions map[v1.PoolConditionType]v1.ConditionStatus `json:"conditions"` } -type VolumeBreif struct { +type VolumeBrief struct { Namespace string `json:"ns"` Name string `json:"name"` DataHolder string `json:"dataHolder"` Size int64 `json:"size"` } +type ReservationBreif struct { + ID string `json:"id"` +} + func NewStateHandler(s StateIface) *StateHandler { return &StateHandler{state: s} } @@ -62,7 +66,7 @@ func (h *StateHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) } for _, vol := range node.Volumes { - api.Volumes = append(api.Volumes, VolumeBreif{ + api.Volumes = append(api.Volumes, VolumeBrief{ Namespace: vol.Namespace, Name: vol.Name, Size: int64(vol.Spec.SizeByte), diff --git a/pkg/controller/manager/state/node.go b/pkg/controller/manager/state/node.go index 5295f52..becce23 100644 --- a/pkg/controller/manager/state/node.go +++ b/pkg/controller/manager/state/node.go @@ -231,6 +231,25 @@ func (n *Node) GetFreeResourceNonLock() (free corev1.ResourceList) { // Reserve storage resource for Node func (n *Node) Reserve(r ReservationIface) { + // if volume is already binded, then skip reservation. + var resvID = r.ID() + for _, vol := range n.Volumes { + if resvID == getVolumeReservationID(vol) { + return + } + } + + // check free resource + if free := n.FreeResource.Storage(); free != nil { + if free.CmpInt64(r.Size()) < 0 { + klog.Errorf("node %s have no enough disk pool space for reservation %s", n.Info.ID, resvID) + return + } + } + + n.volLock.Lock() + defer n.volLock.Unlock() + n.resvSet.Reserve(r) // update free resource n.FreeResource = n.GetFreeResourceNonLock() @@ -238,6 +257,9 @@ func (n *Node) Reserve(r ReservationIface) { // Unreserve storage resource func (n *Node) Unreserve(id string) { + n.volLock.Lock() + defer n.volLock.Unlock() + n.resvSet.Unreserve(id) // update free resource n.FreeResource = n.GetFreeResourceNonLock() From 83ac4513c22c2e1bc6caad08e2ded2ccc679cb0a Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Tue, 26 Dec 2023 16:04:02 +0800 Subject: [PATCH 02/11] change pv lost error keyword --- pkg/util/lvm/cmd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/util/lvm/cmd.go b/pkg/util/lvm/cmd.go index 2bb8342..5c6ebda 100644 --- a/pkg/util/lvm/cmd.go +++ b/pkg/util/lvm/cmd.go @@ -18,7 +18,7 @@ const ( LvDeviceOpen = "open" LvDeviceNotOpen = "" - pvLostErrStr = "not found or rejected by a filter" + pvLostErrStr = "Couldn't find device" ) var ( From b5c5b04b1af166391c9542054cd324d45873f1a3 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 28 Dec 2023 11:31:15 +0800 Subject: [PATCH 03/11] support config of reservation on nodes --- pkg/controller/manager/config/config.go | 7 ++++++ .../manager/reconciler/pool_reconciler.go | 16 ++++++++++++ .../manager/scheduler/filter/basic.go | 25 +++++++++++++++++++ .../manager/scheduler/filter/error.go | 1 + pkg/controller/manager/state/node.go | 4 +++ pkg/controller/manager/state/reservation.go | 21 ++++++++++++++++ pkg/controller/manager/state/state_test.go | 10 ++++++++ 7 files changed, 84 insertions(+) diff --git a/pkg/controller/manager/config/config.go b/pkg/controller/manager/config/config.go index 825ef9e..5fe774b 100644 --- a/pkg/controller/manager/config/config.go +++ b/pkg/controller/manager/config/config.go @@ -30,6 +30,13 @@ type SchedulerConfig struct { NodeCacheSelector map[string]string `json:"nodeCacheSelector" yaml:"nodeCacheSelector"` // MinLocalStoragePct defines the minimun percentage of local storage to be reserved on one node. MinLocalStoragePct int `json:"minLocalStoragePct" yaml:"minLocalStoragePct"` + // NodeReservations defines the reservations on each node + NodeReservations []NodeReservation `json:"nodeReservations" yaml:"nodeReservations"` +} + +type NodeReservation struct { + ID string `json:"id" yaml:"id"` + Size int64 `json:"size" yaml:"size"` } type NoScheduleConfig struct { diff --git a/pkg/controller/manager/reconciler/pool_reconciler.go b/pkg/controller/manager/reconciler/pool_reconciler.go index 061b090..e545de8 100644 --- a/pkg/controller/manager/reconciler/pool_reconciler.go +++ b/pkg/controller/manager/reconciler/pool_reconciler.go @@ -20,6 +20,7 @@ import ( v1 "code.alipay.com/dbplatform/node-disk-controller/pkg/api/volume.antstor.alipay.com/v1" "code.alipay.com/dbplatform/node-disk-controller/pkg/controller/kubeutil" + "code.alipay.com/dbplatform/node-disk-controller/pkg/controller/manager/config" "code.alipay.com/dbplatform/node-disk-controller/pkg/controller/manager/reconciler/plugin" "code.alipay.com/dbplatform/node-disk-controller/pkg/controller/manager/state" "code.alipay.com/dbplatform/node-disk-controller/pkg/util/misc" @@ -39,6 +40,7 @@ var ( type StoragePoolReconcileHandler struct { client.Client + Cfg config.Config State state.StateIface PoolUtil kubeutil.StoragePoolUpdater KubeCli kubernetes.Interface @@ -227,6 +229,7 @@ func (r *StoragePoolReconcileHandler) handleDeletion(pCtx *plugin.Context) (resu func (r *StoragePoolReconcileHandler) saveToState(sp *v1.StoragePool, log logr.Logger) (result plugin.Result) { var patch = client.MergeFrom(sp.DeepCopy()) var err error + var node *state.Node r.State.SetStoragePool(sp) @@ -244,6 +247,19 @@ func (r *StoragePoolReconcileHandler) saveToState(sp *v1.StoragePool, log logr.L } } + // try to add reservation by config + node, err = r.State.GetNodeByNodeID(sp.Name) + if err != nil { + log.Error(err, "GetNodeByNodeID error") + } + for _, item := range r.Cfg.Scheduler.NodeReservations { + if node != nil { + if _, has := node.GetReservation(item.ID); !has { + node.Reserve(state.NewReservation(item.ID, item.Size)) + } + } + } + return plugin.Result{} } diff --git a/pkg/controller/manager/scheduler/filter/basic.go b/pkg/controller/manager/scheduler/filter/basic.go index 9c9956e..f9cad92 100644 --- a/pkg/controller/manager/scheduler/filter/basic.go +++ b/pkg/controller/manager/scheduler/filter/basic.go @@ -21,6 +21,11 @@ func BasicFilterFunc(ctx *FilterContext, n *state.Node, vol *v1.AntstorVolume) b ) // check if err is nil + // if voume matches reservation, then do not do following checks + if pass, hasErr := matchReservationFilter(ctx, n, vol); hasErr || pass { + return pass + } + // consider Pool FreeSpace var freeRes = n.GetFreeResourceNonLock() var freeDisk = freeRes[v1.ResourceDiskPoolByte] @@ -100,3 +105,23 @@ func BasicFilterFunc(ctx *FilterContext, n *state.Node, vol *v1.AntstorVolume) b return true } + +func matchReservationFilter(ctx *FilterContext, n *state.Node, vol *v1.AntstorVolume) (pass, hasError bool) { + if resvId, has := vol.Annotations[v1.ReservationIDKey]; has { + free := n.FreeResource.Storage() + if free.CmpInt64(0) < 0 { + ctx.Error.AddReason(ReasonPoolFreeSize) + return false, true + } + + if r, has := n.GetReservation(resvId); has { + if r.Size() < int64(vol.Spec.SizeByte) { + ctx.Error.AddReason(ReasonReservationSize) + return false, true + } + return true, false + } + } + + return false, false +} diff --git a/pkg/controller/manager/scheduler/filter/error.go b/pkg/controller/manager/scheduler/filter/error.go index dc2d24a..3954036 100644 --- a/pkg/controller/manager/scheduler/filter/error.go +++ b/pkg/controller/manager/scheduler/filter/error.go @@ -16,6 +16,7 @@ const ( ReasonNodeAffinity = "NodeAffinity" ReasonPoolAffinity = "PoolAffinity" ReasonPoolUnschedulable = "PoolUnschedulable" + ReasonReservationSize = "ReservationTooSmall" NoStoragePoolAvailable = "NoStoragePoolAvailable" // diff --git a/pkg/controller/manager/state/node.go b/pkg/controller/manager/state/node.go index becce23..ac1cc18 100644 --- a/pkg/controller/manager/state/node.go +++ b/pkg/controller/manager/state/node.go @@ -264,3 +264,7 @@ func (n *Node) Unreserve(id string) { // update free resource n.FreeResource = n.GetFreeResourceNonLock() } + +func (n *Node) GetReservation(id string) (r ReservationIface, has bool) { + return n.resvSet.GetById(id) +} diff --git a/pkg/controller/manager/state/reservation.go b/pkg/controller/manager/state/reservation.go index 2456905..9fd7e47 100644 --- a/pkg/controller/manager/state/reservation.go +++ b/pkg/controller/manager/state/reservation.go @@ -13,6 +13,7 @@ type ReservationSetIface interface { Reserve(r ReservationIface) Unreserve(id string) Items() (list []ReservationIface) + GetById(id string) (r ReservationIface, has bool) } type ReservationIface interface { @@ -57,12 +58,32 @@ func (rs *reservationSet) Items() (list []ReservationIface) { return list } +func (rs *reservationSet) GetById(id string) (r ReservationIface, has bool) { + rs.lock.Lock() + defer rs.lock.Unlock() + + for _, item := range rs.rMap { + if item.ID() == id { + return item, true + } + } + + return nil, false +} + type reservation struct { id string namespacedName string sizeByte int64 } +func NewReservation(id string, size int64) ReservationIface { + return &reservation{ + id: id, + sizeByte: size, + } +} + func NewPvcReservation(pvc *corev1.PersistentVolumeClaim) ReservationIface { if pvc.DeletionTimestamp != nil { return nil diff --git a/pkg/controller/manager/state/state_test.go b/pkg/controller/manager/state/state_test.go index 40e25fa..6697988 100644 --- a/pkg/controller/manager/state/state_test.go +++ b/pkg/controller/manager/state/state_test.go @@ -102,3 +102,13 @@ func TestCompareError(t *testing.T) { err := newNotFoundNodeError("test") assert.True(t, IsNotFoundNodeError(err)) } + +func TestMinusResource(t *testing.T) { + q := resource.NewQuantity(0, resource.BinarySI) + assert.Zero(t, q.CmpInt64(0)) + + q.Sub(resource.MustParse("1Mi")) + assert.True(t, q.CmpInt64(0) == -1) + + t.Log(q.AsInt64()) +} From 77c89a72a1ffa78cdb496fe4fbd658942505e8d9 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 28 Dec 2023 13:54:28 +0800 Subject: [PATCH 04/11] expose node reservation in state api --- pkg/controller/manager/state/http.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/controller/manager/state/http.go b/pkg/controller/manager/state/http.go index c767b24..a1ddfe1 100644 --- a/pkg/controller/manager/state/http.go +++ b/pkg/controller/manager/state/http.go @@ -18,6 +18,8 @@ type NodeStateAPI struct { FreeSize int64 `json:"freeSize"` // Conditions of the pool status Conditions map[v1.PoolConditionType]v1.ConditionStatus `json:"conditions"` + // Resvervations on the node + Resvervations []ReservationBreif `json:"reservations"` } type VolumeBrief struct { @@ -28,7 +30,8 @@ type VolumeBrief struct { } type ReservationBreif struct { - ID string `json:"id"` + ID string `json:"id"` + Size int64 `json:"size"` } func NewStateHandler(s StateIface) *StateHandler { @@ -74,6 +77,15 @@ func (h *StateHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) }) } + if node.resvSet != nil { + for _, resv := range node.resvSet.Items() { + api.Resvervations = append(api.Resvervations, ReservationBreif{ + ID: resv.ID(), + Size: resv.Size(), + }) + } + } + bs, err := json.Marshal(api) if err != nil { writer.Write([]byte(err.Error())) From 1b8cb923de746e7c33d065e61b07684865cc0fc1 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 28 Dec 2023 14:10:25 +0800 Subject: [PATCH 05/11] pass config to StoragePoolReconcileHandler --- pkg/controller/manager/controllers/manager.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/controller/manager/controllers/manager.go b/pkg/controller/manager/controllers/manager.go index 067864b..fd33eb5 100644 --- a/pkg/controller/manager/controllers/manager.go +++ b/pkg/controller/manager/controllers/manager.go @@ -100,6 +100,7 @@ func NewAndInitControllerManager(req NewManagerRequest) manager.Manager { Concurrency: 4, MainHandler: &reconciler.StoragePoolReconcileHandler{ Client: mgr.GetClient(), + Cfg: req.ControllerConfig, State: stateObj, PoolUtil: poolUtil, KubeCli: kubeClient, From 17d8c84489356bcf4c80e60ea8bb5e3cf4a120a9 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 28 Dec 2023 14:38:40 +0800 Subject: [PATCH 06/11] add readable size in state API --- pkg/controller/manager/state/http.go | 21 ++++++++----- pkg/controller/manager/state/node.go | 11 +++---- pkg/controller/manager/state/state_test.go | 35 ++++++++++++++++++++++ 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/pkg/controller/manager/state/http.go b/pkg/controller/manager/state/http.go index a1ddfe1..564b8f4 100644 --- a/pkg/controller/manager/state/http.go +++ b/pkg/controller/manager/state/http.go @@ -14,8 +14,12 @@ type NodeStateAPI struct { SpdkLVS *v1.SpdkLVStore `json:"spdkLVS,omitempty"` // Volumes breif info Volumes []VolumeBrief `json:"volumes"` - // FreeSize of the pool - FreeSize int64 `json:"freeSize"` + // VgFreeSize of the pool + VgFreeSize int64 `json:"vgFreeSize"` + // MemFreeSize in controller memory + MemFreeSize int64 `json:"memFreeSize"` + // MemFreeSizeStr readable size in controller memory + MemFreeSizeStr string `json:"memFreeSizeStr"` // Conditions of the pool status Conditions map[v1.PoolConditionType]v1.ConditionStatus `json:"conditions"` // Resvervations on the node @@ -56,11 +60,14 @@ func (h *StateHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) } var api = NodeStateAPI{ - Name: spName, - PoolLabels: node.Pool.Labels, - KernelLVM: &node.Pool.Spec.KernelLVM, - SpdkLVS: &node.Pool.Spec.SpdkLVStore, - FreeSize: node.Pool.Status.VGFreeSize.Value(), + Name: spName, + PoolLabels: node.Pool.Labels, + KernelLVM: &node.Pool.Spec.KernelLVM, + SpdkLVS: &node.Pool.Spec.SpdkLVStore, + VgFreeSize: node.Pool.Status.VGFreeSize.Value(), + MemFreeSize: int64(node.FreeResource.Storage().AsApproximateFloat64()), + MemFreeSizeStr: node.FreeResource.Storage().String(), + Conditions: make(map[v1.PoolConditionType]v1.ConditionStatus), } diff --git a/pkg/controller/manager/state/node.go b/pkg/controller/manager/state/node.go index ac1cc18..cd3cce5 100644 --- a/pkg/controller/manager/state/node.go +++ b/pkg/controller/manager/state/node.go @@ -63,6 +63,12 @@ func (n *Node) AddVolume(vol *v1.AntstorVolume) (err error) { defer n.volLock.Unlock() var nodeID = n.Info.ID + + // delete reservation if volume has reservation id + if resvID := getVolumeReservationID(vol); resvID != "" { + n.resvSet.Unreserve(resvID) + } + // check duplicate for _, item := range n.Volumes { if item.Name == vol.Name { @@ -81,11 +87,6 @@ func (n *Node) AddVolume(vol *v1.AntstorVolume) (err error) { } } - // delete reservation if volume has reservation id - if resvID := getVolumeReservationID(vol); resvID != "" { - n.resvSet.Unreserve(resvID) - } - n.Volumes = append(n.Volumes, vol) // volume reside on Node vol.Spec.TargetNodeId = n.Pool.Spec.NodeInfo.ID diff --git a/pkg/controller/manager/state/state_test.go b/pkg/controller/manager/state/state_test.go index 6697988..7374aab 100644 --- a/pkg/controller/manager/state/state_test.go +++ b/pkg/controller/manager/state/state_test.go @@ -112,3 +112,38 @@ func TestMinusResource(t *testing.T) { t.Log(q.AsInt64()) } + +func TestReservation(t *testing.T) { + pool := v1.StoragePool{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: v1.DefaultNamespace, + Name: "node1", + Labels: map[string]string{}, + }, + Spec: v1.StoragePoolSpec{ + NodeInfo: v1.NodeInfo{ + ID: "node1", + }, + KernelLVM: v1.KernelLVM{ + Bytes: 38654705664, // 36864 MiB + ReservedLVol: []v1.KernelLVol{ + { + Name: "reserved-lv", + SizeByte: 1024 * 1024 * 100, // 100MiB + }, + }, + }, + }, + Status: v1.StoragePoolStatus{ + Capacity: corev1.ResourceList{ + v1.ResourceDiskPoolByte: resource.MustParse("36864Mi"), + }, + }, + } + node := NewNode(&pool) + + node.Reserve(NewReservation("resv-id", 1024*1024*100)) + + t.Log(node.FreeResource.Storage().String()) + +} From 2b0ec0ee86241f6507e91e565f4f12874b38ed58 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 28 Dec 2023 15:32:28 +0800 Subject: [PATCH 07/11] fix node adding volume --- pkg/controller/manager/state/node.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/controller/manager/state/node.go b/pkg/controller/manager/state/node.go index cd3cce5..131b9d7 100644 --- a/pkg/controller/manager/state/node.go +++ b/pkg/controller/manager/state/node.go @@ -63,6 +63,7 @@ func (n *Node) AddVolume(vol *v1.AntstorVolume) (err error) { defer n.volLock.Unlock() var nodeID = n.Info.ID + var duplicate bool // delete reservation if volume has reservation id if resvID := getVolumeReservationID(vol); resvID != "" { @@ -83,13 +84,15 @@ func (n *Node) AddVolume(vol *v1.AntstorVolume) (err error) { // save the newer volume *item = *vol.DeepCopy() klog.Infof("vol %s already in node %s. type and sizes equal to each other", vol.Name, nodeID) - return + duplicate = true } } - n.Volumes = append(n.Volumes, vol) - // volume reside on Node - vol.Spec.TargetNodeId = n.Pool.Spec.NodeInfo.ID + if !duplicate { + // volume reside on Node + vol.Spec.TargetNodeId = n.Pool.Spec.NodeInfo.ID + n.Volumes = append(n.Volumes, vol) + } // update free resource n.FreeResource = n.GetFreeResourceNonLock() From 4abc3278c2b08e84b3741ee263e76d8c4c6da306 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Tue, 9 Jan 2024 16:45:14 +0800 Subject: [PATCH 08/11] bugfix: node extended resource is not updated --- cmd/controller/antplugins/localstorage.go | 28 +++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/cmd/controller/antplugins/localstorage.go b/cmd/controller/antplugins/localstorage.go index 1aef29f..4934aba 100644 --- a/cmd/controller/antplugins/localstorage.go +++ b/cmd/controller/antplugins/localstorage.go @@ -5,7 +5,9 @@ import ( "fmt" "strconv" + corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" v1 "code.alipay.com/dbplatform/node-disk-controller/pkg/api/volume.antstor.alipay.com/v1" "code.alipay.com/dbplatform/node-disk-controller/pkg/controller/kubeutil" @@ -41,6 +43,7 @@ func NewReportLocalStoragePlugin(h *controllers.PluginHandle) (p plugin.Plugin, } p = &ReportLocalStoragePlugin{ + Client: h.Client, NodeUpdater: kubeutil.NewKubeNodeInfoGetter(h.Req.KubeCli), PoolUtil: kubeutil.NewStoragePoolUtil(h.Client), ReportLocalConfigs: pluginCfg.DefaultLocalSpaceRules, @@ -50,7 +53,7 @@ func NewReportLocalStoragePlugin(h *controllers.PluginHandle) (p plugin.Plugin, // ReportLocalStoragePlugin is a AntstorVolume plugin. type ReportLocalStoragePlugin struct { - // NodeGetter kubeutil.NodeInfoGetterIface + Client client.Client NodeUpdater kubeutil.NodeUpdaterIface PoolUtil kubeutil.StoragePoolUpdater @@ -96,10 +99,27 @@ func (r *ReportLocalStoragePlugin) Reconcile(ctx *plugin.Context) (result plugin // report the local storage when the StoragePool is created in the first place. if isPool && pool != nil { - totalBs := pool.GetAvailableBytes() - if _, has := pool.Labels[v1.PoolLocalStorageBytesKey]; !has { + var ( + totalBs int64 + node corev1.Node + hasNodeRes bool + hasPoolLabel bool + ) + + totalBs = pool.GetAvailableBytes() + err = r.Client.Get(ctx.ReqCtx.Ctx, client.ObjectKey{Name: pool.Name}, &node) + if err != nil { + log.Error(err, "getting Node failed") + return plugin.Result{Error: err} + } + + _, hasNodeRes = node.Status.Allocatable[kubeutil.SdsLocalStorageResourceKey] + _, hasPoolLabel = pool.Labels[v1.PoolLocalStorageBytesKey] + log.Info("check pool PoolLocalStorageBytesKey and node SdsLocalStorageResourceKey", "nodeResource", hasNodeRes, "hasPoolLabel", hasPoolLabel) + + if !hasPoolLabel || !hasNodeRes { log.Info("update node/status capacity", "local-storage", totalBs) - // update Pool Label "obnvmf/node-local-storage-size" = totalBs + // update Pool Label "obnvmf/local-storage-bytes" = totalBs err = r.PoolUtil.SavePoolLocalStorageMark(pool, uint64(totalBs)) if err != nil { log.Error(err, "SavePoolLocalStorageMark failed") From 61d0c72839d58388fbd250e7c53e857380987787 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Thu, 11 Jan 2024 11:08:28 +0800 Subject: [PATCH 09/11] bugfix: node extended resource is not updated --- cmd/controller/antplugins/localstorage.go | 41 ++++++++--------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/cmd/controller/antplugins/localstorage.go b/cmd/controller/antplugins/localstorage.go index 4934aba..cf3ba19 100644 --- a/cmd/controller/antplugins/localstorage.go +++ b/cmd/controller/antplugins/localstorage.go @@ -100,13 +100,22 @@ func (r *ReportLocalStoragePlugin) Reconcile(ctx *plugin.Context) (result plugin // report the local storage when the StoragePool is created in the first place. if isPool && pool != nil { var ( - totalBs int64 + localBS uint64 node corev1.Node + snode *state.Node hasNodeRes bool hasPoolLabel bool ) - totalBs = pool.GetAvailableBytes() + // calculate local storage + snode, err = stateObj.GetNodeByNodeID(pool.Name) + if err != nil { + log.Error(err, "find node failed") + return plugin.Result{Error: err} + } + localBS = CalculateLocalStorageCapacity(snode) + + // get node err = r.Client.Get(ctx.ReqCtx.Ctx, client.ObjectKey{Name: pool.Name}, &node) if err != nil { log.Error(err, "getting Node failed") @@ -118,16 +127,16 @@ func (r *ReportLocalStoragePlugin) Reconcile(ctx *plugin.Context) (result plugin log.Info("check pool PoolLocalStorageBytesKey and node SdsLocalStorageResourceKey", "nodeResource", hasNodeRes, "hasPoolLabel", hasPoolLabel) if !hasPoolLabel || !hasNodeRes { - log.Info("update node/status capacity", "local-storage", totalBs) + log.Info("update node/status capacity", "local-storage", localBS) // update Pool Label "obnvmf/local-storage-bytes" = totalBs - err = r.PoolUtil.SavePoolLocalStorageMark(pool, uint64(totalBs)) + err = r.PoolUtil.SavePoolLocalStorageMark(pool, localBS) if err != nil { log.Error(err, "SavePoolLocalStorageMark failed") return plugin.Result{Error: err} } // update node/status capacity = totalBs - _, err = r.NodeUpdater.ReportLocalDiskResource(pool.Name, uint64(totalBs)) + _, err = r.NodeUpdater.ReportLocalDiskResource(pool.Name, localBS) if err != nil { log.Error(err, "ReportLocalDiskResource failed") return plugin.Result{Error: err} @@ -146,28 +155,6 @@ func (r *ReportLocalStoragePlugin) Reconcile(ctx *plugin.Context) (result plugin } var sp = node.Pool - /* - var localStorePct int - var volInState *v1.AntstorVolume - for _, item := range r.ReportLocalConfigs { - selector, err := metav1.LabelSelectorAsSelector(&item.LabelSelector) - if err != nil { - log.Error(err, "LabelSelectorAsSelector failed", "selector", item.LabelSelector) - continue - } - if selector.Matches(labels.Set(sp.Spec.NodeInfo.Labels)) && item.EnableDefault { - localStorePct = item.DefaultLocalStoragePct - log.Info("matched local-storage percentage", "pct", localStorePct) - } - } - - volInState, err = node.GetVolumeByID(volume.Spec.Uuid) - if err == nil { - log.Info("copy volume into state") - *volInState = *volume - } - */ - var expectLocalSize = CalculateLocalStorageCapacity(node) var localSizeStr = strconv.Itoa(int(expectLocalSize)) log.Info("compare local storage size", "in label", sp.Labels[v1.PoolLocalStorageBytesKey], "expect", localSizeStr, "delTS", volume.DeletionTimestamp) From 0cef59331ff67e633f1a74200784e61c4bbb0f11 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Wed, 24 Jan 2024 11:44:24 +0800 Subject: [PATCH 10/11] add wechat group qrcode --- README.md | 7 +++++++ doc/image/wechat_group.JPG | Bin 0 -> 113676 bytes 2 files changed, 7 insertions(+) create mode 100644 doc/image/wechat_group.JPG diff --git a/README.md b/README.md index 66fe00c..5ffb61d 100644 --- a/README.md +++ b/README.md @@ -97,3 +97,10 @@ However, it is important to note that LiteIO does not currently support data rep - [x] Disk-Agent exposes metric service - [ ] SPDK volume replica + + +## Contact + +Wechat Group QRCode + +![Wechat Group](doc/image/wechat_group.JPG) \ No newline at end of file diff --git a/doc/image/wechat_group.JPG b/doc/image/wechat_group.JPG new file mode 100644 index 0000000000000000000000000000000000000000..adf3cb2f591849a602129bfa5c309349bf5ba44a GIT binary patch literal 113676 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�XXn!!Yt8I6Pa8{Ll}2+lfk`t&A>W{;)K7R zbh(dEL7>W@OOcE@kEjfyh}Y$ewF#i!x{fPt%BwCfGq|C3s8I#R#%hm=i1t+JRU1){dc?1LzsP1lB+lH*xpj;u+1b-x4AF8@BCV?KGOPE$WPGsQkX@ z9g5l&QCf$7HJ*^DJ8b@TZOwD_b)w#DPszzG+;6T5K*F6T%(lM0P1Rl}APu`FldH;G{@bIp^XAudeNdj8WR_GyaeJ znvDzWH#7#S#jEKoQCZB$;ON0{8myuCZ_bNX9xQ)Zk`#*Mj~ZX%e(U|-7vg^)2?k{% zo3$?Ly>!2HdeO6;*Hk69it-AdKNo!SFvKan>SL?fb=cz7SD8 zYqv~P;EB{xs=Vm`&$cKR{@Z*QIPLyz|Gtazl4mQz59Z&@{+97~Hs1nJrrRg;LF1}V z+V_8gfAy~W{`TxvvbTP7@%a9<$Gta!w?f|w$qm>yh2f!Z4uh}NgdX5QK|gEj4?a)+ zXIA`B30OII@g1K3yLRvTCypM#61H@IPyELGH;uoYe$11Xs;L6rm8vhDEfC%9@g8^w z6>xK$hsZQRo$ZF!9fyqt8Xl|6`qT*Y*fvmQKXKaM`F1kT{~fK>hBOiU_X(TTY5d6G zGhB7^3-HL3*Z20{TXm=IY4OXi>)UmK`D!|7YvanJl-56px$SN{U* zw}X@B)E%)0PKGZB)?&bAK=uA{z|yTL7bs(Ell{p0y~K~>57HY-W1~and9OZw`#fLf z<~uR|+G3L;Q!BWwcMC-V8)7Fd*XRB){%r{yxtddweV(uGd>zMy8vf<4gu7?2j%D}T vc6s5vgoP}dRJUZT`3+ozE!@EF6TrUZqQ_!pSXzd literal 0 HcmV?d00001 From f7a43f6bfc415740ee5e9a1d3f476272d6a9c4c9 Mon Sep 17 00:00:00 2001 From: "shenmu.wy" Date: Wed, 24 Jan 2024 11:45:19 +0800 Subject: [PATCH 11/11] comment nodeReservations --- hack/deploy/lvm/050-configmap.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hack/deploy/lvm/050-configmap.yaml b/hack/deploy/lvm/050-configmap.yaml index c70e611..d501efa 100644 --- a/hack/deploy/lvm/050-configmap.yaml +++ b/hack/deploy/lvm/050-configmap.yaml @@ -25,6 +25,9 @@ data: nodeTaints: - key: node.sigma.ali/lifecycle operator: Exists + #nodeReservations: + #- id: obnvmf/app-vol + # size: 107374182400 # 100Gi pluginConfigs: defaultLocalSpaceRules: - enableDefault: true