mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-05 02:09:56 +00:00
Merge pull request #82472 from draveness/feature/remove-feature-gates-in-1-17
feat: cleanup several GA feature flags which should be removed in 1.17
This commit is contained in:
commit
3a19f1e80b
@ -50,7 +50,6 @@ import (
|
|||||||
informers "k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1"
|
informers "k8s.io/kube-aggregator/pkg/client/informers/externalversions/apiregistration/v1"
|
||||||
"k8s.io/kube-aggregator/pkg/controllers/autoregister"
|
"k8s.io/kube-aggregator/pkg/controllers/autoregister"
|
||||||
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
|
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
|
||||||
kubefeatures "k8s.io/kubernetes/pkg/features"
|
|
||||||
"k8s.io/kubernetes/pkg/master/controller/crdregistration"
|
"k8s.io/kubernetes/pkg/master/controller/crdregistration"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -110,11 +109,10 @@ func createAggregatorConfig(
|
|||||||
SharedInformerFactory: externalInformers,
|
SharedInformerFactory: externalInformers,
|
||||||
},
|
},
|
||||||
ExtraConfig: aggregatorapiserver.ExtraConfig{
|
ExtraConfig: aggregatorapiserver.ExtraConfig{
|
||||||
ProxyClientCert: certBytes,
|
ProxyClientCert: certBytes,
|
||||||
ProxyClientKey: keyBytes,
|
ProxyClientKey: keyBytes,
|
||||||
ServiceResolver: serviceResolver,
|
ServiceResolver: serviceResolver,
|
||||||
ProxyTransport: proxyTransport,
|
ProxyTransport: proxyTransport,
|
||||||
EnableAggregatedDiscoveryTimeout: utilfeature.DefaultFeatureGate.Enabled(kubefeatures.EnableAggregatedDiscoveryTimeout),
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,14 +83,6 @@ const (
|
|||||||
// the API server as the certificate approaches expiration.
|
// the API server as the certificate approaches expiration.
|
||||||
RotateKubeletClientCertificate featuregate.Feature = "RotateKubeletClientCertificate"
|
RotateKubeletClientCertificate featuregate.Feature = "RotateKubeletClientCertificate"
|
||||||
|
|
||||||
// owner: @msau42
|
|
||||||
// alpha: v1.7
|
|
||||||
// beta: v1.10
|
|
||||||
// ga: v1.14
|
|
||||||
//
|
|
||||||
// A new volume type that supports local disks on a node.
|
|
||||||
PersistentLocalVolumes featuregate.Feature = "PersistentLocalVolumes"
|
|
||||||
|
|
||||||
// owner: @jinxu
|
// owner: @jinxu
|
||||||
// beta: v1.10
|
// beta: v1.10
|
||||||
//
|
//
|
||||||
@ -435,12 +427,6 @@ const (
|
|||||||
// Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature.
|
// Enables the OpenStack Cinder in-tree driver to OpenStack Cinder CSI Driver migration feature.
|
||||||
CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack"
|
CSIMigrationOpenStack featuregate.Feature = "CSIMigrationOpenStack"
|
||||||
|
|
||||||
// owner: @verult
|
|
||||||
// GA: v1.13
|
|
||||||
//
|
|
||||||
// Enables the regional PD feature on GCE.
|
|
||||||
deprecatedGCERegionalPersistentDisk featuregate.Feature = "GCERegionalPersistentDisk"
|
|
||||||
|
|
||||||
// owner: @MrHohn
|
// owner: @MrHohn
|
||||||
// beta: v1.16
|
// beta: v1.16
|
||||||
//
|
//
|
||||||
@ -496,13 +482,6 @@ const (
|
|||||||
//
|
//
|
||||||
// Enables the startupProbe in kubelet worker.
|
// Enables the startupProbe in kubelet worker.
|
||||||
StartupProbe featuregate.Feature = "StartupProbe"
|
StartupProbe featuregate.Feature = "StartupProbe"
|
||||||
|
|
||||||
// owner @deads2k
|
|
||||||
// deprecated: v1.16
|
|
||||||
//
|
|
||||||
// Enable the aggregated discovery timeout to ensure client responsiveness. Note this feature is present
|
|
||||||
// only for backward compatibility, it will be removed in the 1.17 release.
|
|
||||||
EnableAggregatedDiscoveryTimeout featuregate.Feature = "EnableAggregatedDiscoveryTimeout"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -516,66 +495,64 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
AppArmor: {Default: true, PreRelease: featuregate.Beta},
|
AppArmor: {Default: true, PreRelease: featuregate.Beta},
|
||||||
DynamicKubeletConfig: {Default: true, PreRelease: featuregate.Beta},
|
DynamicKubeletConfig: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Beta},
|
ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: featuregate.Beta},
|
||||||
DevicePlugins: {Default: true, PreRelease: featuregate.Beta},
|
DevicePlugins: {Default: true, PreRelease: featuregate.Beta},
|
||||||
TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta},
|
TaintBasedEvictions: {Default: true, PreRelease: featuregate.Beta},
|
||||||
RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
|
RotateKubeletServerCertificate: {Default: true, PreRelease: featuregate.Beta},
|
||||||
RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta},
|
RotateKubeletClientCertificate: {Default: true, PreRelease: featuregate.Beta},
|
||||||
PersistentLocalVolumes: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.17
|
LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta},
|
||||||
LocalStorageCapacityIsolation: {Default: true, PreRelease: featuregate.Beta},
|
Sysctls: {Default: true, PreRelease: featuregate.Beta},
|
||||||
Sysctls: {Default: true, PreRelease: featuregate.Beta},
|
EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
EphemeralContainers: {Default: false, PreRelease: featuregate.Alpha},
|
PodShareProcessNamespace: {Default: true, PreRelease: featuregate.Beta},
|
||||||
PodShareProcessNamespace: {Default: true, PreRelease: featuregate.Beta},
|
PodPriority: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.18
|
||||||
PodPriority: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.18
|
TaintNodesByCondition: {Default: true, PreRelease: featuregate.Beta},
|
||||||
TaintNodesByCondition: {Default: true, PreRelease: featuregate.Beta},
|
QOSReserved: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
QOSReserved: {Default: false, PreRelease: featuregate.Alpha},
|
ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ExpandPersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
|
ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ExpandInUsePersistentVolumes: {Default: true, PreRelease: featuregate.Beta},
|
ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ExpandCSIVolumes: {Default: true, PreRelease: featuregate.Beta},
|
AttachVolumeLimit: {Default: true, PreRelease: featuregate.Beta},
|
||||||
AttachVolumeLimit: {Default: true, PreRelease: featuregate.Beta},
|
CPUManager: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CPUManager: {Default: true, PreRelease: featuregate.Beta},
|
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CPUCFSQuotaPeriod: {Default: false, PreRelease: featuregate.Alpha},
|
TopologyManager: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
TopologyManager: {Default: false, PreRelease: featuregate.Alpha},
|
ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
ServiceNodeExclusion: {Default: false, PreRelease: featuregate.Alpha},
|
NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
NodeDisruptionExclusion: {Default: false, PreRelease: featuregate.Alpha},
|
MountContainers: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
MountContainers: {Default: false, PreRelease: featuregate.Alpha},
|
CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CSIDriverRegistry: {Default: true, PreRelease: featuregate.Beta},
|
CSINodeInfo: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CSINodeInfo: {Default: true, PreRelease: featuregate.Beta},
|
BlockVolume: {Default: true, PreRelease: featuregate.Beta},
|
||||||
BlockVolume: {Default: true, PreRelease: featuregate.Beta},
|
StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA},
|
||||||
StorageObjectInUseProtection: {Default: true, PreRelease: featuregate.GA},
|
ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
ResourceLimitsPriorityFunction: {Default: false, PreRelease: featuregate.Alpha},
|
SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA},
|
||||||
SupportIPVSProxyMode: {Default: true, PreRelease: featuregate.GA},
|
SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta},
|
||||||
SupportPodPidsLimit: {Default: true, PreRelease: featuregate.Beta},
|
SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta},
|
||||||
SupportNodePidsLimit: {Default: true, PreRelease: featuregate.Beta},
|
HyperVContainer: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
HyperVContainer: {Default: false, PreRelease: featuregate.Alpha},
|
ScheduleDaemonSetPods: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ScheduleDaemonSetPods: {Default: true, PreRelease: featuregate.Beta},
|
TokenRequest: {Default: true, PreRelease: featuregate.Beta},
|
||||||
TokenRequest: {Default: true, PreRelease: featuregate.Beta},
|
TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta},
|
||||||
TokenRequestProjection: {Default: true, PreRelease: featuregate.Beta},
|
BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
BoundServiceAccountTokenVolume: {Default: false, PreRelease: featuregate.Alpha},
|
CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CRIContainerLogRotation: {Default: true, PreRelease: featuregate.Beta},
|
CSIMigration: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
deprecatedGCERegionalPersistentDisk: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, // remove in 1.17
|
CSIMigrationGCE: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CSIMigration: {Default: false, PreRelease: featuregate.Alpha},
|
CSIMigrationAWS: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CSIMigrationGCE: {Default: false, PreRelease: featuregate.Alpha},
|
CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CSIMigrationAWS: {Default: false, PreRelease: featuregate.Alpha},
|
CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
CSIMigrationAzureDisk: {Default: false, PreRelease: featuregate.Alpha},
|
RunAsGroup: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CSIMigrationAzureFile: {Default: false, PreRelease: featuregate.Alpha},
|
CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
RunAsGroup: {Default: true, PreRelease: featuregate.Beta},
|
VolumeSubpath: {Default: true, PreRelease: featuregate.GA},
|
||||||
CSIMigrationOpenStack: {Default: false, PreRelease: featuregate.Alpha},
|
BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
VolumeSubpath: {Default: true, PreRelease: featuregate.GA},
|
VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.Beta},
|
||||||
BalanceAttachedNodeVolumes: {Default: false, PreRelease: featuregate.Alpha},
|
ResourceQuotaScopeSelectors: {Default: true, PreRelease: featuregate.Beta},
|
||||||
VolumeSubpathEnvExpansion: {Default: true, PreRelease: featuregate.Beta},
|
CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta},
|
||||||
ResourceQuotaScopeSelectors: {Default: true, PreRelease: featuregate.Beta},
|
CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CSIBlockVolume: {Default: true, PreRelease: featuregate.Beta},
|
RuntimeClass: {Default: true, PreRelease: featuregate.Beta},
|
||||||
CSIInlineVolume: {Default: true, PreRelease: featuregate.Beta},
|
NodeLease: {Default: true, PreRelease: featuregate.Beta},
|
||||||
RuntimeClass: {Default: true, PreRelease: featuregate.Beta},
|
SCTPSupport: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
NodeLease: {Default: true, PreRelease: featuregate.Beta},
|
VolumeSnapshotDataSource: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
SCTPSupport: {Default: false, PreRelease: featuregate.Alpha},
|
ProcMountType: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
VolumeSnapshotDataSource: {Default: false, PreRelease: featuregate.Alpha},
|
TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
ProcMountType: {Default: false, PreRelease: featuregate.Alpha},
|
KubeletPodResources: {Default: true, PreRelease: featuregate.Beta},
|
||||||
TTLAfterFinished: {Default: false, PreRelease: featuregate.Alpha},
|
WindowsGMSA: {Default: true, PreRelease: featuregate.Beta},
|
||||||
KubeletPodResources: {Default: true, PreRelease: featuregate.Beta},
|
WindowsRunAsUserName: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
WindowsGMSA: {Default: true, PreRelease: featuregate.Beta},
|
ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.Beta},
|
||||||
WindowsRunAsUserName: {Default: false, PreRelease: featuregate.Alpha},
|
|
||||||
ServiceLoadBalancerFinalizer: {Default: true, PreRelease: featuregate.Beta},
|
|
||||||
LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha},
|
LocalStorageCapacityIsolationFSQuotaMonitoring: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
NonPreemptingPriority: {Default: false, PreRelease: featuregate.Alpha},
|
NonPreemptingPriority: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
VolumePVCDataSource: {Default: true, PreRelease: featuregate.Beta},
|
VolumePVCDataSource: {Default: true, PreRelease: featuregate.Beta},
|
||||||
@ -605,8 +582,6 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
apiextensionsfeatures.CustomResourcePublishOpenAPI: {Default: true, PreRelease: featuregate.GA, LockToDefault: true},
|
||||||
apiextensionsfeatures.CustomResourceDefaulting: {Default: true, PreRelease: featuregate.Beta},
|
apiextensionsfeatures.CustomResourceDefaulting: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
EnableAggregatedDiscoveryTimeout: {Default: true, PreRelease: featuregate.Deprecated},
|
|
||||||
|
|
||||||
// features that enable backwards compatibility but are scheduled to be removed
|
// features that enable backwards compatibility but are scheduled to be removed
|
||||||
// ...
|
// ...
|
||||||
HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
|
HPAScaleToZero: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
@ -1760,10 +1760,6 @@ func checkMountOptionSupport(og *operationGenerator, volumeToMount VolumeToMount
|
|||||||
// checkNodeAffinity looks at the PV node affinity, and checks if the node has the same corresponding labels
|
// checkNodeAffinity looks at the PV node affinity, and checks if the node has the same corresponding labels
|
||||||
// This ensures that we don't mount a volume that doesn't belong to this node
|
// This ensures that we don't mount a volume that doesn't belong to this node
|
||||||
func checkNodeAffinity(og *operationGenerator, volumeToMount VolumeToMount) error {
|
func checkNodeAffinity(og *operationGenerator, volumeToMount VolumeToMount) error {
|
||||||
if !utilfeature.DefaultFeatureGate.Enabled(features.PersistentLocalVolumes) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
pv := volumeToMount.VolumeSpec.PersistentVolume
|
pv := volumeToMount.VolumeSpec.PersistentVolume
|
||||||
if pv != nil {
|
if pv != nil {
|
||||||
nodeLabels, err := og.volumePluginMgr.Host.GetNodeLabels()
|
nodeLabels, err := og.volumePluginMgr.Host.GetNodeLabels()
|
||||||
|
@ -71,8 +71,6 @@ type ExtraConfig struct {
|
|||||||
|
|
||||||
// Mechanism by which the Aggregator will resolve services. Required.
|
// Mechanism by which the Aggregator will resolve services. Required.
|
||||||
ServiceResolver ServiceResolver
|
ServiceResolver ServiceResolver
|
||||||
|
|
||||||
EnableAggregatedDiscoveryTimeout bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config represents the configuration needed to create an APIAggregator.
|
// Config represents the configuration needed to create an APIAggregator.
|
||||||
@ -134,8 +132,6 @@ type APIAggregator struct {
|
|||||||
|
|
||||||
// openAPIAggregationController downloads and merges OpenAPI specs.
|
// openAPIAggregationController downloads and merges OpenAPI specs.
|
||||||
openAPIAggregationController *openapicontroller.AggregationController
|
openAPIAggregationController *openapicontroller.AggregationController
|
||||||
|
|
||||||
enableAggregatedDiscoveryTimeout bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Complete fills in any fields not set that are required to have valid data. It's mutating the receiver.
|
// Complete fills in any fields not set that are required to have valid data. It's mutating the receiver.
|
||||||
@ -176,18 +172,17 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg
|
|||||||
)
|
)
|
||||||
|
|
||||||
s := &APIAggregator{
|
s := &APIAggregator{
|
||||||
GenericAPIServer: genericServer,
|
GenericAPIServer: genericServer,
|
||||||
delegateHandler: delegationTarget.UnprotectedHandler(),
|
delegateHandler: delegationTarget.UnprotectedHandler(),
|
||||||
proxyClientCert: c.ExtraConfig.ProxyClientCert,
|
proxyClientCert: c.ExtraConfig.ProxyClientCert,
|
||||||
proxyClientKey: c.ExtraConfig.ProxyClientKey,
|
proxyClientKey: c.ExtraConfig.ProxyClientKey,
|
||||||
proxyTransport: c.ExtraConfig.ProxyTransport,
|
proxyTransport: c.ExtraConfig.ProxyTransport,
|
||||||
proxyHandlers: map[string]*proxyHandler{},
|
proxyHandlers: map[string]*proxyHandler{},
|
||||||
handledGroups: sets.String{},
|
handledGroups: sets.String{},
|
||||||
lister: informerFactory.Apiregistration().V1().APIServices().Lister(),
|
lister: informerFactory.Apiregistration().V1().APIServices().Lister(),
|
||||||
APIRegistrationInformers: informerFactory,
|
APIRegistrationInformers: informerFactory,
|
||||||
serviceResolver: c.ExtraConfig.ServiceResolver,
|
serviceResolver: c.ExtraConfig.ServiceResolver,
|
||||||
openAPIConfig: openAPIConfig,
|
openAPIConfig: openAPIConfig,
|
||||||
enableAggregatedDiscoveryTimeout: c.ExtraConfig.EnableAggregatedDiscoveryTimeout,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apiGroupInfo := apiservicerest.NewRESTStorage(c.GenericConfig.MergedResourceConfig, c.GenericConfig.RESTOptionsGetter)
|
apiGroupInfo := apiservicerest.NewRESTStorage(c.GenericConfig.MergedResourceConfig, c.GenericConfig.RESTOptionsGetter)
|
||||||
@ -291,12 +286,11 @@ func (s *APIAggregator) AddAPIService(apiService *v1.APIService) error {
|
|||||||
|
|
||||||
// register the proxy handler
|
// register the proxy handler
|
||||||
proxyHandler := &proxyHandler{
|
proxyHandler := &proxyHandler{
|
||||||
localDelegate: s.delegateHandler,
|
localDelegate: s.delegateHandler,
|
||||||
proxyClientCert: s.proxyClientCert,
|
proxyClientCert: s.proxyClientCert,
|
||||||
proxyClientKey: s.proxyClientKey,
|
proxyClientKey: s.proxyClientKey,
|
||||||
proxyTransport: s.proxyTransport,
|
proxyTransport: s.proxyTransport,
|
||||||
serviceResolver: s.serviceResolver,
|
serviceResolver: s.serviceResolver,
|
||||||
enableAggregatedDiscoveryTimeout: s.enableAggregatedDiscoveryTimeout,
|
|
||||||
}
|
}
|
||||||
proxyHandler.updateAPIService(apiService)
|
proxyHandler.updateAPIService(apiService)
|
||||||
if s.openAPIAggregationController != nil {
|
if s.openAPIAggregationController != nil {
|
||||||
|
@ -63,8 +63,6 @@ type proxyHandler struct {
|
|||||||
serviceResolver ServiceResolver
|
serviceResolver ServiceResolver
|
||||||
|
|
||||||
handlingInfo atomic.Value
|
handlingInfo atomic.Value
|
||||||
|
|
||||||
enableAggregatedDiscoveryTimeout bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type proxyHandlingInfo struct {
|
type proxyHandlingInfo struct {
|
||||||
@ -148,7 +146,7 @@ func (r *proxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
|||||||
location.Path = req.URL.Path
|
location.Path = req.URL.Path
|
||||||
location.RawQuery = req.URL.Query().Encode()
|
location.RawQuery = req.URL.Query().Encode()
|
||||||
|
|
||||||
newReq, cancelFn := newRequestForProxy(location, req, r.enableAggregatedDiscoveryTimeout)
|
newReq, cancelFn := newRequestForProxy(location, req)
|
||||||
defer cancelFn()
|
defer cancelFn()
|
||||||
|
|
||||||
if handlingInfo.proxyRoundTripper == nil {
|
if handlingInfo.proxyRoundTripper == nil {
|
||||||
@ -177,14 +175,14 @@ func (r *proxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// newRequestForProxy returns a shallow copy of the original request with a context that may include a timeout for discovery requests
|
// newRequestForProxy returns a shallow copy of the original request with a context that may include a timeout for discovery requests
|
||||||
func newRequestForProxy(location *url.URL, req *http.Request, enableAggregatedDiscoveryTimeout bool) (*http.Request, context.CancelFunc) {
|
func newRequestForProxy(location *url.URL, req *http.Request) (*http.Request, context.CancelFunc) {
|
||||||
newCtx := req.Context()
|
newCtx := req.Context()
|
||||||
cancelFn := func() {}
|
cancelFn := func() {}
|
||||||
|
|
||||||
if requestInfo, ok := genericapirequest.RequestInfoFrom(req.Context()); ok {
|
if requestInfo, ok := genericapirequest.RequestInfoFrom(req.Context()); ok {
|
||||||
// trim leading and trailing slashes. Then "/apis/group/version" requests are for discovery, so if we have exactly three
|
// trim leading and trailing slashes. Then "/apis/group/version" requests are for discovery, so if we have exactly three
|
||||||
// segments that we are going to proxy, we have a discovery request.
|
// segments that we are going to proxy, we have a discovery request.
|
||||||
if enableAggregatedDiscoveryTimeout && !requestInfo.IsResourceRequest && len(strings.Split(strings.Trim(requestInfo.Path, "/"), "/")) == 3 {
|
if !requestInfo.IsResourceRequest && len(strings.Split(strings.Trim(requestInfo.Path, "/"), "/")) == 3 {
|
||||||
// discovery requests are used by kubectl and others to determine which resources a server has. This is a cheap call that
|
// discovery requests are used by kubectl and others to determine which resources a server has. This is a cheap call that
|
||||||
// should be fast for every aggregated apiserver. Latency for aggregation is expected to be low (as for all extensions)
|
// should be fast for every aggregated apiserver. Latency for aggregation is expected to be low (as for all extensions)
|
||||||
// so forcing a short timeout here helps responsiveness of all clients.
|
// so forcing a short timeout here helps responsiveness of all clients.
|
||||||
|
@ -541,7 +541,7 @@ func TestGetContextForNewRequest(t *testing.T) {
|
|||||||
location.Path = req.URL.Path
|
location.Path = req.URL.Path
|
||||||
|
|
||||||
nestedReq := req.WithContext(genericapirequest.WithRequestInfo(req.Context(), &genericapirequest.RequestInfo{Path: req.URL.Path}))
|
nestedReq := req.WithContext(genericapirequest.WithRequestInfo(req.Context(), &genericapirequest.RequestInfo{Path: req.URL.Path}))
|
||||||
newReq, cancelFn := newRequestForProxy(location, nestedReq, true)
|
newReq, cancelFn := newRequestForProxy(location, nestedReq)
|
||||||
defer cancelFn()
|
defer cancelFn()
|
||||||
|
|
||||||
theproxy := proxy.NewUpgradeAwareHandler(location, server.Client().Transport, true, false, &responder{w: w})
|
theproxy := proxy.NewUpgradeAwareHandler(location, server.Client().Transport, true, false, &responder{w: w})
|
||||||
|
@ -18,7 +18,6 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/controller/volume/persistentvolume:go_default_library",
|
"//pkg/controller/volume/persistentvolume:go_default_library",
|
||||||
"//pkg/controller/volume/persistentvolume/options:go_default_library",
|
"//pkg/controller/volume/persistentvolume/options:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
|
||||||
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
"//pkg/scheduler/algorithm/predicates:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
"//pkg/volume/testing:go_default_library",
|
"//pkg/volume/testing:go_default_library",
|
||||||
@ -29,11 +28,9 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_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/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait: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/util/workqueue:go_default_library",
|
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
|
|
||||||
"//test/integration/framework:go_default_library",
|
"//test/integration/framework:go_default_library",
|
||||||
"//test/utils/image:go_default_library",
|
"//test/utils/image:go_default_library",
|
||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
|
@ -36,14 +36,11 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/rand"
|
"k8s.io/apimachinery/pkg/util/rand"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
|
||||||
"k8s.io/client-go/informers"
|
"k8s.io/client-go/informers"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
"k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
||||||
persistentvolumeoptions "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/options"
|
persistentvolumeoptions "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/options"
|
||||||
"k8s.io/kubernetes/pkg/features"
|
|
||||||
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
||||||
@ -99,7 +96,6 @@ type testPVC struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVolumeBinding(t *testing.T) {
|
func TestVolumeBinding(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-scheduling-", 2, 0, 0)
|
config := setupCluster(t, "volume-scheduling-", 2, 0, 0)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
@ -269,7 +265,6 @@ func TestVolumeBinding(t *testing.T) {
|
|||||||
|
|
||||||
// TestVolumeBindingRescheduling tests scheduler will retry scheduling when needed.
|
// TestVolumeBindingRescheduling tests scheduler will retry scheduling when needed.
|
||||||
func TestVolumeBindingRescheduling(t *testing.T) {
|
func TestVolumeBindingRescheduling(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-scheduling-", 2, 0, 0)
|
config := setupCluster(t, "volume-scheduling-", 2, 0, 0)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
@ -412,7 +407,6 @@ func TestVolumeBindingDynamicStressSlow(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testVolumeBindingStress(t *testing.T, schedulerResyncPeriod time.Duration, dynamic bool, provisionDelaySeconds int) {
|
func testVolumeBindingStress(t *testing.T, schedulerResyncPeriod time.Duration, dynamic bool, provisionDelaySeconds int) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-binding-stress-", 1, schedulerResyncPeriod, provisionDelaySeconds)
|
config := setupCluster(t, "volume-binding-stress-", 1, schedulerResyncPeriod, provisionDelaySeconds)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
@ -512,7 +506,6 @@ func testVolumeBindingStress(t *testing.T, schedulerResyncPeriod time.Duration,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testVolumeBindingWithAffinity(t *testing.T, anti bool, numNodes, numPods, numPVsFirstNode int) {
|
func testVolumeBindingWithAffinity(t *testing.T, anti bool, numNodes, numPods, numPVsFirstNode int) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-pod-affinity-", numNodes, 0, 0)
|
config := setupCluster(t, "volume-pod-affinity-", numNodes, 0, 0)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
@ -638,7 +631,6 @@ func TestVolumeBindingWithAffinity(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestPVAffinityConflict(t *testing.T) {
|
func TestPVAffinityConflict(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-scheduling-", 3, 0, 0)
|
config := setupCluster(t, "volume-scheduling-", 3, 0, 0)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
@ -698,7 +690,6 @@ func TestPVAffinityConflict(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestVolumeProvision(t *testing.T) {
|
func TestVolumeProvision(t *testing.T) {
|
||||||
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.PersistentLocalVolumes, true)()
|
|
||||||
config := setupCluster(t, "volume-scheduling", 1, 0, 0)
|
config := setupCluster(t, "volume-scheduling", 1, 0, 0)
|
||||||
defer config.teardown()
|
defer config.teardown()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user