2. HUAWEI TECHNOLOGIES CO., LTD. Page 2
Fuxi
Fuxi introduction:
AS a docker remote volume plugin, support
createdeletemountunmount volume
Support plugging into kubernetes and swam,
compose to provide persistence volume
Support running in barematel machine and
OpenStack instance
Feature:
1)Fuxi does not have data storage, e.g. DB, Etcd
2)Fuxi can provide exist Cinder volume, Manila
share and object.
3)Fuxi can provide mount and unmount persistent
storage for running docker(This feature need to
extend Kubernetes API)
4)Fuxi does not provide any service, eg. Migrate
docker.
Docker
daemon
Fuxi
Cinder
Magnum
Manila Swift/S3
Kubernetes
Murano
Heat
Nova
OpenStack
Fuxi focuses on enabling Docker container to use Cinder volume and Manila share, thus Docker volume can reuse the
advance features and numerous vendor drivers in Cinder and Manila. With Fuxi, Cinder and Manila can be used as the unified
persistence storage provider for virtual machine, baremetal and Docker container.
Docker
daemon
Fuxi
kubelet
Fuxi
client
Docker
daemon
Fuxi
kubelet
Fuxi
client
Compose/
Swarm
Huawei/…/Net
App NAS
Huawei/…/NetApp
SAN、FusionStorage
3. HUAWEI TECHNOLOGIES CO., LTD. Page 3
Kublet
Fuxi design
Docker
deamon
Fuxi(Remote
cinder volume
plugin)
cinder
/VolumeDriver.Create
/VolumeDriver.Remove
/VolumeDriver.Mount
/VolumeDriver.Path
/VolumeDriver.Unmount
/VolumeDriver.List
/VolumeDriver.Get
/Plugin.Activate(handshake)
Remote cinder volume plugin
API
Cinder Client
Create
Docker run
Docker volume create/rm/ls/inspect
-d, --driver=cinder
--help=false
--name
-o, --opt=map(volumetype、QoS、size、
scheduler-hint、storagetype)
delete Mount/
unmount
Volume driver
(attach、detach)
format
mount
Snapshot
Backup
Migrate
List
show
manila
Manila Client Swift/s3 client
Swift/S3
Fuxi Client
1)Enhance K8S to Create SLA Based Persistence
Storage, and schedule container and storage federally
2)attaching volume for online container
Flex volume
4. HUAWEI TECHNOLOGIES CO., LTD. Page 4
K8S deployment scenarios
vm
K8S
Docker
deamon
vm
K8S
Docker
deamon
OS compute node
Barematal
K8S
Docker
deamon
Barematal
K8S
Docker
deamon
Barematal node
Barematal
K8S
Docker
deamon
OS Ironic
vm
K8S
Docker
deamon
vm
K8S
Docker
deamon
AWS/Vcloud
vm
K8S
Docker
deamon
vm
K8S
Docker
deamon
AWS/Vcloud
vm
K8S
Docker
deamon
vm
K8S
Docker
deamon
OS compute node
5. HUAWEI TECHNOLOGIES CO., LTD. Page 5
controller
Fuxi code framework
Fuxi build on lightweight framework
Flask
API is standard docker remote volume
plugin interface
Storage Provider Plugin framework
provides easily access capability for
storage device,include cinder、
Manila、S3/Swift
Connector Plugin framework provides
easily attaching/detaching volume to
node, and support container running
in virtual machine and physical
machine
API
Storage Provider Plugin Connector Plugin
Cinder Manila Swift/S3 openstack Os_brick
Fuxi ClientCMD
Fuxi design discipline :Stateless, No data storage, a plug-in
framework for back-end storage volumes and mount
mechanism
EBS AWS
6. HUAWEI TECHNOLOGIES CO., LTD. Page 6
Minion
Fuxi Based-run in host(K8S)
Steps:
Murano as an orchestration
Murano call Cinder API to create
volume
Murano call Kubernetes API to
create pod, and set cinder volume
ID、fsType、capacity、hostdev、
readonly for pod
Kublet call Fuxi to mount volume
Fuxi do iscsi login or NFS mount
Fuxi format the dev and mount to
the hostdev
Kublet do Docker run –-volume
host dev to start the container
Docker
deamon
cinder
Kublet
Container
Local path
Kubernetes master
fuxi
Storage
device
dev
Murano
Run container(device、
volume)
Fuxi Client
Flex volume
7. HUAWEI TECHNOLOGIES CO., LTD. Page 7
Host
Minion(VM)
Fuxi Based-run in OS VM(K8S)
Steps:
Murano as an orchestration
Murano call Cinder API to create
volume
Murano call Kubernetes API to create
pod, and set cinder volume ID、fsType
、capacity、hostdev、readonly for pod
Kublet call Fuxi to mount volume
through nova’s attach volume api
Fuxi format the dev and mount to the
hostdev
Kublet do Docker run –-volume host
dev to start the container
Docker
deamon
cinder
Kublet
Container
Local path
Kubernetes master
fuxi
Storage
device
dev
Nova compute
Volume
driver
Murano
Run container(device、
volume)
Nova/Ironic
Fuxi Client
Flex volume