Skip to content

Commit

Permalink
disk: use centralized node metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
huww98 committed Oct 9, 2023
1 parent 218de93 commit 329c8c4
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 85 deletions.
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ func main() {
case TypePluginDISK:
go func(endPoint string) {
defer wg.Done()
driver := disk.NewDriver(*nodeID, endPoint, *runAsController)
driver := disk.NewDriver(meta, endPoint, *runAsController)
driver.Run()
}(endPointName)

Expand Down
4 changes: 0 additions & 4 deletions pkg/disk/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,10 +146,6 @@ const (
instanceTypeLabel = "beta.kubernetes.io/instance-type"
// zoneIDLabel ...
zoneIDLabel = "failure-domain.beta.kubernetes.io/zone"
// zoneIDLabelN ...
zoneIDLabelNew = "topology.kubernetes.io/zone"
// zoneIDLabelN ...
regionIDLabelNew = "topology.kubernetes.io/region"
// sigmaLabel instance type ...
sigmaInstanceTypeLabel = "sigma.ali/machine-model"
// sigmaLabel zoneid ....
Expand Down
32 changes: 8 additions & 24 deletions pkg/disk/disk.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"github.com/container-storage-interface/spec/lib/go/csi"
csicommon "github.com/kubernetes-csi/drivers/pkg/csi-common"
snapClientset "github.com/kubernetes-csi/external-snapshotter/client/v4/clientset/versioned"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/cloud/metadata"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/common"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/log"
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/options"
Expand Down Expand Up @@ -102,13 +103,13 @@ func initDriver() {
}

// NewDriver create the identity/node/controller server and disk driver
func NewDriver(nodeID, endpoint string, runAsController bool) *DISK {
func NewDriver(m metadata.MetadataProvider, endpoint string, runAsController bool) *DISK {
initDriver()
tmpdisk := &DISK{}
tmpdisk.endpoint = endpoint

// Config Global vars
cfg := GlobalConfigSet(nodeID)
cfg := GlobalConfigSet(m)

csiDriver := csicommon.NewCSIDriver(driverName, csiVersion, GlobalConfigVar.NodeID)
tmpdisk.driver = csiDriver
Expand Down Expand Up @@ -154,7 +155,7 @@ func (disk *DISK) Run() {
}

// GlobalConfigSet set Global Config
func GlobalConfigSet(nodeID string) *restclient.Config {
func GlobalConfigSet(m metadata.MetadataProvider) *restclient.Config {
configMapName := "csi-plugin"
isADControllerEnable := false
isDiskTagEnable := false
Expand Down Expand Up @@ -329,33 +330,16 @@ func GlobalConfigSet(nodeID string) *restclient.Config {

nodeName := os.Getenv(kubeNodeName)
runtimeValue := "runc"
var regionID, zoneID, vmID string
nodeInfo, err := kubeClient.CoreV1().Nodes().Get(context.Background(), nodeName, metav1.GetOptions{})
if err != nil {
log.Log.Errorf("GlobalConfigSet: get node %s with error: %s", nodeName, err.Error())
regionID, _ = utils.GetRegionID()
} else {
if value, ok := nodeInfo.Labels["alibabacloud.com/container-runtime"]; ok && strings.TrimSpace(value) == "Sandboxed-Container.runv" {
if value, ok := nodeInfo.Labels["alibabacloud.com/container-runtime-version"]; ok && strings.HasPrefix(strings.TrimSpace(value), "1.") {
runtimeValue = MixRunTimeMode
}
}
log.Log.Infof("Describe node %s and Set RunTimeClass to %s", nodeName, runtimeValue)

regionID, zoneID, vmID = getMeta(nodeInfo)
log.Log.Infof("NewNodeServer: get instance meta info from metadataserver, regionID: %s, zoneID: %s, vmID: %s", regionID, zoneID, vmID)

if nodeID == "" {
nodeID = vmID
}
}
if zoneID == "" || !strings.HasPrefix(vmID, "i-") {
doc, err := retryGetInstanceDoc()
log.Log.Infof("NewNodeServer: get instance meta info failed from metadataserver, err: %v, doc: %v", err, doc)
if err == nil {
zoneID = doc.ZoneID
nodeID = doc.InstanceID
}
}
runtimeEnv := os.Getenv("RUNTIME")
if runtimeEnv == MixRunTimeMode {
Expand Down Expand Up @@ -403,12 +387,12 @@ func GlobalConfigSet(nodeID string) *restclient.Config {
omitFsCheck = true
}

log.Log.Infof("Starting with GlobalConfigVar: region(%s), zone(%s), NodeID(%s), ADControllerEnable(%t), DiskTagEnable(%t), DiskBdfEnable(%t), MetricEnable(%t), RunTimeClass(%s), DetachDisabled(%t), DetachBeforeDelete(%t), ClusterID(%s)", regionID, zoneID, nodeID, isADControllerEnable, isDiskTagEnable, isDiskBdfEnable, isDiskMetricEnable, runtimeValue, isDiskDetachDisable, isDiskDetachBeforeDelete, clustID)
log.Log.Infof("Starting with GlobalConfigVar: ADControllerEnable(%t), DiskTagEnable(%t), DiskBdfEnable(%t), MetricEnable(%t), RunTimeClass(%s), DetachDisabled(%t), DetachBeforeDelete(%t), ClusterID(%s)", isADControllerEnable, isDiskTagEnable, isDiskBdfEnable, isDiskMetricEnable, runtimeValue, isDiskDetachDisable, isDiskDetachBeforeDelete, clustID)
// Global Config Set
GlobalConfigVar = GlobalConfig{
Region: regionID,
NodeID: nodeID,
ZoneID: zoneID,
Region: metadata.MustGet(m, metadata.RegionID),
NodeID: metadata.MustGet(m, metadata.InstanceID),
ZoneID: metadata.MustGet(m, metadata.ZoneID),
ADControllerEnable: isADControllerEnable,
DiskTagEnable: isDiskTagEnable,
DiskBdfEnable: isDiskBdfEnable,
Expand Down
16 changes: 0 additions & 16 deletions pkg/disk/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -1301,22 +1301,6 @@ func UpdateNode(nodes corev1.NodeInterface, c cloud.ECSInterface, maxDiskCount i
log.Info("UpdateNode:: finished")
}

func getMeta(node *v1.Node) (string, string, string) {
zoneID := ""
regionID := ""
if value := node.Labels[zoneIDLabelNew]; value != "" {
zoneID = value
}
if value := node.Labels[regionIDLabelNew]; value != "" {
log.Infof("getZoneID:: fix regionid value by: %s", value)
regionID = value
}
providerID := node.Spec.ProviderID
nodeID := utils.ParseProviderID(providerID)

return regionID, zoneID, nodeID
}

// getZoneID ...
func getZoneID(c *ecs.Client, instanceID string) (string, string) {

Expand Down
8 changes: 0 additions & 8 deletions pkg/utils/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -943,14 +943,6 @@ func WriteMetricsInfo(metricsPathPrefix string, req *csi.NodePublishVolumeReques
}
}

func ParseProviderID(providerID string) string {
providers := strings.Split(providerID, ".")
if len(providers) != 2 {
return ""
}
return providers[1]
}

// formatAndMount uses unix utils to format and mount the given disk
func FormatAndMount(diskMounter *k8smount.SafeFormatAndMount, source string, target string, fstype string, mkfsOptions []string, mountOptions []string, omitFsCheck bool) error {
log.Infof("formatAndMount: mount options : %+v", mountOptions)
Expand Down
32 changes: 0 additions & 32 deletions pkg/utils/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ limitations under the License.
package utils

import (
"github.com/stretchr/testify/assert"
"testing"
)

Expand Down Expand Up @@ -123,34 +122,3 @@ func TestCmdValid(t *testing.T) {
assert.Nil(t, CheckCmd(cmd, strings.Split(cmd, " ")[0]))
assert.Nil(t, CheckCmdArgs(cmd, strings.Split(cmd, " ")[1:]...))*/
}

func TestParseProviderID(t *testing.T) {
examples := []struct {
provider string
expectNodeID string
}{
{
provider: "cn-hangzhou.i-123456787894",
expectNodeID: "i-123456787894",
},
{
provider: "alicloud://cn-hangzhou.i-123456787894",
expectNodeID: "i-123456787894",
},
{
provider: "alicloud://cn-hangzhou",
expectNodeID: "",
},
{
provider: "alicloud://cn-hangzhou.i-xxxxxx.aaa",
expectNodeID: "",
},
}

for _, example := range examples {
t.Run(example.provider, func(t *testing.T) {
actualNodeId := ParseProviderID(example.provider)
assert.Equal(t, example.expectNodeID, actualNodeId)
})
}
}

0 comments on commit 329c8c4

Please sign in to comment.