mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
use GA topology labels for vsphere
This commit is contained in:
parent
bd0196e8ba
commit
518844fd25
@ -433,7 +433,7 @@ func (v *vsphereVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopol
|
|||||||
for k, v := range labels {
|
for k, v := range labels {
|
||||||
pv.Labels[k] = v
|
pv.Labels[k] = v
|
||||||
var values []string
|
var values []string
|
||||||
if k == v1.LabelFailureDomainBetaZone {
|
if k == v1.LabelTopologyZone || k == v1.LabelFailureDomainBetaZone {
|
||||||
values, err = volumehelpers.LabelZonesToList(v)
|
values, err = volumehelpers.LabelZonesToList(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to convert label string for Zone: %s to a List: %v", v, err)
|
return nil, fmt.Errorf("failed to convert label string for Zone: %s to a List: %v", v, err)
|
||||||
|
@ -29,6 +29,16 @@ import (
|
|||||||
func TestTranslatevSphereInTreeStorageClassToCSI(t *testing.T) {
|
func TestTranslatevSphereInTreeStorageClassToCSI(t *testing.T) {
|
||||||
translator := NewvSphereCSITranslator()
|
translator := NewvSphereCSITranslator()
|
||||||
topologySelectorTerm := v1.TopologySelectorTerm{[]v1.TopologySelectorLabelRequirement{
|
topologySelectorTerm := v1.TopologySelectorTerm{[]v1.TopologySelectorLabelRequirement{
|
||||||
|
{
|
||||||
|
Key: v1.LabelTopologyZone,
|
||||||
|
Values: []string{"zone-a"},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Key: v1.LabelTopologyRegion,
|
||||||
|
Values: []string{"region-a"},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
topologySelectorTermWithBetaLabels := v1.TopologySelectorTerm{[]v1.TopologySelectorLabelRequirement{
|
||||||
{
|
{
|
||||||
Key: v1.LabelFailureDomainBetaZone,
|
Key: v1.LabelFailureDomainBetaZone,
|
||||||
Values: []string{"zone-a"},
|
Values: []string{"zone-a"},
|
||||||
@ -85,6 +95,11 @@ func TestTranslatevSphereInTreeStorageClassToCSI(t *testing.T) {
|
|||||||
sc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
sc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
||||||
expSc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name", paramcsiMigration: "true"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
expSc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name", paramcsiMigration: "true"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "translate with storagepolicyname and allowedTopology beta labels",
|
||||||
|
sc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name"}, []v1.TopologySelectorTerm{topologySelectorTermWithBetaLabels}),
|
||||||
|
expSc: NewStorageClass(map[string]string{"storagepolicyname": "test-policy-name", paramcsiMigration: "true"}, []v1.TopologySelectorTerm{topologySelectorTermWithBetaLabels}),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "translate with raw vSAN policy parameters, datastore and diskformat",
|
name: "translate with raw vSAN policy parameters, datastore and diskformat",
|
||||||
sc: NewStorageClass(map[string]string{"hostfailurestotolerate": "2", "datastore": "vsanDatastore", "diskformat": "thin"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
sc: NewStorageClass(map[string]string{"hostfailurestotolerate": "2", "datastore": "vsanDatastore", "diskformat": "thin"}, []v1.TopologySelectorTerm{topologySelectorTerm}),
|
||||||
|
@ -219,8 +219,8 @@ func (nm *NodeManager) DiscoverNode(node *v1.Node) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Get the node zone information
|
// Get the node zone information
|
||||||
nodeFd := node.ObjectMeta.Labels[v1.LabelFailureDomainBetaZone]
|
nodeFd := node.ObjectMeta.Labels[v1.LabelTopologyZone]
|
||||||
nodeRegion := node.ObjectMeta.Labels[v1.LabelFailureDomainBetaRegion]
|
nodeRegion := node.ObjectMeta.Labels[v1.LabelTopologyRegion]
|
||||||
nodeZone := &cloudprovider.Zone{FailureDomain: nodeFd, Region: nodeRegion}
|
nodeZone := &cloudprovider.Zone{FailureDomain: nodeFd, Region: nodeRegion}
|
||||||
nodeInfo := &NodeInfo{dataCenter: res.datacenter, vm: vm, vcServer: res.vc, vmUUID: nodeUUID, zone: nodeZone}
|
nodeInfo := &NodeInfo{dataCenter: res.datacenter, vm: vm, vcServer: res.vc, vmUUID: nodeUUID, zone: nodeZone}
|
||||||
nm.addNodeInfo(node.ObjectMeta.Name, nodeInfo)
|
nm.addNodeInfo(node.ObjectMeta.Name, nodeInfo)
|
||||||
|
@ -1776,8 +1776,8 @@ func (vs *VSphere) GetVolumeLabels(volumePath string) (map[string]string, error)
|
|||||||
// FIXME: For now, pick the first zone of datastore as the zone of volume
|
// FIXME: For now, pick the first zone of datastore as the zone of volume
|
||||||
labels := make(map[string]string)
|
labels := make(map[string]string)
|
||||||
if len(dsZones) > 0 {
|
if len(dsZones) > 0 {
|
||||||
labels[v1.LabelFailureDomainBetaRegion] = dsZones[0].Region
|
labels[v1.LabelTopologyRegion] = dsZones[0].Region
|
||||||
labels[v1.LabelFailureDomainBetaZone] = dsZones[0].FailureDomain
|
labels[v1.LabelTopologyZone] = dsZones[0].FailureDomain
|
||||||
}
|
}
|
||||||
return labels, nil
|
return labels, nil
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ func getVSphereStorageClassSpec(name string, scParameters map[string]string, zon
|
|||||||
term := v1.TopologySelectorTerm{
|
term := v1.TopologySelectorTerm{
|
||||||
MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{
|
MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{
|
||||||
{
|
{
|
||||||
Key: v1.LabelFailureDomainBetaZone,
|
Key: v1.LabelTopologyZone,
|
||||||
Values: zones,
|
Values: zones,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -369,7 +369,7 @@ var _ = utils.SIGDescribe("Zone Support [Feature:vsphere]", func() {
|
|||||||
zones = append(zones, zoneA)
|
zones = append(zones, zoneA)
|
||||||
nodeSelectorMap := map[string]string{
|
nodeSelectorMap := map[string]string{
|
||||||
// nodeSelector set as zoneB
|
// nodeSelector set as zoneB
|
||||||
v1.LabelFailureDomainBetaZone: zoneB,
|
v1.LabelTopologyZone: zoneB,
|
||||||
}
|
}
|
||||||
verifyPodSchedulingFails(client, namespace, nodeSelectorMap, scParameters, zones, storagev1.VolumeBindingWaitForFirstConsumer)
|
verifyPodSchedulingFails(client, namespace, nodeSelectorMap, scParameters, zones, storagev1.VolumeBindingWaitForFirstConsumer)
|
||||||
})
|
})
|
||||||
@ -518,7 +518,7 @@ func verifyPVZoneLabels(client clientset.Interface, timeouts *framework.TimeoutC
|
|||||||
ginkgo.By("Verify zone information is present in the volume labels")
|
ginkgo.By("Verify zone information is present in the volume labels")
|
||||||
for _, pv := range persistentvolumes {
|
for _, pv := range persistentvolumes {
|
||||||
// Multiple zones are separated with "__"
|
// Multiple zones are separated with "__"
|
||||||
pvZoneLabels := strings.Split(pv.ObjectMeta.Labels["failure-domain.beta.kubernetes.io/zone"], "__")
|
pvZoneLabels := strings.Split(pv.ObjectMeta.Labels[v1.LabelTopologyZone], "__")
|
||||||
for _, zone := range zones {
|
for _, zone := range zones {
|
||||||
gomega.Expect(pvZoneLabels).Should(gomega.ContainElement(zone), "Incorrect or missing zone labels in pv.")
|
gomega.Expect(pvZoneLabels).Should(gomega.ContainElement(zone), "Incorrect or missing zone labels in pv.")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user