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

Dysk Planning #9

Open
16 of 18 tasks
khenidak opened this issue Jan 9, 2018 · 8 comments
Open
16 of 18 tasks

Dysk Planning #9

khenidak opened this issue Jan 9, 2018 · 8 comments
Assignees

Comments

@khenidak
Copy link
Owner

khenidak commented Jan 9, 2018

Use this issue to track beta/stable functions + features.
BETA Goals

  • Stable worker, specifically how it yields the CPU
  • Fix issue Code review comments #1 Specifically memory + allocation optimization
  • Fix issue dysk.ko will be removed if dyskctl unmount all disks #7
  • Fix issue dysk disk could not be deleted after "dyskctl unmount" #8
  • Create easy to use samples
  • Create easy to use verification scripts
  • return -EBUSY upon module unload when dysk has disks mounted Kernel 4.10 does not count references correctly, hence users shouldn't be unload dysk module
  • Create Releases (a container for CLI + consistent release experience for the module)
  • Full e2e integration with Kubernetes
    • Flex vol driver
      • Support for rw mounting (with auto-lease and --break-lease flag)
      • Support for ro mounting (with lease management across multiple nodes)
    • Flex vol driver installer as daemon set (including kernel module installer + cli)
    • Cli support for converting dysk to K8S PV example
      dyskcli convert-pv --labels [dictionary] --secret-ref
      The command converts stdin output of dyskctl get -o json or cat ./dysk.json or dyskctl
      create ..
      then creates k8s PV object which user can then use kubectl create to
      provision on k8s. Users should not suffer through manual conversion. Example
dyskctl create ... -o json | dyskctl convert-pv --name my-name --secret-ref my-secret --labels [dictonary] ##optionally --readonly --fstype "ext4## | kubectl create ...

##output piped to kubectl create stdin is:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: **my-name**
  lables: 
     **value of --labels dictionary**
spec:
flexVolume:
      driver: "dysk/dysk"
      fsType: **value of --fstype***
      readOnly: **if --read-only was passed to convert-pv**
      secretRef:
        name: **my-secret**
      options:
        accountName: "{Account-Name-Here-FROM-DYSK}"
        pageBlobPath: "{PAGE BLOB PATH- FROM - DYSK}"
  • Samples
  • (STRETCH) Support for cache using dm-cache
    Stable Goals
  • Move to Azure Storage SAS for authentication.
  • Flexvol support for raid configuration (multi dysks) via LVM

@ritazh @andyzhangx

@khenidak khenidak self-assigned this Jan 18, 2018
@andyzhangx
Copy link
Collaborator

@khenidak Have you ever run https://github.com/khenidak/dysk/blob/master/kubernetes/dysk as a flexvolume driver, there are lots of bugs, it even cannot be loaded. And pls note that bash env in kubelet image is different than your dev env, there are some bash syntax not supported in kubelet bash.

@khenidak
Copy link
Owner Author

hmm Ok i will go back and check. in all cases thank you for putting it back on track.

@andyzhangx
Copy link
Collaborator

@khenidak, I have a PR to fix it all.

@khenidak
Copy link
Owner Author

the commit on head was not the latest code i had :-( Thanks again

@andyzhangx
Copy link
Collaborator

that's bad, you need to merge... Pls add me as reviewer if you want to change flex vol driver.
I am quite familiar with flex vol driver development, you may propose design and requirement, I could do the development.

@khenidak
Copy link
Owner Author

No need to, you have put back everything back on track (basically took care of a mess i created :-)) thanks again.

@rocketraman
Copy link

I'm wondering if dysk is the solution to all my Azure Disk problems with Kubernetes on Azure (wishful thinking I know). As far as I can tell from this issue, almost everything in the checklist above, except raid+lvm config that is a blocker for beta is done -- is raid+lvm really a blocker for beta? Can this be moved forward? I've seen no commits in these repo for two months.

@andyzhangx
Copy link
Collaborator

andyzhangx commented Dec 10, 2018

@rocketraman Your issue should be related to this bug: https://github.com/andyzhangx/demo/blob/master/issues/azuredisk-issues.md#14-azure-disk-attachdetach-failure-mount-issue-io-error, it's due to the dirty vm cache which would lead to lots of strange disk attach/detach issues. The fix has been verified in more than 150 k8s clusters by one customer, no disk attach/detach issue any more. I would encouge you to use 1.11.6, 1.12.4 or 1.13.0 when these versions come out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants