mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Lock GCERegionalPersistentDisk feature on
This commit is contained in:
parent
5b47a92ad8
commit
63ddfc1db9
@ -52,7 +52,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
||||||
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
"//staging/src/k8s.io/client-go/informers:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
||||||
@ -62,7 +61,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/record:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
"//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/features:go_default_library",
|
|
||||||
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/service/helpers:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume/errors:go_default_library",
|
||||||
|
@ -37,8 +37,6 @@ import (
|
|||||||
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
|
"github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta"
|
||||||
compute "google.golang.org/api/compute/v1"
|
compute "google.golang.org/api/compute/v1"
|
||||||
"google.golang.org/api/googleapi"
|
"google.golang.org/api/googleapi"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
cloudfeatures "k8s.io/cloud-provider/features"
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -146,10 +144,6 @@ func (manager *gceServiceManager) CreateRegionalDiskOnCloudProvider(
|
|||||||
diskType string,
|
diskType string,
|
||||||
replicaZones sets.String) error {
|
replicaZones sets.String) error {
|
||||||
|
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
|
|
||||||
}
|
|
||||||
|
|
||||||
diskTypeURI, err := manager.getDiskTypeURI(
|
diskTypeURI, err := manager.getDiskTypeURI(
|
||||||
manager.gce.region /* diskRegion */, multiZone{replicaZones}, diskType)
|
manager.gce.region /* diskRegion */, multiZone{replicaZones}, diskType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -247,10 +241,6 @@ func (manager *gceServiceManager) GetDiskFromCloudProvider(
|
|||||||
func (manager *gceServiceManager) GetRegionalDiskFromCloudProvider(
|
func (manager *gceServiceManager) GetRegionalDiskFromCloudProvider(
|
||||||
diskName string) (*Disk, error) {
|
diskName string) (*Disk, error) {
|
||||||
|
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return nil, fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx, cancel := cloud.ContextWithCallTimeout()
|
ctx, cancel := cloud.ContextWithCallTimeout()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
diskBeta, err := manager.gce.c.RegionDisks().Get(ctx, meta.RegionalKey(diskName, manager.gce.region))
|
diskBeta, err := manager.gce.c.RegionDisks().Get(ctx, meta.RegionalKey(diskName, manager.gce.region))
|
||||||
@ -284,10 +274,6 @@ func (manager *gceServiceManager) DeleteDiskOnCloudProvider(
|
|||||||
func (manager *gceServiceManager) DeleteRegionalDiskOnCloudProvider(
|
func (manager *gceServiceManager) DeleteRegionalDiskOnCloudProvider(
|
||||||
diskName string) error {
|
diskName string) error {
|
||||||
|
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx, cancel := cloud.ContextWithCallTimeout()
|
ctx, cancel := cloud.ContextWithCallTimeout()
|
||||||
defer cancel()
|
defer cancel()
|
||||||
return manager.gce.c.RegionDisks().Delete(ctx, meta.RegionalKey(diskName, manager.gce.region))
|
return manager.gce.c.RegionDisks().Delete(ctx, meta.RegionalKey(diskName, manager.gce.region))
|
||||||
@ -411,9 +397,6 @@ func (manager *gceServiceManager) ResizeDiskOnCloudProvider(disk *Disk, sizeGb i
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (manager *gceServiceManager) RegionalResizeDiskOnCloudProvider(disk *Disk, sizeGb int64) error {
|
func (manager *gceServiceManager) RegionalResizeDiskOnCloudProvider(disk *Disk, sizeGb int64) error {
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
|
|
||||||
}
|
|
||||||
|
|
||||||
resizeServiceRequest := &compute.RegionDisksResizeRequest{
|
resizeServiceRequest := &compute.RegionDisksResizeRequest{
|
||||||
SizeGb: sizeGb,
|
SizeGb: sizeGb,
|
||||||
@ -532,7 +515,7 @@ func (g *Cloud) AttachDisk(diskName string, nodeName types.NodeName, readOnly bo
|
|||||||
// Try fetching as regional PD
|
// Try fetching as regional PD
|
||||||
var disk *Disk
|
var disk *Disk
|
||||||
var mc *metricContext
|
var mc *metricContext
|
||||||
if regional && utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
if regional {
|
||||||
disk, err = g.getRegionalDiskByName(diskName)
|
disk, err = g.getRegionalDiskByName(diskName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -768,10 +751,6 @@ func (g *Cloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, newSi
|
|||||||
}
|
}
|
||||||
return newSizeQuant, mc.Observe(err)
|
return newSizeQuant, mc.Observe(err)
|
||||||
case multiZone:
|
case multiZone:
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return oldSize, fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
mc = newDiskMetricContextRegional("resize", disk.Region)
|
mc = newDiskMetricContextRegional("resize", disk.Region)
|
||||||
err := g.manager.RegionalResizeDiskOnCloudProvider(disk, requestGIB)
|
err := g.manager.RegionalResizeDiskOnCloudProvider(disk, requestGIB)
|
||||||
|
|
||||||
@ -811,7 +790,6 @@ func (g *Cloud) GetAutoLabelsForPD(name string, zone string) (map[string]string,
|
|||||||
// We could assume the disks exists; we have all the information we need
|
// We could assume the disks exists; we have all the information we need
|
||||||
// However it is more consistent to ensure the disk exists,
|
// However it is more consistent to ensure the disk exists,
|
||||||
// and in future we may gather addition information (e.g. disk type, IOPS etc)
|
// and in future we may gather addition information (e.g. disk type, IOPS etc)
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
zoneSet, err := volumehelpers.LabelZonesToSet(zone)
|
zoneSet, err := volumehelpers.LabelZonesToSet(zone)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Warningf("Failed to parse zone field: %q. Will use raw field.", zone)
|
klog.Warningf("Failed to parse zone field: %q. Will use raw field.", zone)
|
||||||
@ -830,12 +808,6 @@ func (g *Cloud) GetAutoLabelsForPD(name string, zone string) (map[string]string,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
disk, err = g.getDiskByName(name, zone)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
labels := make(map[string]string)
|
labels := make(map[string]string)
|
||||||
@ -916,12 +888,10 @@ func (g *Cloud) getRegionalDiskByName(diskName string) (*Disk, error) {
|
|||||||
// Prefer getDiskByName, if the zone can be established
|
// Prefer getDiskByName, if the zone can be established
|
||||||
// Return cloudprovider.DiskNotFound if the given disk cannot be found in any zone
|
// Return cloudprovider.DiskNotFound if the given disk cannot be found in any zone
|
||||||
func (g *Cloud) GetDiskByNameUnknownZone(diskName string) (*Disk, error) {
|
func (g *Cloud) GetDiskByNameUnknownZone(diskName string) (*Disk, error) {
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
regionalDisk, err := g.getRegionalDiskByName(diskName)
|
regionalDisk, err := g.getRegionalDiskByName(diskName)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return regionalDisk, err
|
return regionalDisk, err
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Note: this is the gotcha right now with GCE PD support:
|
// Note: this is the gotcha right now with GCE PD support:
|
||||||
// disk names are not unique per-region.
|
// disk names are not unique per-region.
|
||||||
@ -996,10 +966,6 @@ func (g *Cloud) doDeleteDisk(diskToDelete string) error {
|
|||||||
mc = newDiskMetricContextZonal("delete", disk.Region, zoneInfo.zone)
|
mc = newDiskMetricContextZonal("delete", disk.Region, zoneInfo.zone)
|
||||||
return mc.Observe(g.manager.DeleteDiskOnCloudProvider(zoneInfo.zone, disk.Name))
|
return mc.Observe(g.manager.DeleteDiskOnCloudProvider(zoneInfo.zone, disk.Name))
|
||||||
case multiZone:
|
case multiZone:
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
mc = newDiskMetricContextRegional("delete", disk.Region)
|
mc = newDiskMetricContextRegional("delete", disk.Region)
|
||||||
return mc.Observe(g.manager.DeleteRegionalDiskOnCloudProvider(disk.Name))
|
return mc.Observe(g.manager.DeleteRegionalDiskOnCloudProvider(disk.Name))
|
||||||
case nil:
|
case nil:
|
||||||
|
@ -486,7 +486,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
|
|||||||
TokenRequestProjection: {Default: true, PreRelease: utilfeature.Beta},
|
TokenRequestProjection: {Default: true, PreRelease: utilfeature.Beta},
|
||||||
BoundServiceAccountTokenVolume: {Default: false, PreRelease: utilfeature.Alpha},
|
BoundServiceAccountTokenVolume: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
CRIContainerLogRotation: {Default: true, PreRelease: utilfeature.Beta},
|
CRIContainerLogRotation: {Default: true, PreRelease: utilfeature.Beta},
|
||||||
cloudfeatures.GCERegionalPersistentDisk: {Default: true, PreRelease: utilfeature.GA},
|
cloudfeatures.GCERegionalPersistentDisk: {Default: true, PreRelease: utilfeature.GA, LockToDefault: true}, // remove in 1.17
|
||||||
CSIMigration: {Default: false, PreRelease: utilfeature.Alpha},
|
CSIMigration: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
CSIMigrationGCE: {Default: false, PreRelease: utilfeature.Alpha},
|
CSIMigrationGCE: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
CSIMigrationAWS: {Default: false, PreRelease: utilfeature.Alpha},
|
CSIMigrationAWS: {Default: false, PreRelease: utilfeature.Alpha},
|
||||||
|
@ -30,7 +30,6 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
"//staging/src/k8s.io/cloud-provider:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/features:go_default_library",
|
|
||||||
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume:go_default_library",
|
||||||
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
"//staging/src/k8s.io/cloud-provider/volume/helpers:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
@ -25,9 +25,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
cloudfeatures "k8s.io/cloud-provider/features"
|
|
||||||
cloudvolume "k8s.io/cloud-provider/volume"
|
cloudvolume "k8s.io/cloud-provider/volume"
|
||||||
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
volumehelpers "k8s.io/cloud-provider/volume/helpers"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
@ -127,11 +125,6 @@ func (util *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner, node *v1.
|
|||||||
return "", 0, nil, "", err
|
return "", 0, nil, "", err
|
||||||
}
|
}
|
||||||
case "replication-type":
|
case "replication-type":
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
|
|
||||||
return "", 0, nil, "",
|
|
||||||
fmt.Errorf("the %q option for volume plugin %v is only supported with the %q Kubernetes feature gate enabled",
|
|
||||||
k, c.plugin.GetPluginName(), cloudfeatures.GCERegionalPersistentDisk)
|
|
||||||
}
|
|
||||||
replicationType = strings.ToLower(v)
|
replicationType = strings.ToLower(v)
|
||||||
case volume.VolumeParameterFSType:
|
case volume.VolumeParameterFSType:
|
||||||
fstype = v
|
fstype = v
|
||||||
|
Loading…
Reference in New Issue
Block a user