Add flocker volume plugin

Flocker [1] is an open-source container data volume manager for
Dockerized applications.

This PR adds a volume plugin for Flocker.
The plugin interfaces the Flocker Control Service REST API [2] to
attachment attach the volume to the pod.

Each kubelet host should run Flocker agents (Container Agent and Dataset
Agent).

The kubelet will also require environment variables that contain the
host and port of the Flocker Control Service. (see Flocker architecture
[3] for more).

- `FLOCKER_CONTROL_SERVICE_HOST`
- `FLOCKER_CONTROL_SERVICE_PORT`

The contribution introduces a new 'flocker' volume type to the API with
fields:

- `datasetName`: which indicates the name of the dataset in Flocker
  added to metadata;
- `size`: a human-readable number that indicates the maximum size of the
  requested dataset.

Full documentation can be found docs/user-guide/volumes.md and examples
can be found at the examples/ folder

[1] https://clusterhq.com/flocker/introduction/
[2] https://docs.clusterhq.com/en/1.3.1/reference/api.html
[3] https://docs.clusterhq.com/en/1.3.1/concepts/architecture.html
This commit is contained in:
Álex González
2015-09-25 20:22:23 +01:00
parent bd8ee1c4c4
commit fa39c2b032
27 changed files with 1655 additions and 18 deletions

View File

@@ -12186,6 +12186,10 @@
"$ref": "v1.FCVolumeSource",
"description": "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod."
},
"flocker": {
"$ref": "v1.FlockerVolumeSource",
"description": "Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running"
},
"accessModes": {
"type": "array",
"items": {
@@ -12490,6 +12494,19 @@
}
}
},
"v1.FlockerVolumeSource": {
"id": "v1.FlockerVolumeSource",
"description": "FlockerVolumeSource represents a Flocker volume mounted by the Flocker agent.",
"required": [
"datasetName"
],
"properties": {
"datasetName": {
"type": "string",
"description": "Required: the volume name. This is going to be store on metadata -\u003e name on the payload for Flocker"
}
}
},
"v1.PersistentVolumeStatus": {
"id": "v1.PersistentVolumeStatus",
"description": "PersistentVolumeStatus is the current status of a persistent volume.",
@@ -12701,6 +12718,10 @@
"$ref": "v1.CephFSVolumeSource",
"description": "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime"
},
"flocker": {
"$ref": "v1.FlockerVolumeSource",
"description": "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running"
},
"downwardAPI": {
"$ref": "v1.DownwardAPIVolumeSource",
"description": "DownwardAPI represents downward API about the pod that should populate this volume"