Fix upgrade to Kubernetes v1.9.3+
This commit is contained in:
parent
d78ef491de
commit
c15336e97a
@ -20,6 +20,7 @@ go_library(
|
|||||||
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
|
"//pkg/cloudprovider/providers/vsphere/vclib:go_default_library",
|
||||||
"//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:go_default_library",
|
"//pkg/cloudprovider/providers/vsphere/vclib/diskmanagers:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
"//vendor/github.com/golang/glog:go_default_library",
|
"//vendor/github.com/golang/glog:go_default_library",
|
||||||
"//vendor/github.com/vmware/govmomi/vim25:go_default_library",
|
"//vendor/github.com/vmware/govmomi/vim25:go_default_library",
|
||||||
"//vendor/github.com/vmware/govmomi/vim25/mo:go_default_library",
|
"//vendor/github.com/vmware/govmomi/vim25/mo:go_default_library",
|
||||||
|
@ -76,7 +76,11 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error {
|
|||||||
var globalErr *error
|
var globalErr *error
|
||||||
|
|
||||||
queueChannel = make(chan *VmSearch, QUEUE_SIZE)
|
queueChannel = make(chan *VmSearch, QUEUE_SIZE)
|
||||||
nodeUUID := GetUUIDFromProviderID(node.Spec.ProviderID)
|
nodeUUID, err := GetNodeUUID(node)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Node Discovery failed to get node uuid for node %s with error: %v", node.Name, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
glog.V(4).Infof("Discovering node %s with uuid %s", node.ObjectMeta.Name, nodeUUID)
|
glog.V(4).Infof("Discovering node %s with uuid %s", node.ObjectMeta.Name, nodeUUID)
|
||||||
|
|
||||||
|
@ -587,7 +587,8 @@ func (vs *VSphere) InstanceExistsByProviderID(ctx context.Context, providerID st
|
|||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
if node.VMUUID == GetUUIDFromProviderID(providerID) {
|
// ProviderID is UUID for nodes v1.9.3+
|
||||||
|
if node.VMUUID == GetUUIDFromProviderID(providerID) || node.NodeName == providerID {
|
||||||
nodeName = node.NodeName
|
nodeName = node.NodeName
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -29,13 +29,14 @@ import (
|
|||||||
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"path/filepath"
|
|
||||||
|
|
||||||
"github.com/vmware/govmomi/vim25/mo"
|
"github.com/vmware/govmomi/vim25/mo"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
k8stypes "k8s.io/apimachinery/pkg/types"
|
k8stypes "k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers"
|
||||||
|
"k8s.io/kubernetes/pkg/util/version"
|
||||||
|
"path/filepath"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -472,7 +473,12 @@ func (vs *VSphere) checkDiskAttached(ctx context.Context, nodes []k8stypes.NodeN
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nodesToRetry, err
|
return nodesToRetry, err
|
||||||
}
|
}
|
||||||
nodeUUID := strings.ToLower(GetUUIDFromProviderID(node.Spec.ProviderID))
|
nodeUUID, err := GetNodeUUID(&node)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Node Discovery failed to get node uuid for node %s with error: %v", node.Name, err)
|
||||||
|
return nodesToRetry, err
|
||||||
|
}
|
||||||
|
nodeUUID = strings.ToLower(nodeUUID)
|
||||||
glog.V(9).Infof("Verifying volume for node %s with nodeuuid %q: %s", nodeName, nodeUUID, vmMoMap)
|
glog.V(9).Infof("Verifying volume for node %s with nodeuuid %q: %s", nodeName, nodeUUID, vmMoMap)
|
||||||
vclib.VerifyVolumePathsForVM(vmMoMap[nodeUUID], nodeVolumes[nodeName], convertToString(nodeName), attached)
|
vclib.VerifyVolumePathsForVM(vmMoMap[nodeUUID], nodeVolumes[nodeName], convertToString(nodeName), attached)
|
||||||
}
|
}
|
||||||
@ -542,3 +548,32 @@ func GetVMUUID() (string, error) {
|
|||||||
func GetUUIDFromProviderID(providerID string) string {
|
func GetUUIDFromProviderID(providerID string) string {
|
||||||
return strings.TrimPrefix(providerID, ProviderPrefix)
|
return strings.TrimPrefix(providerID, ProviderPrefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsUUIDSupportedNode(node *v1.Node) (bool, error) {
|
||||||
|
newVersion, err := version.ParseSemantic("v1.9.4")
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Failed to determine whether node %+v is old with error %v", node, err)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
nodeVersion, err := version.ParseSemantic(node.Status.NodeInfo.KubeletVersion)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Failed to determine whether node %+v is old with error %v", node, err)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if nodeVersion.LessThan(newVersion) {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNodeUUID(node *v1.Node) (string, error) {
|
||||||
|
oldNode, err := IsUUIDSupportedNode(node)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Failed to get node UUID for node %+v with error %v", node, err)
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if oldNode {
|
||||||
|
return node.Status.NodeInfo.SystemUUID, nil
|
||||||
|
}
|
||||||
|
return GetUUIDFromProviderID(node.Spec.ProviderID), nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user