2017-05-22 15:21:14 +08:00
==============
Stackube Scope
==============
A multi-tenant and secure Kubernetes deployment enabled by OpenStack
core components.
Not another “Kubernetes on OpenStack” project
2017-05-22 17:57:17 +08:00
=============================================
2017-05-22 15:21:14 +08:00
Stackube is a standard upstream Kubernetes deployment with:
2017-05-23 15:39:02 +08:00
#. Mixed container runtime of Docker (Linux container) and HyperContainer (hypervisor-based container)
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Keystone for tenant management
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Neutron for container network
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Cinder for persistent volume
2017-05-22 15:21:14 +08:00
The main difference between Stackube with existing container service
project in OpenStack foundation (e.g. Magnum) is: **Stackube works
2017-05-22 17:57:17 +08:00
alongside OpenStack, not on OpenStack**.
This means:
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Only standalone vanilla OpenStack components are required
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Traditional VMs are not required because HyperContainer will provide hypervisor level isolation for containerized workloads.
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. All the components mentioned above are managed by Kubernetes plugin API.
2017-05-22 15:21:14 +08:00
What‘ s inside Stackube repo?
2017-05-22 17:57:17 +08:00
============================
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Keystone RBAC plugin
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Neutron CNI plugin
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
* With a k8s Network object controller
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Standard k8s upstream Cinder plugin with block device mode
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Deployment scripts and guide
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Other documentations
2017-05-22 15:21:14 +08:00
Please note:
2017-05-23 15:39:02 +08:00
#. Plugins above will be deployed as system Pod and DaemonSet.
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. All other Kubernetes volumes are also supported in Stackube, while k8s Cinder plugin with block device mode can provide better performance in mixed runtime which will be preferred by default.
2017-05-22 15:21:14 +08:00
What’ s the difference between other plugin projects?
2017-05-22 17:57:17 +08:00
====================================================
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Kuryr
2017-05-22 15:21:14 +08:00
2017-09-27 15:35:32 +08:00
* This is a Neutron network plugin for Docker network model, which is not directly supported in Kubernetes. Kuryr can provide CNI interface, but Stackube also requires tenant aware network management which is not included in Kuryr. We will evaluate and propose our multi-tenant model to kuryr-kubernetes as a long term effort, then we can move to use kuryr-kubernetes as the default network plugin.
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Fuxi
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
* This is a Cinder volume plugin for Docker volume model, which is not supported in latest CRI based Kubernetes (using k8s volume plugin for now, and soon CSI). Also, Stackube prefers a “block-device to Pod” mode in volume plugin when HyperContainer runtime is enabled, which is not supported in Fuxi.
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. K8s-cloud-provider
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
* This is a “Kubernetes on OpenStack” integration which requires full functioning OpenStack deployment.
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
#. Zun
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
* This is a OpenStack API container service, while Stackube exposes well-known Kubernetes API and does not require full OpenStack deployment.
2017-05-22 15:21:14 +08:00
As summary, one distinguishable difference is that plugins in Stackube
are designed to enable hard multi-tenancy in Kubernetes as a whole
solution, while the other OpenStack plugin projects do not address this
and solely focus on just integrating with Kubernetes/Docker as-is. There
are many gaps to fill when use them to build a real multi-tenant cloud,
for example, how tenants cooperate with networks in k8s.
Another difference is Stackube use mixed container runtimes mode of k8s
to enable secure runtime, which is not in scope of existing foundation
projects. In fact, all plugins in Stackube should work well for both
Docker and HyperContainer.
The architecture of Stackube is fully decoupled and it would be easy for
us (and we’ d like to) integrate it with any OpenStack-Kubernetes plugin.
But right now, we hope to keep everything as simple as possible and
focus on the core components.
2017-08-04 10:32:50 +08:00
Deployment workflow
2017-05-22 17:57:17 +08:00
=========================================
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
-----------------
On control nodes
-----------------
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
Install standalone Keystone, Neutron, Cinder (ceph rbd).
This can be done by any existing tools like devstack, RDO etc.
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
----------------
On other nodes
----------------
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
1. Install neutron L2 agents
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
This can be done by any existing tools like devstack, RDO etc.
2. Install Kubernetes
2017-05-22 15:21:14 +08:00
2017-05-23 15:39:02 +08:00
* Including container runtimes, CRI shims, CNI etc
2017-08-04 10:32:50 +08:00
* This can be done by any existing tools like kubeadm etc
3. Deploy Stackube
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
::
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
kubectl create -f stackube-configmap.yaml
kubectl create -f deployment/stackube-proxy.yaml
kubectl create -f deployment/stackube.yaml
2017-05-22 15:21:14 +08:00
2017-08-04 10:32:50 +08:00
This will deploy all Stackube plugins as Pods and DaemonSets to the
cluster. You can also deploy all these components in a single node.
2017-05-22 15:21:14 +08:00
After that, users can use Kubernetes API to manage containers with
hypervisor isolation, Neutron network, Cinder volume and tenant
awareness.