Skip to content

Commit 0cb7e32

Browse files
authored
Merge pull request kubernetes#92784 from pohly/generic-ephemeral-inline-volumes
generic ephemeral inline volumes
2 parents a6378d8 + c1178bd commit 0cb7e32

File tree

128 files changed

+26087
-20812
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+26087
-20812
lines changed

api/openapi-spec/swagger.json

Lines changed: 35 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/kube-controller-manager/app/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ go_library(
7575
"//pkg/controller/ttl:go_default_library",
7676
"//pkg/controller/ttlafterfinished:go_default_library",
7777
"//pkg/controller/volume/attachdetach:go_default_library",
78+
"//pkg/controller/volume/ephemeral:go_default_library",
7879
"//pkg/controller/volume/expand:go_default_library",
7980
"//pkg/controller/volume/persistentvolume:go_default_library",
8081
"//pkg/controller/volume/persistentvolume/config:go_default_library",

cmd/kube-controller-manager/app/controllermanager.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ func NewControllerInitializers(loopMode ControllerLoopMode) map[string]InitFunc
424424
controllers["pv-protection"] = startPVProtectionController
425425
controllers["ttl-after-finished"] = startTTLAfterFinishedController
426426
controllers["root-ca-cert-publisher"] = startRootCACertPublisher
427+
controllers["ephemeral-volume"] = startEphemeralVolumeController
427428

428429
return controllers
429430
}

cmd/kube-controller-manager/app/core.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import (
5757
ttlcontroller "k8s.io/kubernetes/pkg/controller/ttl"
5858
"k8s.io/kubernetes/pkg/controller/ttlafterfinished"
5959
"k8s.io/kubernetes/pkg/controller/volume/attachdetach"
60+
"k8s.io/kubernetes/pkg/controller/volume/ephemeral"
6061
"k8s.io/kubernetes/pkg/controller/volume/expand"
6162
persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
6263
"k8s.io/kubernetes/pkg/controller/volume/pvcprotection"
@@ -373,6 +374,22 @@ func startVolumeExpandController(ctx ControllerContext) (http.Handler, bool, err
373374
return nil, false, nil
374375
}
375376

377+
func startEphemeralVolumeController(ctx ControllerContext) (http.Handler, bool, error) {
378+
if utilfeature.DefaultFeatureGate.Enabled(features.GenericEphemeralVolume) {
379+
ephemeralController, err := ephemeral.NewController(
380+
ctx.ClientBuilder.ClientOrDie("ephemeral-volume-controller"),
381+
ctx.InformerFactory.Core().V1().Pods(),
382+
ctx.InformerFactory.Core().V1().PersistentVolumeClaims())
383+
if err != nil {
384+
return nil, true, fmt.Errorf("failed to start ephemeral volume controller: %v", err)
385+
}
386+
// TODO (before beta at the latest): make this configurable similar to the EndpointController
387+
go ephemeralController.Run(1 /* int(ctx.ComponentConfig.EphemeralController.ConcurrentEphemeralVolumeSyncs) */, ctx.Stop)
388+
return nil, true, nil
389+
}
390+
return nil, false, nil
391+
}
392+
376393
func startEndpointController(ctx ControllerContext) (http.Handler, bool, error) {
377394
go endpointcontroller.NewEndpointController(
378395
ctx.InformerFactory.Core().V1().Pods(),
@@ -539,6 +556,7 @@ func startPVCProtectionController(ctx ControllerContext) (http.Handler, bool, er
539556
ctx.InformerFactory.Core().V1().Pods(),
540557
ctx.ClientBuilder.ClientOrDie("pvc-protection-controller"),
541558
utilfeature.DefaultFeatureGate.Enabled(features.StorageObjectInUseProtection),
559+
utilfeature.DefaultFeatureGate.Enabled(features.StorageObjectInUseProtection),
542560
)
543561
if err != nil {
544562
return nil, true, fmt.Errorf("failed to start the pvc protection controller: %v", err)

pkg/api/pod/util.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ func dropDisabledFields(
431431
dropDisabledProcMountField(podSpec, oldPodSpec)
432432

433433
dropDisabledCSIVolumeSourceAlphaFields(podSpec, oldPodSpec)
434+
dropDisabledEphemeralVolumeSourceAlphaFields(podSpec, oldPodSpec)
434435

435436
if !utilfeature.DefaultFeatureGate.Enabled(features.NonPreemptingPriority) &&
436437
!podPriorityInUse(oldPodSpec) {
@@ -499,6 +500,16 @@ func dropDisabledCSIVolumeSourceAlphaFields(podSpec, oldPodSpec *api.PodSpec) {
499500
}
500501
}
501502

503+
// dropDisabledEphemeralVolumeSourceAlphaFields removes disabled alpha fields from []EphemeralVolumeSource.
504+
// This should be called from PrepareForCreate/PrepareForUpdate for all pod specs resources containing a EphemeralVolumeSource
505+
func dropDisabledEphemeralVolumeSourceAlphaFields(podSpec, oldPodSpec *api.PodSpec) {
506+
if !utilfeature.DefaultFeatureGate.Enabled(features.GenericEphemeralVolume) && !csiInUse(oldPodSpec) {
507+
for i := range podSpec.Volumes {
508+
podSpec.Volumes[i].Ephemeral = nil
509+
}
510+
}
511+
}
512+
502513
func ephemeralContainersInUse(podSpec *api.PodSpec) bool {
503514
if podSpec == nil {
504515
return false

pkg/api/testing/backward_compatibility_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func TestCompatibility_v1_PodSecurityContext(t *testing.T) {
159159
}
160160

161161
validator := func(obj runtime.Object) field.ErrorList {
162-
return validation.ValidatePodSpec(&(obj.(*api.Pod).Spec), field.NewPath("spec"))
162+
return validation.ValidatePodSpec(&(obj.(*api.Pod).Spec), &(obj.(*api.Pod).ObjectMeta), field.NewPath("spec"))
163163
}
164164

165165
for _, tc := range cases {

pkg/apis/apps/v1/zz_generated.defaults.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/apps/v1beta1/zz_generated.defaults.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/apps/v1beta2/zz_generated.defaults.go

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/batch/v1/zz_generated.defaults.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)