Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automated cherry pick of #117022: Fix directory mismatch for volume.SetVolumeOwnership() #117575

Commits on Apr 25, 2023

  1. Fix directory mismatch for volume.SetVolumeOwnership()

    In most cases `dir` arg of `SetUpAt()` method of `volume.Mounter` interface is the same as `mounter.GetPath()` because we usually call `SetUpAt()` from `SetUp()` like this:"
    ```
    func (ed *emptyDir) SetUp(mounterArgs volume.MounterArgs) error {
    	return ed.SetUpAt(ed.GetPath(), mounterArgs)
    }
    ```
    (this example is from `volume/emptydir/empty_dir.go`, but there are plenty other examples like that in `volume/*`)
    
    However, there is currently one exception. This is from `volume/projected/projected.go`:
    ```
    	if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
    		return err
    	}
    ```
    (see https://github.com/kubernetes/kubernetes/blob/96306f144a3c917a97fe27c9ad5dd89e4213f741/pkg/volume/projected/projected.go#L203)
    
    In this case `dir` is not equal to `wrapped.GetPath()` and `volume.SetVolumeOwnership()` fails when called from `SetUpAt()` of wrapped volume:
    ```
    lstat /var/lib/kubelet/pods/a2f6e58f-7edf-4c48-a97c-ef1b8fd3caf6/volumes/kubernetes.io~empty-dir/wrapped_kube-api-access-knvkv: no such file or directory
    ```
    
    To fix the issue let's pass `dir` arg to `volume.SetVolumeOwnership()` explicitly, and use it instead of `mounter.GetPath()`.
    mpatlasov committed Apr 25, 2023
    Configuration menu
    Copy the full SHA
    b0f1337 View commit details
    Browse the repository at this point in the history