Skip to content

Instantly share code, notes, and snippets.

@fabiand
Last active February 16, 2017 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fabiand/69aa05ecae8f78228b515a8234b8cd50 to your computer and use it in GitHub Desktop.
Save fabiand/69aa05ecae8f78228b515a8234b8cd50 to your computer and use it in GitHub Desktop.
Story:
After a class is declared, a Network object can be created, which is getting
associated to such a class. The network object itself contains the logical
netowkr informations - eventually even IPAM needs to be discussed.
An interface on a VM is getting connected to a network.
---
kind: Network
metadata:
name: default
spec:
name: default
---
kind: Network
spec:
name: default-local
---
kind: VM
spec:
domain:
devices:
interfaces:
- source:
network: default
model:
type: ne2k_pci
- source:
network: default-local
mac:
address: de:ad:be:ee:ee:ef
Story:
Long term goal: Kubernetes allows the attachment of block storage to pods, VMs can then directly consume those.
The goal of this proposal: Allow the use of claims on volumes which are block storage to be used for VMs.
The virt-handler is responsible for detecting the claim, and translating it into the correct libvirtd disk description.
The benefit of this approach is that the whole discovery (PVs), claiming (PVCs) and provisoning flows can be reused. In addition we avoid the problem of letting the kubelet do the bock storage work, this prevents that the virt-handler needs to workaround this.
For now the support volume types should be:
- iSCSI
- RBD (Ceph Block Device)
It is limited to these two types, because these two types are acessed by qemu directly, and don't involve kernel level attachment.
Note: Due to Kubernets limitations authentication is currently not supported
Note2: We might be able to hack around it.
---
kind: PersistentVolume
metadata:
name: pv001
labels:
release: "stable"
spec:
capacity:
storage: 5Gi
iscsi:
targetPortal: example.com:3260
iqn: iqn.2013-07.com.example:iscsi-nopool/
lun: 0
---
kind: PersistentVolumeClaim
metadata:
name: disk-01
spec:
resource:
requests:
storage: 4Gi
selector:
matchLabels:
release: "stable"
---
kind: VM
spec:
domain:
devices:
disks:
- type: persistentVolumeClaim
claimName: disk-01
bus: scsi
target: sda
Translates into:
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/2'>
<host name='example.com' port='3260'/>
</source>
<target dev='sda' bus='scsi'/>
</disk>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment