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

[WIP] Create cloning.md #2533

Closed
wants to merge 8 commits into from
Closed

[WIP] Create cloning.md #2533

wants to merge 8 commits into from

Conversation

erinboyd
Copy link
Contributor

@erinboyd erinboyd commented Aug 14, 2018

Design proposal for same namespace cloning support in kube

@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/design Categorizes issue or PR as related to design. sig/storage Categorizes an issue or PR as relevant to SIG Storage. labels Aug 14, 2018
@k8s-ci-robot
Copy link
Contributor

Hi @erinboyd. Thanks for your PR.

I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Aug 14, 2018
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: childsb

If they are not already assigned, you can assign the PR to them by writing /assign @childsb in a comment when ready.

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@erinboyd erinboyd changed the title Create cloning.md [WIP] Create cloning.md Aug 14, 2018
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Aug 14, 2018
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Aug 14, 2018
Copy link

@j-griffith j-griffith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good for the most part, some minor wording and a typo (I never spot those) in the intro paragraph.

I did have some other thoughts/questions in line as well, thanks for putting this together!

@@ -44,6 +44,105 @@ Specific use cases around cloning are included in the use cases listed below as
## Design Overview
The proposed design is based on the idea of leveraging well defined concepts for storage in Kubernetes. The cloning will be initiated
by creating an annotated PVC to create a new volume using a defined storage class that supports cloning.
The actual cloning process must be implemented by the provisioning storage and properly understand and react to the annotation to clone.
The actual cloning process must be implemented by the provisioning storage and properly understand and react to the annotation to clone. In the absence of a storage class that supports cloning a host-assisted clone can also be exected to create the copy. The host-assisted cloning deploys a controller to utlize pod streaming to execute the copy.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/and properly understand and react/, therefore plugins that support cloning need to ensure they're checking ..../

Also, do we want annotations mentioned here or aren't we using VolumeContentSource from the spec?

minor typo s/exected/executed/

accessModes:
- ReadWriteOnce
storageClassName: csi-gce-pd
dataSource:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, yeah that's what I was getting at above; I'd just call out the field name rather than say "annotations" just to be clear.

name: csi-gce-pd
provisioner: kubernetes.io/gce-pd
parameters:
smartclone: "true"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should smartclone just be an inherent/implied thin based on the a devices reported capabilities? In other words if it's reported via capabilities a user doesn't need to specify this; a clone request is made, if capabilities allow great, if not error or fall back to host-assisted if possible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this will change with the introduction of the populator, which I have intentionally left out of this proposal. I can remove this as well so as to reduce confusion

@erinboyd
Copy link
Contributor Author

@j-griffith please re-review to make sure I didn't miss anything from the design meeting. Thanks!

storage: 100Gi
volumeMode: Filesystem
accessModes:
- ReadOnlyMany
Copy link
Contributor

@humblec humblec Oct 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@erinboyd @aglitke Do we need to think about restricting a clone for a RO source PV?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@humblec I believe that came up in some discussions, but most devices that offer enhanced cloning features also handle things like dealing with consistency internally. Even for those doing host assisted type cloning they would implicitly deal with this as well if they need to via mount options. Also, just to be clear this is referencing the PVC and not the PV (just to make sure there's no confusion).

We don't want to restrict the cloning operation to RO I don't think, if we need something to control in-use PVCs we could perhaps use capabilities reporting (CSI Plugin/Spec) and deal with it there. So something like "can clone in-use volumes" or something like that?

// Specifies what source the volume will be created from. One of the
// type fields MUST be specified.
message VolumeContentSource {
message SnapshotSource {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've got this one in place so that's good

// CREATE_DELETE_SNAPSHOT.
string id = 1;
}
message PersistentVolumeSource {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This ones under review, uses a more generic term of "VolumeSource" which I think is preferable.
container-storage-interface/spec#244

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 31, 2019
@k8s-ci-robot
Copy link
Contributor

Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA.

It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.


Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@k8s-ci-robot k8s-ci-robot removed the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jan 31, 2019
@k8s-ci-robot k8s-ci-robot added the cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. label Jan 31, 2019
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Mar 2, 2019
@fejta-bot
Copy link

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@k8s-ci-robot
Copy link
Contributor

@fejta-bot: Closed this PR.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: no Indicates the PR's author has not signed the CNCF CLA. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. kind/design Categorizes issue or PR as related to design. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. sig/storage Categorizes an issue or PR as relevant to SIG Storage. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants