magnum/magnum/templates/heat-kubernetes
Hongbin Lu 63101497fc Put kube_master into a resource group
With this patch, k8s template support more than one master nodes.
The number of master nodes can be specified through Heat parameter.

For fault tolerance, the cluster tolerants failure of no more than
half of the size. For example, a cluster with 3 master node tolerant
failure of 1 master node. Below is the table:

SIZE TOLERANCE
1    0
3    1
4    1
5    2
6    2
7    3
8    3
9    4

Change-Id: Ic28c13bdcadb39949f9c50be45e09f7627c5d627
Partially-Implements: blueprint make-master-ha
2015-07-29 13:53:43 -04:00
..
elements Update magnum document to use openstack as namespace 2015-03-28 20:14:42 +08:00
fragments Bootstrap etcd cluster by discovery_url 2015-07-29 13:53:30 -04:00
COPYING Move folder heat-kubernetes to magnum/templates 2015-02-28 22:03:27 +08:00
README.md Backport multiple template fixes 2015-06-15 10:01:14 +00:00
kubecluster-coreos.yaml Merge "Modify k8s template to support removal policy" 2015-07-08 22:50:46 +00:00
kubecluster-fedora-ironic.yaml Make ironic templates working 2015-07-08 23:51:20 +00:00
kubecluster.yaml Put kube_master into a resource group 2015-07-29 13:53:43 -04:00
kubemaster.yaml Put kube_master into a resource group 2015-07-29 13:53:43 -04:00
kubeminion.yaml Register kube minions through load balancers 2015-07-27 14:14:02 -04:00
kubenode-coreos.yaml Merge "Modify k8s template to support removal policy" 2015-07-08 22:50:46 +00:00
kubenode-fedora-ironic.yaml Make ironic templates working 2015-07-08 23:51:20 +00:00

README.md

A Kubernetes cluster with Heat

These Heat templates will deploy a Kubernetes cluster that supports automatic scaling based on CPU load.

The cluster uses Flannel to provide an overlay network connecting pods deployed on different minions.

Requirements

OpenStack

These templates will work with the Kilo version of Heat. They may work with Juno as well as soon as #1402894 is resolved.

Guest image

These templates will work with either CentOS Atomic Host or Fedora 21 Atomic.

You can enable the VXLAN backend for flannel by setting the "flannel_use_vxlan" parameter to "true", but I have run into kernel crashes using that backend with CentOS 7. It seems to work fine with Fedora 21.

Creating the stack

Creating an environment file local.yaml with parameters specific to your environment:

parameters:
  ssh_key_name: lars
  external_network: public
  dns_nameserver: 192.168.200.1
  server_image: centos-7-atomic-20150101

And then create the stack, referencing that environment file:

heat stack-create -f kubecluster.yaml -e local.yaml my-kube-cluster

You must provide values for:

  • ssh_key_name
  • server_image

Interacting with Kubernetes

You can get the ip address of the Kubernetes master using the heat output-show command:

$ heat output-show my-kube-cluster kube_master
"192.168.200.86"

You can ssh into that server as the minion user:

$ ssh minion@192.168.200.86

And once logged in you can run kubectl, etc:

$ kubectl get minions
NAME                LABELS       STATUS
10.0.0.4            <none>       Ready

You can log into your minions using the minion user as well. You can get a list of minion addresses by running:

$ heat output-show my-kube-cluster kube_minions_external
[
  "192.168.200.182"
]

Testing

The templates install an example Pod and Service description into /etc/kubernetes/examples. You can deploy this with the following commands:

$ kubectl create -f /etc/kubernetes/examples/web.service
$ kubectl create -f /etc/kubernetes/examples/web.pod

This will deploy a minimal webserver and a service. You can use kubectl get pods and kubectl get services to see the results of these commands.

License

Copyright 2014 Lars Kellogg-Stedman lars@redhat.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use these files except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Contributing

Please submit bugs and pull requests via the GitHub repository at https://github.com/larsks/heat-kubernetes/.

When submitting pull requests:

  • Please ensure that each pull request contains a single commit and contains only related changes. Put unrelated changes in multiple pull requests.

  • Please avoid conflating new features with stylistic/formatting/cleanup changes.