magnum/magnum/drivers/k8s_fedora_atomic_v1/templates
OTSUKA, Yuanying 08531c1702 Fix ironic template
This is workaround fix to support baremetal.
Following items are remained to support.
* Documents
* Functional test

To test this template, there are some requirements and problem as below.

Requirements:
* `ephemeral_disk` on ironic baremetal flavor
  `ephemeral_disk` is used for docker storage instead of cinder volume.

* `fixed_subnet` must be setup with dns_nameservers like following.
    * `neutron subnet-update private-subnet --dns-nameserver 8.8.8.8`

* `fixed_subnet` must be IP version 4.
  if you use devstack, please add following configuration.
    * `IP_VERSION=4`

* Fedora 23 image including kubernetes, etcd, flannel.

Problem:
Ironic stores `instance_info` about nova instance.
`instance_info` contains config_drive data, but this data can be
too large to store ironic.nodes table.
Magnum uses large config drive data to setup k8s.
It means, we can not start ironic instance by Magnum.

Workaround fix is changing column type of ironic.nodes.instance_info.
Following sql will help you.

  `alter table ironic.nodes modify instance_info LONGTEXT;`

Partial-Implements: blueprint magnum-baremetal-full-support
Change-Id: Ica87610b9114bff4277b492de8fe528fe2860108
Closes-Bug: #1454895
Closes-Bug: #1472938
Co-Authored-By: Spyros Trigazis <strigazi@gmail.com>
2016-08-09 11:27:55 +02:00
..
elements Bay driver: k8s Fedora Atomic 2016-07-11 10:50:06 -05:00
fragments Fix ironic template 2016-08-09 11:27:55 +02:00
COPYING Bay driver: k8s Fedora Atomic 2016-07-11 10:50:06 -05:00
README.md Remove kube-user.yaml 2016-08-05 16:33:34 -05:00
kubecluster-fedora-ironic.yaml Fix ironic template 2016-08-09 11:27:55 +02:00
kubecluster.yaml Merge "Correction in heat template description" 2016-07-27 07:30:35 +00:00
kubemaster-fedora-ironic.yaml Fix ironic template 2016-08-09 11:27:55 +02:00
kubemaster.yaml Remove kube-user.yaml 2016-08-05 16:33:34 -05:00
kubeminion-fedora-ironic.yaml Fix ironic template 2016-08-09 11:27:55 +02:00
kubeminion.yaml Remove kube-user.yaml 2016-08-05 16:33:34 -05: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 docker registry v2 by setting the "registry_enabled" parameter to "true".

Creating the stack

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

parameters:
  ssh_key_name: testkey
  external_network: public
  dns_nameserver: 192.168.200.1
  server_image: centos-7-atomic-20150101
  registry_enabled: true
  registry_username: username
  registry_password: password
  registry_domain: domain
  registry_trust_id: trust_id
  registry_auth_url: auth_url
  registry_region: region
  registry_container: container

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

If you enable docker registry v2, you must provide values for:

  • registry_username
  • registry_password
  • registry_domain
  • registry_trust_id
  • registry_auth_url
  • registry_region
  • `registry_container

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_masters
"192.168.200.86"

You can ssh into that server as the fedora user:

$ ssh fedora@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 fedora user as well. You can get a list of minion addresses by running:

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

You can get the docker registry v2 address: $ heat output-show my-kube-cluster registry_address localhost:5000

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.