By combining OpenStack, Docker, Kubernetes, and Flannel, you get a containers solution which works like other OpenStack services. With Magnum, Docker and Kubernetes are made available as first class resources in OpenStack.
A cluster (formerly bay) is the construct in which
Magnum launches container orchestration engines.
The python-openstackclient is
installed. After you have sourced an OpenStack RC file, use the command
line client to upload images from a machine outside of the cloud.
To run the
python-openstackclient: An
OpenStack RC file containing the credentials for the OpenStack project to
which you want to upload the images.
The python-magnumclient is installed.
In a shell, source the OpenStack RC file for the project that you want to upload an image to. For details, refer to http://docs.openstack.org/user-guide/common/cli_set_environment_variables_using_openstack_rc.html.
Create an image for cluster setup. For example:
openstack image create sles-openstack-magnum-kubernetes \ --public --disk-format qcow2 \ --property os_distro='opensuse' \ --container-format bare \ --file ./sles-openstack-magnum-kubernetes.x86_64.qcow2
Create a Magnum flavor. For example:
openstack flavor create --public m1.magnum --id 9 --ram 1024 \ --disk 10 --vcpus 1
If you do not have enough resources and RAM on your compute nodes for a flavor of this size, create a smaller flavor instead.
Create a cluster template for Kubernetes. For example:
magnum cluster-template-create --name k8s_template \ --image-id sles-openstack-magnum-kubernetes \ --keypair-id default \ --external-network-id floating \ --dns-nameserver 8.8.8.8 \ --flavor-id m1.magnum \ --master-flavor-id m1.magnum \ --docker-volume-size 5 \ --network-driver flannel \ --coe kubernetes \ --master-lb-enabled
Create a Kubernetes cluster using the cluster template you have created in the step above. For example:
magnum cluster-create --name k8s_cluster --cluster-template k8s_template \ --master-count 1 --node-count 2
The resulting cluster will have one master Kubernetes node and two minion nodes.
Alternatively, you can deploy a Kubernetes cluster in the SUSE OpenStack Cloud Dashboard by creating a cluster template and creating a Kubernetes cluster afterward.
You have created an image for cluster setup as described in Section 5.1, Step 2.
You have created a Magnum flavor as described in Section 5.1, Step 3.
Log in to SUSE OpenStack Cloud Dashboard and select a project from the drop-down box at the top-level row.
Click › › .
The dialog opens, showing the following sections: , , , and .
In the section:
Enter a name for the cluster template to create.
As , choose
Kubernetes.
If wanted, activate the following options:
: The cluster template will be visible for all users in OpenStack.
: The cluster can be built with Insecure Docker Registry service.
: Switch off the SSL protocol for the cluster.
In the section:
Choose the you have created in Section 5.1, Step 2.
Choose a .
Choose the you have created in Section 5.1, Step 3. It will be used for the minion nodes.
Choose the same flavor as . It will be used for the master node.
As , choose Cinder.
As , choose
Device Mapper.
Specify the . For example:
5
In the section:
As , choose Flannel.
Leave the , , and boxes empty or enter the respective addresses to use.
As , enter floating.
The network floating will be used to connect to the cluster
template you are creating.
Leave the and boxes empty.
Enter the server to use for this cluster template.
For example: 8.8.8.8.
To deploy the cluster with a load balancer service in front for the cluster services, activate .
To assign floating IP addresses to the nodes in the cluster, activate .
Confirm your changes to create the cluster template.
Based on the cluster template you have created in Procedure 5.1, “Creating a Cluster Template in SUSE OpenStack Cloud Dashboard”, you can now create a Kubernetes cluster.
Log in to SUSE OpenStack Cloud Dashboard and select a project from the drop-down box at the top-level row.
Click › › .
The dialog opens, showing the following sections: , , and .
In the section:
Enter a .
From the list, select the template you have created in Procedure 5.1, “Creating a Cluster Template in SUSE OpenStack Cloud Dashboard”.
In the section, enter the number of master
nodes and minion nodes you want the cluster to have. For example:
1 and 2.
In the section, you can optionally specify a custom URL for node discovery and a for cluster creation, if wanted. The default is no timeout.
Confirm your changes to create the cluster.
In specific scenarios, you may need to deploy a Kubernetes cluster without access to Internet. For those cases, you need to set up a custom Insecure Docker Registry and use no discovery URL. You can do this either from command line (as described below) or from the SUSE OpenStack Cloud Dashboard.
In a shell, source the OpenStack RC file for the project that you want to upload an image to. For details, refer to http://docs.openstack.org/user-guide/common/cli_set_environment_variables_using_openstack_rc.html.
Create a cluster template as shown in , Step 4,
but add the options --registry-enabled
and --labels. For example:
magnum cluster-template-create --name k8s_template_reg_enabled \ [...] --registry-enabled --labels registry_url=URL
Create a cluster as shown in , Step 5,
but with static IP configuration and setting the option
--discovery-url to none. For example:
magnum cluster-create --name k8s_cluster_without \ --cluster-template k8s_template_reg_enabled \ [...] --discovery-url none